/**
 * 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 19, 2007 12:09:23 PM
 * Time to generate: 00:09.087 seconds
 *
 */

package kevin.lawrence.bowling;

import com.agitar.lib.junit.AgitarTestCase;

public class FrameAgitarTest extends AgitarTestCase {
    static Class TARGET_CLASS = Frame.class;
    
    public void testConstructor() throws Throwable {
        Frame frame = new Frame(null);
        Frame frame2 = new Frame(frame);
        assertSame("frame2.previousFrame", frame, getPrivateField(frame2, "previousFrame"));
    }
    
    public void testAddBall() throws Throwable {
        Frame frame = new Frame(null);
        frame.addBall(9);
        frame.addBall(1);
        assertFalse("frame.needsMoreBalls()", frame.needsMoreBalls());
    }
    
    public void testAddBall1() throws Throwable {
        Frame frame = new Frame(null);
        frame.addBall(0);
        frame.addBall(10);
        assertFalse("frame.needsMoreBalls()", frame.needsMoreBalls());
    }
    
    public void testAddBall2() throws Throwable {
        Frame frame = new Frame(null);
        frame.addBall(0);
        assertEquals("frame.firstBall", 0, ((Number) getPrivateField(frame, "firstBall")).intValue());
    }
    
    public void testAddBall3() throws Throwable {
        Frame frame = new Frame(null);
        frame.addBall(0);
        frame.addBall(9);
        assertFalse("frame.needsMoreBalls()", frame.needsMoreBalls());
    }
    
    public void testGetCumulativeScore() throws Throwable {
        Frame previousFrame = new Frame(null);
        Frame frame = new Frame(previousFrame);
        previousFrame.addBall(1);
        int result = frame.getCumulativeScore();
        assertEquals("result", 1, result);
    }
    
    public void testGetCumulativeScore1() throws Throwable {
        Frame frame = new Frame(null);
        frame.addBall(0);
        frame.addBall(1);
        Frame frame2 = new Frame(frame);
        frame2.addBall(10);
        int result = frame2.getCumulativeScore();
        assertEquals("result", 11, result);
    }
    
    public void testGetCumulativeScore2() throws Throwable {
        Frame frame = new Frame(new Frame(null));
        frame.addBall(0);
        int result = frame.getCumulativeScore();
        assertEquals("result", 0, result);
    }
    
    public void testGetCumulativeScore3() throws Throwable {
        Frame frame = new Frame(null);
        frame.addBall(0);
        frame.addBall(0);
        int result = frame.getCumulativeScore();
        assertEquals("result", 0, result);
    }
    
    public void testGetCumulativeScore4() throws Throwable {
        Frame previousFrame = new Frame(null);
        previousFrame.addBall(0);
        Frame frame = new Frame(previousFrame);
        previousFrame.addBall(1);
        frame.addBall(2);
        frame.addBall(1);
        int result = frame.getCumulativeScore();
        assertEquals("result", 4, result);
    }
    
    public void testGetCumulativeScore5() throws Throwable {
        Frame frame = new Frame(new Frame(null));
        frame.addBall(0);
        frame.addBall(0);
        int result = frame.getCumulativeScore();
        assertEquals("result", 0, result);
    }
    
    public void testGetCumulativeScore6() throws Throwable {
        Frame frame = new Frame(null);
        frame.addBall(1);
        int result = frame.getCumulativeScore();
        assertEquals("result", 1, result);
    }
    
    public void testGetCumulativeScore7() throws Throwable {
        Frame frame = new Frame(null);
        frame.addBall(0);
        Frame frame2 = new Frame(frame);
        frame2.addBall(1);
        int result = frame2.getCumulativeScore();
        assertEquals("result", 1, result);
    }
    
    public void testGetCumulativeScore8() throws Throwable {
        int result = new Frame(null).getCumulativeScore();
        assertEquals("result", 0, result);
    }
    
