import junit.framework.TestCase;


/**
 * An instance houses testcases for class Worker.
 */
public class WorkerTester extends TestCase {
         
    /**
     * Test getters and constructor
     */
    public void testGettersAndConstructor() {
        
        // Test if null boss if OK
        Worker w1= new Worker("Obama", 123456789, null);
        assertEquals("Obama", w1.getName());
        assertEquals(6789,w1.getSSN4());
        assertEquals(null, w1.getBoss());
        
        // Test if non-null boss is OK
        Worker w2= new Worker("Biden", 2, w1);
        assertEquals("Biden", w2.getName());
        assertEquals(2, w2.getSSN4());
        assertEquals(w1, w2.getBoss());
        
        // Test if null last name is OK
        Worker justOneName= new Worker(null, 13, null);
        assertEquals(null, justOneName.getName());
        
    }
        
    /**
     * Test toString method
     */
    public void testToString() {
        
        Worker w1= new Worker("Obama", 123456789, null);
        assertEquals("Obama, XXX-XX-6789, Boss: null", w1.toString());
        
        // test non-null boss case, leading zeros stripped in soc. sec. num
        Worker w2= new Worker("Biden", 2, w1);
        assertEquals("Biden, XXX-XX-2, Boss: Obama, XXX-XX-6789, Boss: null", w2.toString());
        
        // test null last name
        Worker justOneName= new Worker(null, 13, null);
        assertEquals("null, XXX-XX-13, Boss: null",justOneName.toString());
    }
    
    /**
     * Test isBoss()
     */
    public void testisBoss() {

        Worker w1= new Worker("Obama", 123456789, null);
        Worker w2= new Worker("Biden", 2, w1);
        
        assertEquals(true, Worker.isBoss(w1,w2));
        assertEquals(false, Worker.isBoss(w1,w1));
        assertEquals(false, Worker.isBoss(w2,w1));
        assertEquals(false, Worker.isBoss(w2,w2));
        
    }
}

