def __set_play(self, cols): """ Takes a list of columns from an HTML table and sets the "play" dictionary for the play. args: cols: BS4 columns. returns: A score dictionary with the following fields: "play": { "type": "complete pass", "scoring": { "type": "touchdown", "team": "home" } } """ play = {} # Set the type play["type"] = get_play_type(self.current_play_info["description"]) self.current_play_info["type"] = play["type"] if not self.is_scoring: return play else: play["scoring"] = {} play["scoring"]["type"] = get_scoring_type(self.current_play_info["description"]) # Assign team based on how the score changed home_scored = self.current_play_info["home score"] - self.last_play_info["home score"] if home_scored: play["scoring"]["team"] = "home" away_scored = self.current_play_info["away score"] - self.last_play_info["away score"] if away_scored: play["scoring"]["team"] = "away" return play
def test_get_play_type(self): # Successful self.assertEqual(get_play_type("--"), None) self.assertEqual( get_play_type("""Isaac Newton punts 52 yards, returned by Gottfried Wilhelm von Leibniz for -7 yards (tackle by Royal Society)"""), "punt" ) self.assertEqual( get_play_type("""Two Point Attempt: Saul Perlmutter pass incomplete, conversion fails. Penalty on SFO : Illegal Touch Pass (Declined)"""), "two point conversion with incomplete pass" ) self.assertEqual( get_play_type("""Two Point Attempt: Wolfgang Amadeus Mozart pass complete to Antonio Salieri, conversion succeeds"""), "two point conversion with complete pass" ) self.assertEqual( get_play_type("""Two Point Attempt: Pheidippides up the middle, conversion succeeds"""), "two point conversion with run" ) self.assertEqual( get_play_type("""Julius Caesar kicks off 70 yards, muffed catch by Mark Antony, recovered by Gaius Octavius and returned for no gain"""), "kick off" ) self.assertEqual( get_play_type("""Neville Chamberlain kicks onside, recovered by the Axis."""), "onside kick" ) self.assertEqual( get_play_type("""Nikolai Yezhov sacked by Joseph Stalin and Ivan Serov for -7 yards"""), "sack" ) self.assertEqual( get_play_type("Albert Einstein 52 yard field goal no good"), "field goal" ) self.assertEqual( get_play_type("""Antinous pass incomplete short middle intended for Penelope. (defended by Odysseus). Penalty on Odysseus: Defensive Pass Interference, 9 yards (no play)"""), "incomplete pass" ) self.assertEqual( get_play_type("""Bill Gates pass complete short right to Steve Ballmer for 9 yards (tackle by Steve Jobs)"""), "complete pass" ) self.assertEqual( get_play_type("Bruce Springsteen kicks extra point good"), "extra point" ) self.assertEqual( get_play_type("Timeout #1 by The E Street Band"), "timeout" ) self.assertEqual( get_play_type("Superman kneels before Zod for -1 yards"), "kneel" ) self.assertEqual( get_play_type("Arthur C. Clarke spiked the ball"), "spike" ) self.assertEqual( get_play_type("Aborted snap. G. Khan fumbles, recovered by K. Tolui at EUR -23 (tackled by Ögödei Kahn )."), "aborted snap" ) self.assertEqual( get_play_type("""Isaac Asimov up the middle for 11 yards (tackle by Ray Bradbury)"""), "run" ) # We squelch the warning from this test, we want the warning when # running on data, but not when testing with open(os.devnull, 'w') as f: oldstdout = sys.stdout f = open(os.devnull, 'w') sys.stdout = f self.assertEqual( get_play_type("What are you even talking about?"), None ) # Return stdout sys.stdout = oldstdout f.close()
def test_get_play_type(self): # Successful self.assertEqual(get_play_type("--"), None) self.assertEqual( get_play_type("""Isaac Newton punts 52 yards, returned by Gottfried Wilhelm von Leibniz for -7 yards (tackle by Royal Society)"""), "punt") self.assertEqual( get_play_type("""Two Point Attempt: Saul Perlmutter pass incomplete, conversion fails. Penalty on SFO : Illegal Touch Pass (Declined)"""), "two point conversion with incomplete pass") self.assertEqual( get_play_type("""Two Point Attempt: Wolfgang Amadeus Mozart pass complete to Antonio Salieri, conversion succeeds"""), "two point conversion with complete pass") self.assertEqual( get_play_type("""Two Point Attempt: Pheidippides up the middle, conversion succeeds"""), "two point conversion with run") self.assertEqual( get_play_type("""Julius Caesar kicks off 70 yards, muffed catch by Mark Antony, recovered by Gaius Octavius and returned for no gain"""), "kick off") self.assertEqual( get_play_type("""Neville Chamberlain kicks onside, recovered by the Axis."""), "onside kick") self.assertEqual( get_play_type("""Nikolai Yezhov sacked by Joseph Stalin and Ivan Serov for -7 yards"""), "sack") self.assertEqual( get_play_type("Albert Einstein 52 yard field goal no good"), "field goal") self.assertEqual( get_play_type("""Antinous pass incomplete short middle intended for Penelope. (defended by Odysseus). Penalty on Odysseus: Defensive Pass Interference, 9 yards (no play)"""), "incomplete pass") self.assertEqual( get_play_type("""Bill Gates pass complete short right to Steve Ballmer for 9 yards (tackle by Steve Jobs)"""), "complete pass") self.assertEqual( get_play_type("Bruce Springsteen kicks extra point good"), "extra point") self.assertEqual(get_play_type("Timeout #1 by The E Street Band"), "timeout") self.assertEqual( get_play_type("Superman kneels before Zod for -1 yards"), "kneel") self.assertEqual(get_play_type("Arthur C. Clarke spiked the ball"), "spike") self.assertEqual( get_play_type( "Aborted snap. G. Khan fumbles, recovered by K. Tolui at EUR -23 (tackled by Ögödei Kahn )." ), "aborted snap") self.assertEqual( get_play_type("""Isaac Asimov up the middle for 11 yards (tackle by Ray Bradbury)"""), "run") # We squelch the warning from this test, we want the warning when # running on data, but not when testing with open(os.devnull, 'w') as f: oldstdout = sys.stdout f = open(os.devnull, 'w') sys.stdout = f self.assertEqual(get_play_type("What are you even talking about?"), None) # Return stdout sys.stdout = oldstdout f.close()
def test_get_play_type(self): self.__set_play_consts() # Successful self.assertEqual(get_play_type(self.plays[0]), "punt") self.assertEqual(get_play_type(self.plays[1]), "two point conversion with incomplete pass") self.assertEqual(get_play_type(self.plays[2]), "two point conversion with complete pass") self.assertEqual(get_play_type(self.plays[3]), "two point conversion with run") self.assertEqual(get_play_type(self.plays[4]), "kick off") self.assertEqual(get_play_type(self.plays[5]), "onside kick") self.assertEqual(get_play_type(self.plays[6]), "sack") self.assertEqual(get_play_type(self.plays[7]), "field goal") self.assertEqual(get_play_type(self.plays[8]), "incomplete pass") self.assertEqual(get_play_type(self.plays[9]), "complete pass") self.assertEqual(get_play_type(self.plays[10]), "extra point") self.assertEqual(get_play_type(self.plays[11]), "timeout") self.assertEqual(get_play_type(self.plays[12]), "kneel") self.assertEqual(get_play_type(self.plays[13]), "spike") self.assertEqual(get_play_type(self.plays[14]), "aborted snap") self.assertEqual(get_play_type(self.plays[15]), "run") # We squelch the warning from this test, we want the warning when # running on data, but not when testing with open(os.devnull, 'w') as f: oldstdout = sys.stdout sys.stdout = f self.assertEqual(get_play_type(self.plays[16]), None) self.assertEqual(get_play_type(self.plays[17]), None) # Return stdout sys.stdout = oldstdout
def test_get_play_type(self): self.__set_play_consts() # Successful self.assertEqual( get_play_type(self.plays[0]), "punt" ) self.assertEqual( get_play_type(self.plays[1]), "two point conversion with incomplete pass" ) self.assertEqual( get_play_type(self.plays[2]), "two point conversion with complete pass" ) self.assertEqual( get_play_type(self.plays[3]), "two point conversion with run" ) self.assertEqual( get_play_type(self.plays[4]), "kick off" ) self.assertEqual( get_play_type(self.plays[5]), "onside kick" ) self.assertEqual( get_play_type(self.plays[6]), "sack" ) self.assertEqual( get_play_type(self.plays[7]), "field goal" ) self.assertEqual( get_play_type(self.plays[8]), "incomplete pass" ) self.assertEqual( get_play_type(self.plays[9]), "complete pass" ) self.assertEqual( get_play_type(self.plays[10]), "extra point" ) self.assertEqual( get_play_type(self.plays[11]), "timeout" ) self.assertEqual( get_play_type(self.plays[12]), "kneel" ) self.assertEqual( get_play_type(self.plays[13]), "spike" ) self.assertEqual( get_play_type(self.plays[14]), "aborted snap" ) self.assertEqual( get_play_type(self.plays[15]), "run" ) # We squelch the warning from this test, we want the warning when # running on data, but not when testing with open(os.devnull, 'w') as f: oldstdout = sys.stdout sys.stdout = f self.assertEqual( get_play_type(self.plays[16]), None ) self.assertEqual( get_play_type(self.plays[17]), None ) # Return stdout sys.stdout = oldstdout