    public void testGetCumulativeScore9() throws Throwable {
        int result = new Frame(new Frame(null)).getCumulativeScore();
        assertEquals("result", 0, result);
    }
    
    public void testGetFirstBall() throws Throwable {
        Frame frame = new Frame(null);
        frame.addBall(0);
        String result = frame.getFirstBall();
        assertEquals("result", "-", result);
    }
    
    public void testGetFirstBall1() throws Throwable {
        Frame frame = new Frame(null);
        frame.addBall(1);
        String result = frame.getFirstBall();
        assertEquals("result", "1", result);
    }
    
    public void testGetFirstBall2() throws Throwable {
        String result = new Frame(null).getFirstBall();
        assertEquals("result", "", result);
    }
    
    public void testGetScore() throws Throwable {
        Frame frame = new Frame(null);
        frame.addBall(0);
        frame.addBall(1);
        String result = frame.getScore();
        assertEquals("result", "1", result);
    }
    
    public void testGetScore1() throws Throwable {
        String result = new Frame(null).getScore();
        assertEquals("result", "", result);
    }
    
    public void testGetSecondBall() throws Throwable {
        Frame frame = new Frame(null);
        frame.addBall(0);
        frame.addBall(0);
        String result = frame.getSecondBall();
        assertEquals("result", "-", result);
    }
    
    public void testGetSecondBall1() throws Throwable {
        Frame frame = new Frame(null);
        frame.addBall(0);
        frame.addBall(1);
        String result = frame.getSecondBall();
        assertEquals("result", "1", result);
    }
    
    public void testGetSecondBall2() throws Throwable {
        String result = new Frame(null).getSecondBall();
        assertEquals("result", "", result);
    }
    
    public void testNeedsMoreBalls() throws Throwable {
        Frame frame = new Frame(null);
        frame.addBall(0);
        frame.addBall(1);
        boolean result = frame.needsMoreBalls();
        assertFalse("result", result);
    }
    
    public void testNeedsMoreBalls1() throws Throwable {
        boolean result = new Frame(null).needsMoreBalls();
        assertTrue("result", result);
    }
    
    public void testAddBallThrowsIllegalArgumentException() throws Throwable {
        Frame frame = new Frame(null);
        frame.addBall(1);
        try {
            frame.addBall(10);
            fail("Expected IllegalArgumentException to be thrown");
        } catch (IllegalArgumentException ex) {
            assertEquals("ex.getMessage()", "Total pin count invalid", ex.getMessage());
            assertThrownBy(Frame.class, ex);
            assertEquals("frame.firstBall", 1, ((Number) getPrivateField(frame, "firstBall")).intValue());
            assertTrue("frame.needsMoreBalls()", frame.needsMoreBalls());
        }
    }
    
    public void testAddBallThrowsIllegalArgumentException1() throws Throwable {
        Frame frame = new Frame(null);
        try {
            frame.addBall(11);
            fail("Expected IllegalArgumentException to be thrown");
        } catch (IllegalArgumentException ex) {
            assertEquals("ex.getMessage()", "Invalid pin count - 11", ex.getMessage());
            assertThrownBy(Frame.class, ex);
            assertNull("frame.firstBall", getPrivateField(frame, "firstBall"));
            assertTrue("frame.needsMoreBalls()", frame.needsMoreBalls());
        }
    }
    
    public void testAddBallThrowsIllegalArgumentException2() throws Throwable {
        Frame frame = new Frame(null);
        try {
            frame.addBall(-1);
            fail("Expected IllegalArgumentException to be thrown");
        } catch (IllegalArgumentException ex) {
            assertEquals("ex.getMessage()", "Invalid pin count - -1", ex.getMessage());
            assertThrownBy(Frame.class, ex);
            assertNull("frame.firstBall", getPrivateField(frame, "firstBall"));
            assertTrue("frame.needsMoreBalls()", frame.needsMoreBalls());
        }
    }
}

