/**
 * Generated by Agitar build: Agitator Version 1.0.4.000225 (Build date: Mar 05, 2007) [1.0.4.000225]
 * JDK Version: 1.5.0_09
 *
 * Generated on Mar 20, 2007 6:40:32 PM
 * Time to generate: 00:12.756 seconds
 *
 */

package kevin.lawrence.bowling;

import com.agitar.lib.junit.AgitarTestCase;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

public class GameAgitarTest extends AgitarTestCase {
    static Class TARGET_CLASS = Game.class;
    
    public void testConstructor() throws Throwable {
        Game game = new Game();
        assertEquals("game.frames.size()", 10, ((Collection) getPrivateField(game, "frames")).size());
    }
    
    public void testBowl() throws Throwable {
        Game game = new Game();
        game.bowl(0);
        game.bowl(1);
        game.bowl(0);
        Integer index = new Integer(1);
        assertEquals("game.frames.get(1).balls[0]", 0, ((Integer[]) getPrivateField(((List) getPrivateField(game, "frames")).get(index.intValue()), "balls"))[0].intValue());
        assertFalse("game.frames.get(1).isStrike()", ((Frame) ((List) getPrivateField(game, "frames")).get(index.intValue())).isStrike());
    }
    
    public void testBowl1() throws Throwable {
        Game game = new Game();
        game.bowl(0);
        game.bowl(1);
        game.bowl(10);
        game.bowl(0);
        Integer index = new Integer(1);
        assertEquals("game.frames.get(1).balls[1]", 0, ((Integer[]) getPrivateField(((List) getPrivateField(game, "frames")).get(index.intValue()), "balls"))[1].intValue());
        assertTrue("game.frames.get(1).isStrike()", ((Frame) ((List) getPrivateField(game, "frames")).get(index.intValue())).isStrike());
    }
    
    public void testBowl2() throws Throwable {
        Game game = new Game();
        game.bowl(0);
        Integer index = new Integer(0);
        assertEquals("game.frames.get(0).balls[0]", 0, ((Integer[]) getPrivateField(((List) getPrivateField(game, "frames")).get(index.intValue()), "balls"))[0].intValue());
        assertFalse("game.frames.get(0).isStrike()", ((Frame) ((List) getPrivateField(game, "frames")).get(index.intValue())).isStrike());
    }
    
    public void testBowl3() throws Throwable {
        Game game = new Game();
        game.bowl(10);
        game.bowl(0);
        Integer index = new Integer(0);
        assertEquals("game.frames.get(0).balls[1]", 0, ((Integer[]) getPrivateField(((List) getPrivateField(game, "frames")).get(index.intValue()), "balls"))[1].intValue());
        assertTrue("game.frames.get(0).isStrike()", ((Frame) ((List) getPrivateField(game, "frames")).get(index.intValue())).isStrike());
    }
    
    public void testGetLastFrame() throws Throwable {
        Frame result = new Game().getLastFrame();
        assertEquals("result.getSecondBall()", "", result.getSecondBall());
    }
    
    public void testGetScore() throws Throwable {
        Game game = new Game();
        game.bowl(1);
        int result = game.getScore();
        assertEquals("result", 1, result);
    }
    
    public void testGetScore1() throws Throwable {
        int result = new Game().getScore();
        assertEquals("result", 0, result);
    }
    
    public void testIsGameOver() throws Throwable {
        boolean result = new Game().isGameOver();
        assertFalse("result", result);
    }
    
    public void testIterator() throws Throwable {
        Iterator result = new Game().iterator();
        assertTrue("result.hasNext()", result.hasNext());
    }
    
    public void testBowlThrowsIllegalArgumentException() throws Throwable {
        Game game = new Game();
        game.bowl(0);
        game.bowl(1);
        try {
            game.bowl(100);
            fail("Expected IllegalArgumentException to be thrown");
        } catch (IllegalArgumentException ex) {
            assertEquals("ex.getMessage()", "Invalid pin count - 100", ex.getMessage());
            assertThrownBy(Frame.class, ex);
            assertEquals("game.frames.size()", 10, ((Collection) getPrivateField(game, "frames")).size());
        }
    }
    
    public void testBowlThrowsIllegalArgumentException1() throws Throwable {
        Game game = new Game();
        try {
            game.bowl(100);
            fail("Expected IllegalArgumentException to be thrown");
        } catch (IllegalArgumentException ex) {
            assertEquals("ex.getMessage()", "Invalid pin count - 100", ex.getMessage());
            assertThrownBy(Frame.class, ex);
            assertEquals("game.frames.size()", 10, ((Collection) getPrivateField(game, "frames")).size());
        }
    }
}

