class BowlingTest(unittest.TestCase): def setUp(self): self.b = Bowling() def tearDown(self): del self.b def test_one_throw_11_pins(self): self.assertRaises(ValueError, self.b.throw, 11) def test_two_throw_13_pins_in_total(self): self.b.throw(3) self.assertRaises(ValueError, self.b.throw, 10) def test_one_throw(self): self.b.throw(3) self.assertEqual(self.b.num_pins_remained, 7) self.assertFalse(self.b.new_frame) self.assertEqual(self.b.current_frame, 0) self.assertEqual(self.b.get_score(), 3) def test_two_throws(self): self.b.throw(3) self.b.throw(4) self.assertEqual(self.b.num_pins_remained, 10) self.assertTrue(self.b.new_frame) self.assertEqual(self.b.current_frame, 1) self.assertEqual(self.b.get_score(), 7) self.assertEqual(self.b.score[0], 7) def test_three_throw(self): self.b.throw(3) self.b.throw(4) self.b.throw(7) self.assertEqual(self.b.num_pins_remained, 3) self.assertFalse(self.b.new_frame) self.assertEqual(self.b.current_frame, 1) self.assertEqual(self.b.get_score(), 14) self.assertEqual(self.b.score[0], 7) self.assertEqual(self.b.score[1], 7) def test_spare_counts_next_frame_score(self): self.b.throw(3) self.b.throw(7) self.b.throw(7) self.b.throw(2) self.assertEqual(self.b.num_pins_remained, 10) self.assertTrue(self.b.new_frame) self.assertEqual(self.b.current_frame, 2) self.assertEqual(self.b.get_score(), 28) self.assertEqual(self.b.score[0], 19) self.assertEqual(self.b.score[1], 9) def test_spare_counts_next_frame_score_advance_to_next_frame(self): self.b.throw(3) self.b.throw(7) self.b.throw(7) self.b.throw(2) self.assertEqual(self.b.num_pins_remained, 10) self.assertTrue(self.b.new_frame) self.assertEqual(self.b.current_frame, 2) self.assertEqual(self.b.score[0], 19) self.assertEqual(self.b.score[1], 9) self.assertEqual(self.b.get_score(), 28) def test_strike_moves_to_next_frame(self): self.b.throw(10) self.assertEqual(self.b.num_pins_remained, 10) self.assertTrue(self.b.new_frame) self.assertEqual(self.b.current_frame, 1) self.assertEqual(self.b.get_score(), 10) self.assertEqual(self.b.score[0], 10) def test_strike_counts_next_frame_scores(self): self.b.throw(10) self.assertTrue(self.b.strike[1]) self.assertFalse(self.b.strike[0]) self.b.throw(7) self.b.throw(3) self.assertFalse(self.b.strike[1]) self.assertTrue(self.b.strike[0]) self.b.throw(7) self.b.throw(3) self.assertFalse(self.b.strike[1]) self.assertFalse(self.b.strike[0]) self.assertEqual(self.b.num_pins_remained, 10) self.assertTrue(self.b.new_frame) self.assertEqual(self.b.current_frame, 3) self.assertEqual(self.b.score[0], 30) self.assertEqual(self.b.score[1], 20) self.assertEqual(self.b.score[2], 10) self.assertEqual(self.b.get_score(), 60) def test_spare_on_last_frame(self): self.b.throw(10) self.b.throw(10) self.b.throw(10) self.b.throw(10) self.b.throw(10) self.b.throw(10) self.b.throw(10) self.b.throw(10) self.b.throw(10) self.b.throw(0) self.b.throw(10) self.assertRaises(ValueError, self.b.throw, 3) self.assertEqual(self.b.get_score(), 270) def test_strike_on_last_frames_and_throw_11th_frame(self): self.b.throw(10) self.b.throw(10) self.b.throw(10) self.b.throw(10) self.b.throw(10) self.b.throw(10) self.b.throw(10) self.b.throw(10) self.b.throw(10) self.b.throw(10) self.assertRaises(ValueError, self.b.throw, 3) self.assertEqual(self.b.get_score(), 270)
class BowlingTest(unittest.TestCase): def setUp(self): self.bowling = Bowling() def tearDown(self): del self.bowling def testOneThrow(self): self.bowling.throw(3) self.assertEqual(self.bowling.score[0], 3) self.assertFalse(self.bowling.first_throw) self.assertEqual(self.bowling.frame, 0) def testTwoThrows(self): self.bowling.throw(3) self.bowling.throw(5) self.assertEqual(self.bowling.score[0], 8) self.assertTrue(self.bowling.first_throw) self.assertEqual(self.bowling.frame, 1) def testThreeThrows(self): self.bowling.throw(3) self.bowling.throw(5) self.bowling.throw(7) self.assertEqual(self.bowling.score[0], 8) self.assertEqual(self.bowling.score[1], 7) self.assertFalse(self.bowling.first_throw) self.assertEqual(self.bowling.frame, 1) def testSpareCountsNextFrameScore(self): self.bowling.throw(4) self.bowling.throw(6) self.bowling.throw(8) self.bowling.throw(1) self.assertEqual(self.bowling.score[0], 19) self.assertEqual(self.bowling.score[1], 9) self.assertTrue(self.bowling.first_throw) self.assertEqual(self.bowling.frame, 2) def testStrikeMovesToNextFrame(self): self.assertTrue(self.bowling.first_throw) self.bowling.throw(10) self.assertTrue(self.bowling.first_throw) self.bowling.throw(2) self.assertFalse(self.bowling.first_throw) def testStrikeCountsNextFrameScore(self): self.bowling.throw(10) self.bowling.throw(2) self.bowling.throw(3) self.bowling.throw(4) self.bowling.throw(5) self.assertEqual(self.bowling.score[0], 24) self.assertEqual(self.bowling.score[1], 5) self.assertEqual(self.bowling.score[2], 9) def testSpareOn10thFrame(self): for x in range(0, 9): self.bowling.throw(2) self.bowling.throw(2) self.bowling.throw(4) self.assertEqual(self.bowling.score[9], 4) self.bowling.throw(6) self.assertEqual(self.bowling.score[9], 10) def testStrikeOn8thFrame(self): for x in range(0, 7): self.bowling.throw(2) self.bowling.throw(2) self.assertTrue(self.bowling.first_throw) self.bowling.throw(10) self.bowling.throw(2) self.bowling.throw(3) self.bowling.throw(4) self.bowling.throw(5) self.assertEqual(self.bowling.score[7], 24) def testStrikeOn9thFrame(self): for x in range(0, 8): self.bowling.throw(2) self.bowling.throw(2) self.bowling.throw(10) self.bowling.throw(2) self.bowling.throw(3) self.assertEqual(self.bowling.score[8], 15) self.assertEqual(self.bowling.score[9], 5) def testStrikeOn10thFrame(self): for x in range(0, 9): self.bowling.throw(2) self.bowling.throw(2) self.assertTrue(self.bowling.first_throw) self.bowling.throw(10) self.assertEqual(self.bowling.score[9], 10) def testThrowOn11thFrame(self): for x in range(0, 10): self.bowling.throw(2) self.bowling.throw(2) self.assertTrue(self.bowling.first_throw) with self.assertRaises(ValueError): self.bowling.throw(4) def testThrowLessThanZero(self): with self.assertRaises(ValueError): self.bowling.throw(-1) def testThrowMoreThanTen(self): with self.assertRaises(ValueError): self.bowling.throw(11) def testPerfectGame(self): self.bowling.throw(10) self.bowling.throw(10) self.bowling.throw(10) self.bowling.throw(10) self.bowling.throw(10) self.bowling.throw(10) self.bowling.throw(10) self.bowling.throw(10) self.bowling.throw(10) self.bowling.throw(10) total = 0 for i in self.bowling.score: total += i self.assertEqual(total, 270) def testAllSpares(self): for x in range(0, 20): self.bowling.throw(5) total = 0 for i in self.bowling.score: total = total + i self.assertEqual(total, 190) def testFirstFrameStrike(self): self.bowling.throw(10) self.bowling.throw(10) self.bowling.throw(10) self.assertEqual(self.bowling.score[0], 30) def testFirstFrameSpare(self): self.bowling.throw(5) self.bowling.throw(5) self.bowling.throw(10) self.assertEqual(self.bowling.score[0], 20) def testSimple1(self): self.bowling.throw(3) self.bowling.throw(5) self.bowling.throw(10) self.bowling.throw(5) self.bowling.throw(5) self.bowling.throw(10) self.assertEqual(self.bowling.score[0], 8) self.assertEqual(self.bowling.score[1], 30) self.assertEqual(self.bowling.score[2], 20) self.assertEqual(self.bowling.score[3], "X") def testSimple2(self): self.bowling.throw(3) self.bowling.throw(5) self.bowling.throw(10) self.bowling.throw(5) self.bowling.throw(5) self.bowling.throw(3) self.bowling.throw(3) self.assertEqual(self.bowling.score[0], 8) self.assertEqual(self.bowling.score[1], 26) self.assertEqual(self.bowling.score[2], 16) self.assertEqual(self.bowling.score[3], 6) ''' def testRandomGames(self): n = 10 for i in range(0, 10): self.setUp() while(self.bowling.frame < 10): if self.bowling.first_throw: m = random.randint(7, 10) else: m = random.randint(0, 10 - n) self.bowling.throw(m) n = m ''' def testRandomGeneration1(self): self.bowling.throw(2) self.bowling.throw(8) self.bowling.throw(10) self.bowling.throw(1) self.bowling.throw(7) self.bowling.throw(2) self.bowling.throw(1) self.bowling.throw(10) self.bowling.throw(8) self.bowling.throw(0) self.bowling.throw(5) self.bowling.throw(2) self.bowling.throw(6) self.bowling.throw(2) self.bowling.throw(1) self.bowling.throw(0) self.bowling.throw(8) self.bowling.throw(0) self.assertEqual(self.bowling.score[0], 20) self.assertEqual(self.bowling.score[1], 21) self.assertEqual(self.bowling.score[2], 8) self.assertEqual(self.bowling.score[3], 3) self.assertEqual(self.bowling.score[4], 25) self.assertEqual(self.bowling.score[5], 8) self.assertEqual(self.bowling.score[6], 7) self.assertEqual(self.bowling.score[7], 8) self.assertEqual(self.bowling.score[8], 1) self.assertEqual(self.bowling.score[9], 8) def testRandomGeneration2(self): self.bowling.throw(1) self.bowling.throw(9) self.bowling.throw(9) self.bowling.throw(1) self.bowling.throw(0) self.bowling.throw(1) self.bowling.throw(8) self.bowling.throw(0) self.bowling.throw(3) self.bowling.throw(7) self.bowling.throw(5) self.bowling.throw(0) self.bowling.throw(10) self.bowling.throw(9) self.bowling.throw(1) self.bowling.throw(9) self.bowling.throw(1) self.bowling.throw(2) self.bowling.throw(1) self.assertEqual(self.bowling.score[0], 20) self.assertEqual(self.bowling.score[1], 11) self.assertEqual(self.bowling.score[2], 1) self.assertEqual(self.bowling.score[3], 8) self.assertEqual(self.bowling.score[4], 15) self.assertEqual(self.bowling.score[5], 5) self.assertEqual(self.bowling.score[6], 30) self.assertEqual(self.bowling.score[7], 20) self.assertEqual(self.bowling.score[8], 13) self.assertEqual(self.bowling.score[9], 3) def testRandomGeneration3(self): self.bowling.throw(8) self.bowling.throw(1) self.bowling.throw(10) self.bowling.throw(10) self.bowling.throw(9) self.bowling.throw(0) self.bowling.throw(9) self.bowling.throw(0) self.bowling.throw(10) self.bowling.throw(10) self.bowling.throw(10) self.bowling.throw(10) self.bowling.throw(0) self.bowling.throw(0) self.assertEqual(self.bowling.score[0], 9) self.assertEqual(self.bowling.score[1], 29) self.assertEqual(self.bowling.score[2], 28) self.assertEqual(self.bowling.score[3], 9) self.assertEqual(self.bowling.score[4], 9) self.assertEqual(self.bowling.score[5], 30) self.assertEqual(self.bowling.score[6], 30) self.assertEqual(self.bowling.score[7], 20) self.assertEqual(self.bowling.score[8], 10) self.assertEqual(self.bowling.score[9], 0)