package kevin.lawrence.bowling; import static org.hamcrest.MatcherAssert.*; import static org.hamcrest.Matchers.*; import java.util.Iterator; import org.junit.Before; import org.junit.Test; import bowling.acceptance.SingleGameScoring; public class SingleGameScoringTest extends SingleGameScoring { private Game game; @Before public void setUp() { game = new Game(); } @Test public void hookUpAdaptorMethods() { deliverBall(0); assertThat(gameOver(), is(false)); assertThat(numberOfFrames(), is(10)); assertThat(firstBallInFrame(1), is("-")); assertThat(secondBallInFrame(1), is("")); } @Override protected void deliverBall(int pins) { game.bowl(pins); } @Override protected boolean gameOver() { return game.isGameOver(); } @Override protected int numberOfFrames() { return Game.FRAMES_PER_GAME; } @Override protected String firstBallInFrame(int frameIndex) { return getFrame(frameIndex).getFirstBall(); } @Override protected String secondBallInFrame(int frameIndex) { return getFrame(frameIndex).getSecondBall(); } @Override protected String thirdBallInFrame(int frameIndex) { return getFrame(frameIndex).getThirdBall(); } @Override protected String scoreForFrame(int frameIndex) { return getFrame(frameIndex).getScore(); } @Override protected String scoreForGame() { return "" + game.getScore(); } private Frame getFrame(int frameIndex) { int counter = 1; for (Frame frame : game) { if(counter++ == frameIndex){ return frame; } } throw new IllegalArgumentException("Bad frame : " + frameIndex); } }