Example #1
0
class BowlingScoreTest (unittest.TestCase):

    def setUp(self):
        self.bowling_score = BowlingScore()

    def test_get_score_normal(self):
        self.bowling_score.get_score("555555")
        self.assertEqual(self.bowling_score.result, 30)

    def test_get_score_strike(self):
        self.bowling_score.get_score("XXX")
        self.assertEqual(self.bowling_score.result, 60)

    def test_get_score_spare(self):
        self.bowling_score.get_score("5/5/5/")
        self.assertEqual(self.bowling_score.result, 45)

    def test_check_frame_normal(self):
        result = self.bowling_score._check_frame('555555')
        self.assertEqual(result, True)

    def test_check_frame_lage_error(self):
        result = self.bowling_score._check_frame('5555555')
        self.assertEqual(result, False)

    def test_check_frame_small_error(self):
        result = self.bowling_score._check_frame('5555')
        self.assertFalse(result)

    def test_check_input_data_normal(self):
        self.assertRaises(Exception, self.bowling_score._check_input_data, '4//555')
Example #2
0
 def setUp(self):
     self.bowling_score = BowlingScore()
Example #3
0
# Надо написать python-модуль (назвать bowling), предоставляющий API расчета количества очков:
# функцию get_score, принимающую параметр game_result. Функция должна выбрасывать исключения,
# когда game_result содержит некорректные данные. Использовать стандартные исключения по максимуму,
# если не хватает - создать свои.
#
# Обязательно написать тесты на этот модуль. Расположить в папке tests.

# Из текущего файла сделать консольную утилиту для определения количества очков, с помощью пакета argparse
# Скрипт должен принимать параметр --result и печатать на консоль:
#   Количество очков для результатов ХХХ - УУУ.
import argparse

from bowling import BowlingScore

if __name__ == '__main__':
    # 42174/34723/X21X33 - 109
    # X41XX454235-X1/4/ - 138
    # 1-7-2-511651-X7-7-6/ - 78
    # 6/5/5-8-9/5/35631--- - 91

    parser = argparse.ArgumentParser(
        description='User result of a bowling game')
    parser.add_argument('-r', '--result', type=str, help='Result')
    args = parser.parse_args()
    game = BowlingScore(args.result)
    game.run()

# При написании кода помнить, что заказчик может захотеть доработок и новых возможностей...
# И, возможно, вам пригодится паттерн проектирования "Состояние",
#   см https://clck.ru/Fudd8 и https://refactoring.guru/ru/design-patterns/state
#зачет!
Example #4
0
 def test(self):
     game = BowlingScore('42174/34723/X21X33')
     result = game.run()
     self.assertEqual(result, 109)
Example #5
0
 def test_strike_error(self):
     game = BowlingScore('1X174/34723/X21X33')
     result = game.run()
     self.assertEqual(result, StrikeError)
Example #6
0
 def test_not_enough_frames(self):
     game = BowlingScore('174/34723/X21X33')
     result = game.run()
     self.assertEqual(result, NotEnoughFrames)
Example #7
0
 def test_value_error_3(self):
     game = BowlingScore('/6174/34723/X21X33')
     result = game.run()
     self.assertEqual(result, ValueError)