def test_bowling_example(self): b = Bowling() for i in range(10): b.hit(0) Value(b.score).should == 0 Value(b.score).should_not == 1 Value(b).get.score.should == 0
def test_knock_some_pins(): bowling = Bowling() _add_frames(bowling, 10, (6, 0)) expected_score = 60 assert bowling.calculate_score() == expected_score
def test_frame_with_perfect_strike(): bowling = Bowling() _add_frames(bowling, 9, (10, )) _add_frames(bowling, 1, (10, 10, 10)) expected_score = 300 assert bowling.calculate_score() == expected_score
def test_frame_with_spare(): bowling = Bowling() _add_frames(bowling, 9, (1, 9)) _add_frames(bowling, 1, (1, 9, 1)) expected_score = 110 assert bowling.calculate_score() == expected_score
def test_bowling_all_9s_should_be_90(self): b = Bowling() for i in range(10): b.hit(9) Value(b.score).should == 90 v = Value(2) v += 2 v.should == 4
def test_frame_with_strike(): bowling = Bowling() # 10 10 10 10 10 10 10 10 10 000 # 30 30 30 30 30 30 30 20 10 0 _add_frames(bowling, 9, (10, )) _add_frames(bowling, 1, (0, 0)) expected_score = 240 assert bowling.calculate_score() == expected_score
def test_data_extraction(): """ should read correct data """ assert_data = [[ '2', '3', '5', '4', '9', '1', '2', '5', '3', '2', '4', '2', '3', '3', '4', '6', '10', '3', '2' ], [ '10', '10', '10', '10', '10', '10', '10', '10', '10', '10', '10', '10', '10', '10', '10', '10', '10', '10', '10' ], ['2', '3', '5', '4', '10', '10'], ['10', '10', '10']] game = Bowling() result = game.read_csv(filename='../data/test.csv') assert game.score_data == assert_data
def tour_result(self): """Выводит результат в файл tournament_result.txt""" winner = {"name": '', "score": 0} with open(file=self.file_in, mode='r', encoding='utf8') as file_in: with open(file=self.file_out, mode='w', encoding='utf8') as file_out: for line in file_in: line_rep = line.replace('\t', ' ') line_pars = line_rep.split(' ') if line_pars[0] == '###': # Если начало тура file_out.write(f'{line}') winner['name'] = '' winner[ 'score'] = 0 # Обнуляет победителя тура, при начале нового elif line_pars[0] == 'winner': # Если конец тура self.tour_stat[winner['name']]['winners'] += 1 file_out.write(f"winner is {winner['name']}") elif line == '\n': # Если пустая строка continue else: # Если результа участника for x in line_pars[::-1]: if x == '': line_pars.remove(x) name = line_pars[0] result = line_pars[1] b = Bowling(result.replace('\n', '')) score = b.get_score() if score > winner['score']: winner['name'] = name winner['score'] = score line = line_rep.replace('\n', '') file_out.write(f'{line.ljust(32, " ")}{score}\n') if name in self.tour_stat: self.tour_stat[name]['games'] += 1 else: self.tour_stat[name] = {'games': 1, 'winners': 0} self.print_term()
def game(self): with open(self.file, 'r', encoding='utf-8') as file: for line in file: try: if line.strip(): if line.startswith('###'): self.table_of_score.clear() result = line yield result elif line.startswith('winner'): winner = max(self.table_of_score.values()) final_dict = { k: v for k, v in self.table_of_score.items() if v == winner } result = f'winner is {str(list(final_dict))[2:-2]}' yield result else: string1, string2 = line.split() result = Bowling(results=string2) result.play_the_game() self.table_of_score[string1] = result.score result = f'{string1} {string2} {result.score}' yield result else: continue except ValueError: result = f'ОШИБКА СТРОКИ: фреймов больше, чем надо>>> {line}' yield result except IndexError: result = f'ОШИБКА СТРОКИ: символ не может стоять вначале фрейма {line}' yield result except TypeError as Ty: result = f'ОШИБКА СТРОКИ:{Ty}' yield result except SyntaxError: result = f'ОШИБКА СТРОКИ: Недопустимые символы >>> {line} ' yield result
def run(): parser = argparse.ArgumentParser() parser.add_argument('result', type=str, help='Результат игры из 10 фреймов') args = parser.parse_args() game_score_result = Bowling(args.result) print( f'В результате счета игры: {args.result}, вы набрали {game_score_result.analyzing_result()} очков!' )
def test_spare_calculation(): """ should print correct result for the last data """ assert_data = { 1: (2, 3, ' ', 5), 2: (5, 4, ' ', 14), 3: (9, '/', ' ', 26), 4: (2, 5, ' ', 33), 5: (3, 2, ' ', 38), 6: (4, 2, ' ', 44), 7: (3, 3, ' ', 50), 8: (4, '/', ' ', 70), 9: ('X', ' ', ' ', 85), 10: (3, 2, ' ', 90) } assert_score = 90 game = Bowling() game.read_csv(filename='../data/test_spare.csv') result = game.calculate_score() assert game.table_content == assert_data assert game.final_score_frame == assert_score
def test_score_calculation(): """ should print correct result for the last data """ assert_data = { 1: ('X', ' ', ' ', 30), 2: ('X', ' ', ' ', 30), 3: ('X', ' ', ' ', 30), 4: None, 5: None, 6: None, 7: None, 8: None, 9: None, 10: None } game = Bowling() assert_score = 30 game.read_csv(filename='../data/test.csv') result = game.calculate_score() assert game.final_score_frame == assert_score assert game.table_content == assert_data
def test_strike_calculation(): """ should print correct result for the last data """ assert_data = { 1: ('X', ' ', ' ', 30), 2: ('X', ' ', ' ', 60), 3: ('X', ' ', ' ', 90), 4: ('X', ' ', ' ', 120), 5: ('X', ' ', ' ', 150), 6: ('X', ' ', ' ', 180), 7: ('X', ' ', ' ', 210), 8: ('X', ' ', ' ', 240), 9: ('X', ' ', ' ', 270), 10: ('X', 'X', 'X', 300) } assert_score = 300 game = Bowling() game.read_csv(filename='../data/test_strike.csv') result = game.calculate_score() assert game.table_content == assert_data assert game.final_score_frame == assert_score
class BowlingTestSuite(unittest.TestCase): def setUp(self): self.uut = Bowling() def test_roll_gutter_game(self): self.roll([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) self.assertEqual(self.uut.score(), 0) def test_roll_all_ones(self): self.roll([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]) self.assertEqual(self.uut.score(), 20) def test_roll_spare_followed_by_five(self): """ First frame is worth 15 points, second frame adds 5 for 20 total """ self.roll([7, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) self.assertEqual(20, self.uut.score()) def test_roll_strike_followed_by_two_and_three(self): """ As the first ball of frame one is a strike, the total for the frame should be the sum of the strike plus the next two rolls. Frame one is worth 15 points, frame 2 is worth 5 points, for 20 total Returns: """ self.roll([10, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) self.assertEqual(20, self.uut.score()) def test_played_perfect_game(self): self.roll([10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10]) self.assertEqual(300, self.uut.score()) def test_sample_game_scores(self): self.roll([1, 4, 4, 5, 6, 4, 5, 5, 10, 0, 1, 7, 3, 6, 4, 10, 2, 8, 6]) self.assertEqual(133, self.uut.score()) def roll(self, pins_down: list): for i in pins_down: self.uut.roll(i)
def go_bowling(self): self.place = Bowling(self)
from __future__ import with_statement from bowling import Bowling from spyce import description, example from should_dsl import should_be with description(Bowling) as context: bowling = Bowling() with example("should score 0 for gutter game"): bowling.score |should_be| 0 with example("should score 13 if I get a spare with 6 and 7"): bowling.hit(6) bowling.hit(7) bowling.score |should_be| 13
def setUp(self): self.uut = Bowling()
def test_case_spare_in_extra_balls_after_strike_in_last_frame_version4(self): game = "XXXXXXXXXX91" game_score = 8*30 + 1*(10+10+9) + 1*(10+9+1) bowling_game = Bowling() total_score = bowling_game.evaluate(game) self.assertEqual(total_score, game_score)
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)
def setUp(self): self.bowling = Bowling()
def setUp(self): self.game = Bowling()
def setUp(self): # given self.b = Bowling()
class Test(unittest.TestCase): def setUp(self): # given self.b = Bowling() def tearDown(self): pass def _repeatRoll(self, n, pins): for i in range(n): self.b.roll(pins) # 문제에서 기본으로 주어진 테스트 def testOneStrike(self): # when self.b.roll(10) # then self.assertEqual(['X','','','','','','','','','','','','','','','','','','','',''], self.b.getSymbols()) self.assertEqual(['','','','','','','','','',''], self.b.getScores()) def testNormals(self): # when self.b.roll(10) self.b.roll(7) self.b.roll(2) # then self.assertEqual(['X','',7,2,'','','','','','','','','','','','','','','','',''], self.b.getSymbols()) self.assertEqual([19,28,'','','','','','','',''], self.b.getScores()) def testSpare(self): # when self.b.roll(10) self.b.roll(7) self.b.roll(2) self.b.roll(7) self.b.roll(3) #then self.assertEqual(['X','',7,2,7,'/','','','','','','','','','','','','','','',''], self.b.getSymbols()) self.assertEqual([19,28,'','','','','','','',''], self.b.getScores()) def testLastSpare(self): # when self.b.roll(10) self.b.roll(7) self.b.roll(2) self.b.roll(7) self.b.roll(3) self.b.roll(9) self.b.roll(0) #then self.assertEqual(['X','',7,2,7,'/',9,'-','','','','','','','','','','','','',''], self.b.getSymbols()) self.assertEqual([19,28,47,56,'','','','','',''], self.b.getScores()) def testFoul(self): # when self.b.roll(10) self.b.roll(7) self.b.roll(2) self.b.roll(7) self.b.roll(3) self.b.roll(9) self.b.roll(0) self.b.roll(8) self.b.roll(2) self.b.roll(10) self.b.roll(7) self.b.roll(1) self.b.roll(9) self.b.roll(0) self.b.roll(9) self.b.roll('F') #then self.assertEqual(['X','',7,2,7,'/',9,'-',8,'/','X','',7,1,9,'-',9,'F','','',''], self.b.getSymbols()) self.assertEqual([19,28,47,56,76,94,102,111,120,''], self.b.getScores()) def testFinish(self): # when self.b.roll(10) self.b.roll(7) self.b.roll(2) self.b.roll(7) self.b.roll(3) self.b.roll(9) self.b.roll(0) self.b.roll(8) self.b.roll(2) self.b.roll(10) self.b.roll(7) self.b.roll(1) self.b.roll(9) self.b.roll(0) self.b.roll(9) self.b.roll('F') self.b.roll(9) self.b.roll(1) self.b.roll(9) #then print self.b.getSymbols() self.assertEqual(['X','',7,2,7,'/',9,'-',8,'/','X','',7,1,9,'-',9,'F',9,'/',9], self.b.getSymbols()) self.assertEqual([19,28,47,56,76,94,102,111,120,139], self.b.getScores()) # 개인적으로 추가해본 테스트케이스들 def testTurkey(self): # when self._repeatRoll(3, 10) # then self.assertEqual(['X','','X','','X','','','','','','','','','','','','','','','',''], self.b.getSymbols()) self.assertEqual([30,'','','','','','','','',''], self.b.getScores()) def test9Combo(self): # when self._repeatRoll(9, 10) # then self.assertEqual(['X','','X','','X','','X','','X','','X','','X','','X','','X','','','',''], self.b.getSymbols()) self.assertEqual([30,60,90,120,150,180,210,'','',''], self.b.getScores()) def test10Combo(self): # when self._repeatRoll(10, 10) # then self.assertEqual(['X','','X','','X','','X','','X','','X','','X','','X','','X','','X','',''], self.b.getSymbols()) self.assertEqual([30,60,90,120,150,180,210,240,'',''], self.b.getScores()) def test11Combo(self): # when self._repeatRoll(11, 10) # then self.assertEqual(['X','','X','','X','','X','','X','','X','','X','','X','','X','','X','X',''], self.b.getSymbols()) self.assertEqual([30,60,90,120,150,180,210,240,270,''], self.b.getScores()) def testPerfectGame(self): # when self._repeatRoll(12, 10) # then self.assertEqual(['X','','X','','X','','X','','X','','X','','X','','X','','X','','X','X','X'], self.b.getSymbols()) self.assertEqual([30,60,90,120,150,180,210,240,270,300], self.b.getScores()) def testMissOne(self): # when self._repeatRoll(11, 10) self.b.roll(9) # then self.assertEqual(['X','','X','','X','','X','','X','','X','','X','','X','','X','','X','X',9], self.b.getSymbols()) self.assertEqual([30,60,90,120,150,180,210,240,270,299], self.b.getScores()) def testLastNoBonus(self): # when self._repeatRoll(9, 10) self.b.roll(9) self.b.roll(0) # then self.assertEqual(['X','','X','','X','','X','','X','','X','','X','','X','','X','',9,'-',''], self.b.getSymbols()) self.assertEqual([30,60,90,120,150,180,210,239,258,267], self.b.getScores()) def testLastStrikeSpare(self): # when self._repeatRoll(10, 10) self.b.roll(5) self.b.roll(5) # then self.assertEqual(['X','','X','','X','','X','','X','','X','','X','','X','','X','','X',5,'/'], self.b.getSymbols()) self.assertEqual([30,60,90,120,150,180,210,240,265,285], self.b.getScores()) def testLastSpareStrike(self): # when self._repeatRoll(9, 10) self.b.roll(5) self.b.roll(5) self.b.roll(10) # then self.assertEqual(['X','','X','','X','','X','','X','','X','','X','','X','','X','',5,'/','X'], self.b.getSymbols()) self.assertEqual([30,60,90,120,150,180,210,235,255,275], self.b.getScores()) def testNineSpareTenStrikes(self): # when self._repeatRoll(8, 10) self.b.roll(5) self.b.roll(5) self._repeatRoll(9, 10) # 3번만 해도 되는데 게임 끝났는지 로직이 잘되나 확인. # then self.assertEqual(['X','','X','','X','','X','','X','','X','','X','','X','',5,'/','X','X','X'], self.b.getSymbols()) self.assertEqual([30,60,90,120,150,180,205,225,245,275], self.b.getScores()) # 잘못된 수를 넣었을 때 Exception이 발생하는 지 여부. # 참조 : http://stackoverflow.com/questions/156503/how-do-you-assert-that-a-certain-exception-is-thrown-in-junit-4-tests # 질문 부분만 소스에서 참조함. def testValueError(self): thrown = False try: self.b.roll(-1) self.b.roll(11) except Exception: thrown = True self.assertTrue(thrown) def testValueError2(self): thrown = False try: self.b.roll('G') except Exception: thrown = True self.assertTrue(thrown) def testSpareError(self): thrown = False try: self.b.roll(5) self.b.roll(6) except Exception: thrown = True self.assertTrue(thrown) def testLastSpareError(self): thrown = False self._repeatRoll(10, 10) try: self.b.roll(5) self.b.roll(6) except Exception: thrown = True self.assertTrue(thrown)
def test_case_a_miss_after_a_strike(self): game = "9-9-X9-9-9-9-9-9-9-" game_score = 9*(9+0) + 1*(10+9+0) bowling_game = Bowling() total_score = bowling_game.evaluate(game) self.assertEqual(total_score, game_score)
def test_case_nine_pins_in_all_frames(self): game = "9-9-9-9-9-9-9-9-9-9-" game_score = 10*9 bowling_game = Bowling() total_score = bowling_game.evaluate(game) self.assertEqual(total_score, game_score)
def test_case_all_strikes(self): game = "XXXXXXXXXXXX" game_score = 10*30 bowling_game = Bowling() total_score = bowling_game.evaluate(game) self.assertEqual(total_score, game_score)
def test_empty_calculation(): """ should raise error for value not present in the file """ with pytest.raises(ValueError): Bowling().read_csv(filename='../data/test_empty.csv')
def test_no_file(): """ should throw IOError when no file is present """ with pytest.raises(IOError): Bowling().read_csv(filename='incorrectfile.csv')
def test_case_two_strikes_in_three_frames(self): single_frame = "X17X44" single_frame_score = 1*(10+1+7) + 1*(1+7) + 1*(10+4+4) bowling_game = Bowling() total_score = bowling_game.evaluate(single_frame) self.assertEqual(total_score, single_frame_score)
class TestBowling(unittest.TestCase): def setUp(self): self.bowling = Bowling() def test_gutter(self): self.bowling.roll(0) self.assertEqual(self.bowling.score(), 0) def test_one_roll(self): self.bowling.roll(7) self.assertEqual(self.bowling.score(), 7) def test_two_rolls(self): self.bowling.roll(2) self.bowling.roll(3) self.assertEqual(self.bowling.score(), 5) def test_two_rolls_with_spare(self): self.bowling.roll(3) self.bowling.roll(7) self.assertEqual(self.bowling.score(), 10) self.bowling.roll(1) self.assertEqual(self.bowling.score(), 12) def test_two_rolls_with_strike(self): self.bowling.roll(10) self.assertEqual(self.bowling.score(), 10) self.bowling.roll(1) self.bowling.roll(3) self.assertEqual(self.bowling.score(), 18) def test_two_rolls_with_2_strike(self): self.bowling.roll(10) self.assertEqual(self.bowling.score(), 10) self.bowling.roll(10) self.assertEqual(self.bowling.score(), 30) self.bowling.roll(1) self.bowling.roll(3) self.assertEqual(self.bowling.score(), 38) def test_frame(self): self.bowling.roll(1) self.bowling.roll(2) self.assertEqual(self.bowling.frames, [[1,2]])
def __init__(self, name): self.name = name self.batting = Batting() self.bowling = Bowling()
def test_case_spare_before_last_frame(self): game = "9-9-9-9-9-9-9-9-9/9-" game_score = 8*9 + 1*(10+9) + 1*9 bowling_game = Bowling() total_score = bowling_game.evaluate(game) self.assertEqual(total_score, game_score)
def test_case_strike_in_extra_ball_after_spare_in_last_frame(self): game = "XXXXXXXXX1/X" game_score = 7*30 + 1*(10+10+1) + 1*(10+1+9) + 1*(1+9) + 10 bowling_game = Bowling() total_score = bowling_game.evaluate(game) self.assertEqual(total_score, game_score)
def test_case_all_zeros(self): game = "--------------------" game_score = 0 bowling_game = Bowling() total_score = bowling_game.evaluate(game) self.assertEqual(total_score, game_score)
def test_case_150_points(self): game = "5/5/5/5/5/5/5/5/5/5/5" game_score = 10*15 bowling_game = Bowling() total_score = bowling_game.evaluate(game) self.assertEqual(total_score, game_score)
def test_zero_points(): bowling = Bowling() _add_frames(bowling, 10, (0, 0)) assert bowling.calculate_score() == 0
def test_case_all_strikes_in_single_frame(self): single_frame = "XXX" single_frame_score = 10 + 10 + 10 bowling_game = Bowling() total_score = bowling_game.evaluate(single_frame) self.assertEqual(total_score, single_frame_score)
def _add_frames(bowling: Bowling, num_frames: int, score: tuple): for frame in range(num_frames): bowling.add_frame(*score)
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)