def build_final_frame(self, frame_input):
     '''
     Builds the final frame
     '''
     converted_frame = []
     for character in frame_input:
         if character == 'X':
             converted_frame += [10]
         else:
             converted_frame += [int(character)]
     if len(converted_frame) == 3:
         return FinalFrame(converted_frame[0], converted_frame[1],
                           converted_frame[2])
     else:
         return FinalFrame(converted_frame[0], converted_frame[1])
Exemple #2
0
 def test_last_frame_strike_spare(self):
     '''
     Second last frame has a strike
     '''
     frames = [Frame(0, 0)] * 8 + [Frame(10, 0)]
     frames += [FinalFrame(7, 3, 3)]
     self._assert_score_equals(frames, 33)
 def test_final_frame_equals(self):
     '''
     A FinalFrame is not a Frame!
     '''
     frame = Frame(10, 0)
     final_frame = FinalFrame(10, 0, 0)
     self.assertFalse(frame == final_frame)
Exemple #4
0
 def test_full_game_into_frames(self):
     '''
     Pass a full normal game and check it's
     correctly converted into frames
     '''
     game_string = "00102030405060708090"
     expected_frames = [Frame(0, 0)] + [Frame(1, 0)] + [Frame(2, 0)]
     expected_frames += [Frame(3, 0)] + [Frame(4, 0)] + [Frame(5, 0)]
     expected_frames += [Frame(6, 0)] + [Frame(7, 0)] + [Frame(8, 0)]
     expected_frames += [FinalFrame(9, 0, 0)]
     factory = FrameFactory()
     self.assertEqual(factory.build_game(game_string), expected_frames)
    def test_builds_frame_references(self):
        '''
        Check the builder is able to correctly transform
        a list of frames to linked frames
        '''
        frames = []
        for index in range(0, 9):
            frames += [Frame(index, 0)]
        frames += [FinalFrame(1, 2, 3)]

        first_linked_frame = self._ready_linked_frame_list(frames)

        builder = FrameListBuilder(frames)
        built_frame = builder.build()
        next_frame = built_frame
        next_expected_frame = first_linked_frame

        while next_frame.has_next_frame():
            self.assertEquals(next_expected_frame, next_frame)
            next_frame = next_frame.next_frame
            next_expected_frame = next_expected_frame.next_frame
Exemple #6
0
 def test_final_frame_strike(self):
     '''
     Test the final frame strikes act as expected
     '''
     frames = [Frame(0, 0)] * 9 + [FinalFrame(10, 1, 1)]
     self._assert_score_equals(frames, 12)
Exemple #7
0
 def test_final_frame_spare(self):
     '''
     Test the final frame acts as expected
     '''
     frames = [Frame(0, 0)] * 9 + [FinalFrame(5, 5, 3)]
     self._assert_score_equals(frames, 13)
Exemple #8
0
 def test_total_maximum_score(self):
     '''
     The 300!
     '''
     frames = [Frame(10, 0)] * 9 + [FinalFrame(10, 10, 10)]
     self._assert_score_equals(frames, 300)
Exemple #9
0
 def test_final_frame_spare_strike(self):
     '''
     Spare + strike on the final frame
     '''
     frames = [Frame(0, 0)] * 9 + [FinalFrame(5, 5, 10)]
     self._assert_score_equals(frames, 20)
Exemple #10
0
 def test_final_frame_two_strikes(self):
     '''
     Two strikes on the final frame
     '''
     frames = [Frame(0, 0)] * 9 + [FinalFrame(10, 10, 1)]
     self._assert_score_equals(frames, 21)