def test_get_pitch_sequence(self):
     # walk
     self.assertEqual(
         RetroSheetUtil.get_pitch_sequence("BBBB", "14"),
         {
             "seq": ["ball", "ball", "ball", "ball"],
             "ball": 4,
             "strike": 0,
             "pitches": 4,
             "pickoff": 0,
             "ball_count": {"ball": 3, "strike": 0},
             "event": ("Walk",),
         },
     )
     # strike out
     self.assertEqual(
         RetroSheetUtil.get_pitch_sequence("CFBBFBFC", "3"),
         {
             "seq": ["called strike", "foul", "ball", "ball", "foul", "ball", "foul", "called strike"],
             "ball": 3,
             "strike": 5,
             "pitches": 8,
             "pickoff": 0,
             "ball_count": {"ball": 3, "strike": 2},
             "event": ("SO",),
         },
     )
     # single hit
     self.assertEqual(
         RetroSheetUtil.get_pitch_sequence("B1BCC>X", "20"),
         {
             "seq": [
                 "ball",
                 "pickoff throw to first",
                 "ball",
                 "called strike",
                 "called strike",
                 "indicates a runner going on the pitch",
                 "ball put into play by batter",
             ],
             "ball": 2,
             "strike": 2,
             "pitches": 5,
             "pickoff": 1,
             "ball_count": {"ball": 2, "strike": 2},
             "event": ("S",),
         },
     )
     # intentional ball
     self.assertEqual(
         RetroSheetUtil.get_pitch_sequence("BFBBI", "15"),
         {
             "seq": ["ball", "foul", "ball", "ball", "intentional ball"],
             "ball": 4,
             "strike": 1,
             "pitches": 5,
             "pickoff": 0,
             "ball_count": {"ball": 3, "strike": 1},
             "event": ("Intentional walk",),
         },
     )
 def test_get_pitch_sequence(self):
     # walk
     self.assertEqual(
         RetroSheetUtil.get_pitch_sequence('BBBB', '14'),
         {
             'seq': [
                 'ball',
                 'ball',
                 'ball',
                 'ball',
             ],
             'ball': 4,
             'strike': 0,
             'pitches': 4,
             'pickoff': 0,
             'ball_count': {
                 'ball': 3,
                 'strike': 0,
             },
             'event': ('Walk',)
         }
     )
     # strike out
     self.assertEqual(
         RetroSheetUtil.get_pitch_sequence('CFBBFBFC', '3'),
         {
             'seq': [
                 'called strike',
                 'foul',
                 'ball',
                 'ball',
                 'foul',
                 'ball',
                 'foul',
                 'called strike',
             ],
             'ball': 3,
             'strike': 5,
             'pitches': 8,
             'pickoff': 0,
             'ball_count': {
                 'ball': 3,
                 'strike': 2,
             },
             'event': ('SO',)
         }
     )
     # single hit
     self.assertEqual(
         RetroSheetUtil.get_pitch_sequence('B1BCC>X', '20'),
         {
             'seq': [
                 'ball',
                 'pickoff throw to first',
                 'ball',
                 'called strike',
                 'called strike',
                 'indicates a runner going on the pitch',
                 'ball put into play by batter',
             ],
             'ball': 2,
             'strike': 2,
             'pitches': 5,
             'pickoff': 1,
             'ball_count': {
                 'ball': 2,
                 'strike': 2,
             },
             'event': ('S',)
         }
     )
     # intentional ball
     self.assertEqual(
         RetroSheetUtil.get_pitch_sequence('BFBBI', '15'),
         {
             'seq': [
                 'ball',
                 'foul',
                 'ball',
                 'ball',
                 'intentional ball'
             ],
             'ball': 4,
             'strike': 1,
             'pitches': 5,
             'pickoff': 0,
             'ball_count': {
                 'ball': 3,
                 'strike': 1,
             },
             'event': ('Intentional walk',)
         }
     )