import junit.framework.TestCase;

/**
 * A JUnit test case class for SBact
 */
public class SBactTester extends TestCase {
    
    public void testConstructorAndGetter() {
        SBact s= new SBact("green");
        assertEquals("green", s.getColor());
        
        /* although Organism's constructor has been tested,
         * here we are making no assumption that SBact()
         * relies on Organism's constructor. */
        assertEquals(0, s.getLevel());
        assertEquals(0, s.getMercury());
        assertEquals(true, s.isAlive());
        assertEquals(null, s.wasEatenBy());
        assertEquals(0, s.getNumVictims());
        assertEquals(null, s.getNickname());
        
        SBact spurp= new SBact("purple");
        assertEquals("purple", spurp.getColor());
        
    }
        
    public void testEat() {
        SBact bact= new SBact("purple");
        Organism victim= new Organism(5, 4, "louie");

        bact.eat(victim);
        
        // should be no change in bact
        assertEquals(0, bact.getLevel());
        assertEquals(0, bact.getMercury());
        assertEquals(true, bact.isAlive());
        assertEquals(null, bact.wasEatenBy());
        assertEquals(0, bact.getNumVictims());
        assertEquals(null, bact.getNickname());
        
       // should be no change in victim
        assertEquals(5, victim.getLevel());
        assertEquals(4, victim.getMercury());
        assertEquals(true, victim.isAlive());
        assertEquals(null, victim.wasEatenBy());
        assertEquals(0, victim.getNumVictims());
        assertEquals("louie", victim.getNickname());      
    }
    
    // Note: since sulfur bacteria are restricted forms of organisms,
    // fewer test cases are needed than for full-blown Organisms.
    public void testToString() {
        SBact bact= new SBact("purple");
        
        assertEquals("purple sulfur bacterium, level 0, mercury content 0, 0 victims.", 
                     bact.toString());
        
        // test what happens when it is dead
        Organism shark= new Organism(100, 5, "jaws");
        shark.eat(bact);
        assertEquals("purple sulfur bacterium, level 0, mercury content 0, 0 victims, eaten by jaws.", 
                     bact.toString());
        
        
    }
    
    
}
