class BowlingTest(unittest.TestCase): def setUp(self): self.game = Game() def test_all_gutterballs(self): self.helper_test_roll(20, 0) self.assertEqual(0, self.game.score()) def helper_test_roll(self, rolls, pins): for roll in range(rolls): self.game.roll(pins) def test_perfect_game(self): self.helper_test_roll(12, 10) self.assertEqual(300, self.game.score())
class BowlingTest(unittest.TestCase): def rollMany(self, n, pins): for i in range(n): self.g.roll(pins) def rollSpare(self): self.g.roll(5) self.g.roll(5) def rollStrike(self): self.g.roll(10) def setUp(self): self.g = Game() def test_gutterGame(self): self.rollMany(20,0) self.assertEqual(0, self.g.score()) def test_allOnes(self): self.rollMany(20,1) self.assertEqual(20, self.g.score()) def test_oneSpare(self): self.rollSpare() self.g.roll(3) self.rollMany(17, 0) self.assertEqual(16, self.g.score()) def test_oneStrike(self): self.rollStrike() self.g.roll(3) self.g.roll(4) self.rollMany(17, 0) self.assertEqual(24, self.g.score()) def test_perfectGame(self): self.rollMany(12, 10) self.assertEqual(300, self.g.score())
class PythonBowlingGame(unittest.TestCase): # initialise game in setup, exit in tear town def setUp(self): self.game = Game(1) def test_gutter_game(self): self.roll_many(20, 0) self.assertEqual(0, self.game.score()[0]) def test_all_ones(self): self.roll_many(20, 1) self.assertEqual(20, self.game.score()[0]) def test_one_spare(self): self.game.roll(5) self.game.roll(5) self.game.roll(3) self.roll_many(17,0) self.assertEqual(16, self.game.score()[0]) def test_one_strike(self): self.game.roll(10) self.game.roll(3) self.game.roll(4) self.roll_many(16, 0) self.assertEqual(24, self.game.score()[0]) def test_perfect_game(self): self.roll_many(12,10) self.assertEqual(300, self.game.score()[0]) # may also be worth testing that the maximum number of rolls on last turn is 3 def roll_many(self, n, pins): for i in range(n): self.game.roll(pins)
class BowlingTest(unittest.TestCase): def test_gutter_game(self): self.__setup() self.__roll_many(n=20, pins=0) self.assertEqual(self.g.score(), 0) def test_all_ones(self): self.__setup() self.__roll_many(n=20, pins=1) self.assertEqual(self.g.score(), 20) def test_one_spare(self): self.__setup() self.__roll_spare() self.g.roll(3) self.__roll_many(n=17, pins=0) self.assertEqual(self.g.score(), 16) def test_one_strike(self): self.__setup() self.__roll_strike() self.g.roll(3) self.g.roll(4) self.__roll_many(n=16, pins=0) self.assertEqual(self.g.score(), 24) def test_perfect_game(self): self.__setup() self.__roll_many(n=12, pins=10) self.assertEqual(self.g.score(), 300) def __setup(self): self.g = Game() def __roll_many(self, n, pins): for i in range(n): self.g.roll(pins) def __roll_spare(self): self.g.roll(5) self.g.roll(5) def __roll_strike(self): self.g.roll(10)
class BowlingGameTest(unittest.TestCase): def setUp(self): self.g = Game() def testGutterGame(self): self.__rollMany(0, 0) def testAllOnes(self): self.__rollMany(1, 20) def testAddFrame(self): self.g.add_frame(Frame()) self.assertEquals(1, len(self.g.frames)) def testBuildFramesWhileRolling(self): self.g.roll(10) self.assertEqual([[10]], self.g.frames_to_list()) self.g.roll(2) self.assertEqual([[10], [2]], self.g.frames_to_list()) self.g.roll(4) self.assertEqual([[10], [2, 4]], self.g.frames_to_list()) self.g.roll(10) self.assertEqual([[10], [2, 4], [10]], self.g.frames_to_list()) def testSpare(self): self.g.roll(4) self.g.roll(6) self.g.roll(4) self.assertEqual(14 + 4, self.g.get_score()) def testStrike(self): self.g.roll(10) self.g.roll(2) self.g.roll(4) self.assertEqual(10 + 6 + 6, self.g.get_score()) def testShouldNotAddMoreThenTenFrames(self): for i in range(10): self.g.add_frame(Frame()) self.assertFalse(self.g.add_frame(Frame())) self.assertEqual(10, len(self.g.frames)) def testPerfectGame(self): for i in range(12): self.g.roll(10) self.assertEqual(300, self.g.get_score()) def __rollMany(self, pins, expected_score): for i in range(20): self.g.roll(pins) self.assertEqual(expected_score, self.g.get_score())
class GameTestCase(TestCase): def setUp(self): super(GameTestCase, self).setUp() self.game = Game() def tearDown(self): super(GameTestCase, self).tearDown() def testAllGutter(self): self.rollMany(20, 0) self.assertEqual(0, self.game.score()) def testAllOne(self): self.rollMany(20, 1) self.assertEqual(20, self.game.score()) def testOneSpare(self): self.rollSpare() self.game.roll(3) self.rollMany(17, 0) self.assertEqual(16, self.game.score()) def testAllStrikeButLastFrame(self): self.rollMany(9, 10) self.rollMany(2, 0) self.assertEquals(240, self.game.score()) def testAllStrikeButLastThrow(self): self.rollMany(11, 10) self.game.roll(9) self.assertEquals(299, self.game.score()) def testAllStrikeButFirstFrameIsSpare(self): self.rollSpare() self.rollMany(11, 10) self.assertEquals(290, self.game.score()) def testAllStrikeButFirstFrameIsNotSpare(self): self.game.roll(5) self.game.roll(4) self.rollMany(11, 10) self.assertEquals(279, self.game.score()) def testTwoSpares(self): self.rollSpare() self.rollSpare() self.game.roll(3) self.game.roll(3) self.rollMany(14, 0) self.assertEqual(15 + 13 + 6, self.game.score()) def testOneStrike(self): self.rollStrike() self.game.roll(3) self.game.roll(4) self.rollMany(16, 0) self.assertEqual(24, self.game.score()) def testPerfectGame(self): self.rollMany(12, 10) self.assertEqual(300, self.game.score()) def rollStrike(self): self.game.roll(10) def rollSpare(self): self.game.roll(5) self.game.roll(5) #spare def rollMany(self, n, pins): map(lambda x: self.game.roll(pins=pins), range(0, n))
class BowlingGameTest(unittest.TestCase): def setUp(self): self.g = Game() def testGutterGame(self): self.__rollMany(0,0) def testAllOnes(self): self.__rollMany(1,20) def testAddFrame(self): self.g.add_frame(Frame()) self.assertEquals(1, len(self.g.frames)) def testBuildFramesWhileRolling(self): self.g.roll(10) self.assertEqual([[10]], self.g.frames_to_list()) self.g.roll(2) self.assertEqual([[10], [2]], self.g.frames_to_list()) self.g.roll(4) self.assertEqual([[10], [2,4]], self.g.frames_to_list()) self.g.roll(10) self.assertEqual([[10], [2,4], [10]], self.g.frames_to_list()) def testSpare(self): self.g.roll(4) self.g.roll(6) self.g.roll(4) self.assertEqual(14+4, self.g.get_score()) def testStrike(self): self.g.roll(10) self.g.roll(2) self.g.roll(4) self.assertEqual(10+6+6, self.g.get_score()) def testShouldNotAddMoreThenTenFrames(self): for i in range(10): self.g.add_frame(Frame()) self.assertFalse(self.g.add_frame(Frame())) self.assertEqual(10, len(self.g.frames)) def testPerfectGame(self): for i in range(12): self.g.roll(10) self.assertEqual(300, self.g.get_score()) def __rollMany(self, pins, expected_score): for i in range(20): self.g.roll(pins) self.assertEqual(expected_score, self.g.get_score())
class GameTest(unittest.TestCase): def setUp(self): self.g = Game() def roll_many(self, n, pins): for i in range(n): self.g.roll(pins) def spare(self): self.roll_many(2, 5) def test_gutter_game(self): self.roll_many(20, 0) self.assertEqual(0, self.g.score()) def test_all_ones(self): self.roll_many(20, 1) self.assertEqual(20, self.g.score()) def test_spare(self): self.spare() self.g.roll(3) self.roll_many(17, 0) self.assertEqual(16, self.g.score()) def test_no_spare(self): self.g.roll(2) self.g.roll(6) self.g.roll(4) self.roll_many(17, 0) self.assertEqual(12, self.g.score()) def test_strike(self): self.g.roll(10) self.g.roll(6) self.g.roll(3) self.assertEqual(28, self.g.score()) def test_perfect_game(self): self.roll_many(12, 10) self.assertEqual(300, self.g.score())
class TestBowling(unittest.TestCase): """ Unit tests for a bowling game. """ def setUp(self): self.game = Game() def test_number_of_pins_down(self): """ Tests the number of pins down in a roll. The number of pins down can't be less than zero and greater than ten. """ self.assertRaises(PinsDownError, self.game.roll, -1) self.assertRaises(PinsDownError, self.game.roll, 11) self.game.roll(5) self.assertEqual(self.game.score, 5) self.assertRaises(PinsDownError, self.game.roll, 6) self.game.roll(4) self.assertEqual(self.game.score, 9) def test_number_of_frames(self): """ Tests the number of frames and rolls in a game. A bowling game has ten frames, and each frame has two rolls. """ for i in range(10): self.game.roll(1) self.game.roll(1) self.assertEqual(len(self.game.frames[i]), 2) self.assertEqual(len(self.game.frames), 10) self.assertRaises(NumberOfFramesError, self.game.roll, 1) def test_frame_with_strike(self): """ Tests a frame with an strike. When the bowler gets an strike, the frame is over. """ self.game.roll(10) self.assertEqual(len(self.game.frames), 1) self.assertEqual(len(self.game.frames[0]), 1) def test_final_score_without_strikes_and_spares(self): """ Tests the final score of a game without any strike or spare. """ for i in range(10): self.game.roll(1) self.game.roll(1) self.assertEqual(self.game.score, 20) def test_spare_score(self): """ Tests the partial score of an spare. The score of an spare is ten plus the score of the following roll. """ self.game.roll(9) self.game.roll(1) self.game.roll(1) self.assertEqual(self.game.score, 12) def test_strike_score(self): """ Tests the partial score of an strike. The score of an strike is ten plus the score of the following two rolls. """ self.game.roll(10) self.game.roll(1) self.game.roll(1) self.assertEqual(self.game.score, 14) def test_final_score_with_all_spares(self): """ Tests the final score of a bowling game with all spares. """ for i in range(10): self.game.roll(1) self.game.roll(9) self.assertEqual(self.game.score, 109) # When the last frame is an spare, bowler gets an extra roll self.game.roll(1) self.assertEqual(self.game.score, 110) def test_final_score_with_all_strikes(self): """ Tests the final score of a bowling game with all strikes. """ for i in range(10): self.game.roll(10) self.assertEqual(self.game.score, 270) # When the last frame is an strike, bowler gets two extra rolls self.game.roll(10) self.game.roll(10) self.assertEqual(self.game.score, 300)