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())
Beispiel #2
0
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())
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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())
Beispiel #6
0
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))
Beispiel #7
0
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())
Beispiel #9
0
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)