Esempio n. 1
0
class TestBowlingGame:
    @pytest.fixture
    def game(self):
        self.the_game = BowlingGame()

    def test_should_score_zero_when_no_rolls(self, game):
        assert_that(self.the_game.get_score()).is_equal_to(0)

    def test_should_score_20_when_pin_down_20_times(self, game):
        self.roll(20, 1)
        assert_that(self.the_game.get_score()).is_equal_to(20)

    def test_should_score_0_when_no_pin_down_20_times(self, game):
        self.roll(20, 0)
        assert_that(self.the_game.get_score()).is_equal_to(0)

    def test_should_score_spare(self, game):
        self.roll(2, 5)
        self.roll(1, 4)
        self.roll(17, 0)
        assert_that(self.the_game.get_score()).is_equal_to(18)

    def test_should_score_strike(self, game):
        self.roll1([10, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
        assert_that(self.the_game.get_score()).is_equal_to(26)

    def roll(self, throws, pins):
        for i in range(0, throws):
            self.the_game.roll(pins)

    def roll1(self, list_of_pins):
        for pin in list_of_pins:
            self.the_game.roll(pin)
        pass
def test_BowlingGameDetectsSparesOnlyWhenNotInTheSameFrame():
    game = BowlingGame()
    game.roll(4)
    game.roll(5)
    game.roll(5)
    game.roll(4)
    assert game.totalScore() == 18
Esempio n. 3
0
class TestBowlingGame(unittest.TestCase):
    def setUp(self):
        self.game = BowlingGame()

    def testAllGuttersReturns0(self):
        self.roll_times(0, 20)
        self.assertEquals(0, self.game.score())

    def testAll1sReturns20(self):
        self.roll_times(1, 20)
        self.assertEquals(20, self.game.score())

    def testItHandlesSpares(self):
        self.roll_spare()
        self.game.roll(5)

        self.roll_times(0, 17)
        self.assertEquals(20, self.game.score())

    def testItHandlesStrikes(self):
        self.roll_strike()
        self.game.roll(5)
        self.game.roll(3)

        self.roll_times(0, 17)
        self.assertEquals(26, self.game.score())

    def testPerfectGameIs300(self):
        self.roll_times(10, 12)
        self.assertEquals(300, self.game.score())

    def testDutch200Is200(self):
        for frame in range(10):
            self.roll_strike()
            self.roll_spare()
        self.assertEquals(200, self.game.score())

    def testGutterUntilLastFrameTurkeyIs30(self):
        self.roll_times(0, 18)
        self.roll_strike()
        self.roll_strike()
        self.roll_strike()
        self.assertEquals(30, self.game.score())

    def roll_spare(self):
        self.game.roll(1)
        self.game.roll(9)

    def roll_strike(self):
        self.game.roll(10)

    def roll_times(self, pins_toppled, times):
        for _ in range(times):
            self.game.roll(pins_toppled)
def test_bowlingGameOnlyDecetsAStrikeWhenAppropriate():
    game = BowlingGame()
    game.roll(5)
    game.roll(5)
    game.roll(4)
    game.roll(4)
    game.roll(5)
    assert game.totalScore() == 27
class BowlingGameTest(unittest.TestCase):
    def setUp(self):
        self._game = BowlingGame()

    def rollMany(self, n, pincount):
        for i in range(n):
            self._game.roll(pincount)

# First test
    def testGutterGame(self):
            self.rollMany(20,0)
            assert self._game.getScore() == 0

# Second test
    def testAllOnes(self):
            self.rollMany(20,1)
            assert self._game.getScore() == 20

    def testRollSpare(self):
        self._game.roll(5)
        self._game.roll(5)
        self._game.roll(3)
        self.rollMany(17,0)
        assert self._game.getScore() == 16
Esempio n. 6
0
class BowlingGameTest(unittest.TestCase):
	def setUp(self):
		self.game = BowlingGame()

	def rollMany(self, pins, times):
		for i in xrange(0, times):
			self.game.roll(pins)

	def rollSpare(self):
		self.game.roll(5)
		self.game.roll(5)

	def rollStrike(self):
		self.game.roll(10)

	def test_worstGame(self):
		self.rollMany(0, 20)
		self.assertEqual(0, self.game.get_score())

	def test_onePin(self):
		self.rollMany(1, 20)
		self.assertEqual(20, self.game.get_score())

	def test_spare(self):
		self.rollSpare()
		self.game.roll(2)
		self.rollMany(0, 17)
		self.assertEqual(14, self.game.get_score())

	def test_strike(self):
		self.rollStrike()
		self.game.roll(3)
		self.game.roll(4)
		self.rollMany(0, 17)
		self.assertEqual(24, self.game.get_score())

	def test_double_strike(self):
		self.rollStrike()
		self.rollStrike()
		self.game.roll(4)
		self.game.roll(2)
		self.rollMany(0, 16)
		self.assertEqual(46, self.game.get_score())

	def test_perfect_game(self):
		self.rollMany(10, 12)
		self.assertEqual(300, self.game.get_score())
Esempio n. 7
0
class BowlingGameTests(TestCase):
    def setUp(self):
        self.game = BowlingGame()

    def test_all_gutter(self):

        for i in range(20):
            self.game.roll(0)

        self.assertEqual(0, self.game.score,
                         "All gutters should get final score 0")

    def test_all_ones(self):

        for i in range(20):
            self.game.roll(1)

        self.assertEqual(20, self.game.score,
                         "All ones should get 20 final score")

    def test_spare_then_3_pins(self):
        self.game.roll(9)
        self.game.roll(1)
        self.game.roll(3)

        for i in range(17):
            self.game.roll(0)

        self.assertEqual(16, self.game.score,
                         "Should be 16 - spare then 3 pins down")

    def test_strike_then_3_4_pins(self):
        self.game.roll(10)
        self.game.roll(3)
        self.game.roll(4)

        for i in range(17):
            self.game.roll(0)

        self.assertEqual(24, self.game.score,
                         "Should be 24 - strike then 3 and 4 pins down")

    def test_all_strikes(self):

        for i in range(12):
            self.game.roll(10)

        self.assertEqual(300, self.game.score,
                         "All ones should get 300 final score")
def test_BowlingGameSumsNewRollToTotal():
    game = BowlingGame()
    game.roll(2)
    game.roll(3)
    assert game.totalScore() == 5
def test_bowlingGameIdentifiesAStrike():
    game = BowlingGame()
    game.roll(10)
    game.roll(5)
    game.roll(4)
    assert game.totalScore() == 28
def test_BowlingGameAddsTheFirstRollToTheScore():
  for rollValue in range(0,9):
    game = BowlingGame()
    game.roll(rollValue)
    assert game.totalScore() == rollValue
def test_BowlingGameDoublesTheNextRollAfterASpare():
    game = BowlingGame()
    game.roll(5)
    game.roll(5)
    game.roll(6)
    assert game.totalScore() ==  22
class BowlingGameTest(unittest.TestCase):
    def setUp(self):
        self._game = BowlingGame()
    
    def rollMany(self, n, pincount):
        for i in range(n):
            self._game.roll(pincount)
    
    # first test    
    def testGutterGame(self):
            self.rollMany(20,0)
            assert self._game.getScore() == 0
            
    # second test
    def testAllOnes(self):
            self.rollMany(20,1)
            assert self._game.getScore() == 20
            
    def testRollSpare(self):
        self._game.roll(5)
        self._game.roll(5)
        self._game.roll(3)
        self.rollMany(17,0)
        assert self._game.getScore() == 16
        
    def testOneStrike(self):
        self.rollStrike()
        self._game.roll(3)
        self._game.roll(4)
        self.rollMany(16,0)
        assert self._game.getScore() == 24
        
    def testPerfectGame(self):
        self.rollMany(12,10)
        assert self._game.getScore() == 300
    
    def rollSpare(self):
        self._game.roll(5)
        self._game.roll(5)
        
    def rollStrike(self):
        self._game.roll(10)
Esempio n. 13
0
from random import randrange
from BowlingGame import BowlingGame

if __name__ == '__main__':
    bg = BowlingGame()

    # letting a random game play itself, just cause :)
    for frame in range(10):
        roll1 = randrange(0, 11)
        bg.roll(roll1)
        print 'Frame #{}: {}'.format(frame + 1, roll1)
        if roll1 == 10:  # strike
            if frame == 9:  # the 10th frame
                roll2 = randrange(0, 11)
                bg.roll(roll2)
                print 'Frame #{}: {}'.format(frame + 1, roll2)
                if roll2 == 10:  # another strike so roll 3 has 10 pins up
                    roll3 = randrange(0, 11)
                else:
                    roll3 = randrange(0, 10 - roll2)
                bg.roll(roll3)
                print 'Frame #{}: {}'.format(frame + 1, roll3)
            else:
                continue
        else:
            roll2 = randrange(0, 10 - roll1)
            print 'Frame #{}: {}'.format(frame + 1, roll2)
            bg.roll(roll2)
    print 'Final Score: {}'.format(bg.score())
    print 'Pins Toppled: {}'.format(bg.pins_toppled)