def test_get_points_draws(): team = Team('Santa Cruz Slugs') enemy = Team('Aptos FC') team.add_game(Game(team, 10, enemy, 10)) team.add_game(Game(team, 0, enemy, 0)) assert team.get_points(1) == 1 assert team.get_points(2) == 2
def test_get_team_by_name(): league = League() team1 = Team('Santa Cruz Slugs') team2 = Team('Aptos FC') league.add_game(Game(team1, 10, team2, 0)) assert league.get_team_by_name('Santa Cruz Slugs') is team1 assert league.get_team_by_name('Aptos FC') is team2 assert league.get_team_by_name('missing') is None
def test_generate_points(): league = League() team1 = Team('Santa Cruz Slugs') team2 = Team('Aptos FC') league.add_game(Game(team1, 10, team2, 0)) league.add_game(Game(team1, 0, team2, 0)) league.add_game(Game(team1, 1, team2, 1)) assert league.generate_points(3) == [(team1, 5), (team2, 2)]
def test_get_points_variety(): team = Team('Santa Cruz Slugs') enemy = Team('Aptos FC') team.add_game(Game(team, 10, enemy, 0)) team.add_game(Game(team, 5, enemy, 10)) team.add_game(Game(team, 5, enemy, 5)) team.add_game(Game(team, 10, enemy, 10)) assert team.get_points(4) == 5
def test_add_game(): league = League() team1 = Team('Santa Cruz Slugs') team2 = Team('Aptos FC') game = Game(team1, 10, team2, 0) league.add_game(game) assert game in league.games assert game in team1.games assert game in team2.games
def test_teams_getting_set(): league = League() team1 = Team('Santa Cruz Slugs') team2 = Team('Aptos FC') team3 = Team('Monterey United') league.add_game(Game(team1, 10, team2, 0)) league.add_game(Game(team1, 10, team3, 0)) assert league.teams.count(team1) == 1 assert league.teams.count(team2) == 1 assert league.teams.count(team3) == 1
def unpack_input(self, file_handler): for line in file_handler: re_matches = re.search(r'([a-zA-Z ]+) (\d), ([a-zA-Z ]+) (\d)', line) if re_matches is None: raise Exception('Could not parse line: ' + line) team1 = self.league.get_team_by_name(re_matches.group(1)) if team1 is None: team1 = Team(re_matches.group(1)) team2 = self.league.get_team_by_name(re_matches.group(3)) if team2 is None: team2 = Team(re_matches.group(3)) score1 = re_matches.group(2) score2 = re_matches.group(4) self.league.add_game(Game(team1, score1, team2, score2))
def test_team_updates_traits_on_tik_end(): s_warrior = pd.Series([90, 90, 90, "衝鋒,名將,氣勢,才貌雙全,不屈"], index=["統率", "武勇", "智略", "類型戰鬥特性"]) team = Team(s_warrior, 10000) team.traits.loc[team.traits["name"].isin(["名將", "才貌雙全", "不屈"]), ["activated", "activated_until"]] = [True, 1] team.traits.loc[team.traits["name"].isin(["不屈"]), ["activated", "activated_until"]] = [True, 9] expected = team.traits.copy() expected.loc[expected["name"].isin(["名將", "才貌雙全", "不屈"]), ["activated", "activated_until"]] = [False, 10] expected.loc[expected["name"].isin(["不屈"]), ["activated", "activated_until"]] = [True, 8] team.update_traits_on_tik_end() pd.set_option('display.max_columns', None) pd.set_option('display.max_rows', None) print(team.traits) print(expected) print(team.traits.dtypes) print(expected.dtypes) assert pd.DataFrame.equals(team.traits, expected)
def get_event(self, sport): games = [] with urllib.request.urlopen("{}".format(sport.value)) as url: data = json.loads(url.read().decode()) events = data['events'] for event in events: team1 = event['competitions'][0]['competitors'][0] team2 = event['competitions'][0]['competitors'][1] games.append( Game(Team(team1['team'], team1['score']), Team(team2['team'], team2['score']))) return games
def test_team_updates_traits_on_battle_start(): s_warrior = pd.Series([90, 90, 90, "衝鋒,先驅,氣勢,副將,波狀攻擊,名將"], index=["統率", "武勇", "智略", "類型戰鬥特性"]) team = Team(s_warrior, 10000) opponent = Team(s_opponent1, 10000) team.set_opponent(opponent) team.traits.loc[:, "activation_rate"] = 1.0 expected = team.traits.copy() expected.loc[expected["name"].isin(["衝鋒", "先驅"]), "activated"] = True team.update_traits_on_battle_start() print(team.traits) print(expected) print(team.traits.dtypes) print(expected.dtypes) assert pd.DataFrame.equals(team.traits, expected)
def test_team_collects_warriors_traits(): s_warrior1 = pd.Series([90, 90, 90, "衝鋒,槍衾"], index=["統率", "武勇", "智略", "類型戰鬥特性"]) s_warrior2 = pd.Series([90, 90, 90, "槍衾,名將"], index=["統率", "武勇", "智略", "類型戰鬥特性"]) expected = conf.TRAITS_DEFAULT[conf.TRAITS_DEFAULT["name"].isin( ["衝鋒", "槍衾", "名將"])] team = Team([s_warrior1, s_warrior2], 10000) assert pd.DataFrame.equals(team.traits, expected)
def run_evaluation(): log = init_log() total = df_candidates.shape[0] for idx, candidate in df_candidates.iterrows(): idx = idx + 1 msg = f"{idx}/{total}" for battle in range(1, 101): team = Team([candidate], 5000) opponent = Team([s_opponent], 5000) team.set_opponent(opponent) opponent.set_opponent(team) tik = 1 while team.troops > 0 and opponent.troops > 0: team.update_traits_on_tik_start() opponent.update_traits_on_tik_start() if tik % 3 == 0: team.update_traits_on_battle_start() opponent.update_traits_on_battle_start() team.update_team_factors() opponent.update_team_factors() kills = team.calculate_kills() killed = opponent.calculate_kills() team.take_damage(killed) opponent.take_damage(kills) log = battle_log(log, battle, tik, team, opponent, kills, killed, msg) team.update_traits_on_battle_end() opponent.update_traits_on_battle_end() team.update_traits_on_tik_end() opponent.update_traits_on_tik_end() tik = tik + 1 log.to_excel("battle_log.xlsx", index=False)
def test_battle(): log = init_log() team = Team([s_wutianxinxuan], 10000) opponent = Team([s_shangshanqianxin], 10000) team.set_opponent(opponent) opponent.set_opponent(team) tik = 1 while team.troops > 0 and opponent.troops > 0: team.update_traits_on_tik_start() opponent.update_traits_on_tik_start() if tik % 3 == 0: team.update_traits_on_battle_start() opponent.update_traits_on_battle_start() team.update_team_factors() opponent.update_team_factors() kills = team.calculate_kills() killed = opponent.calculate_kills() team.take_damage(killed) opponent.take_damage(kills) log = battle_log(log, tik, team, opponent, kills, killed) team.update_traits_on_battle_end() opponent.update_traits_on_battle_end() team.update_traits_on_tik_end() opponent.update_traits_on_tik_end() tik = tik + 1 log.to_excel("battle_log.xlsx", index=False) assert True
def test_team_updates_traits_on_tik_start(): s_warrior = pd.Series([90, 90, 90, "衝鋒,名將,氣勢,才貌雙全,不屈"], index=["統率", "武勇", "智略", "類型戰鬥特性"]) team = Team(s_warrior, 10000) team.traits.loc[:, "activation_rate"] = 1.0 expected = team.traits.copy() expected.loc[expected["name"].isin(["名將", "才貌雙全", "不屈"]), "activated"] = True team.update_traits_on_tik_start() assert pd.DataFrame.equals(team.traits, expected)
def test_team_inits_with_1_warrior(): team = Team(s_zhentianxingcun, 10000) assert len(team.warriors) == 1 assert team.troops == 10000 assert team.tong == 92 assert team.wu == 99 assert team.zhi == 82 assert team.tong_lead == 92 assert team.wu_lead == 99 assert team.zhi_lead == 82 assert team.traits.empty is False
def test_team_updates_traits_on_battle_end(): s_warrior = pd.Series([90, 90, 90, "衝鋒,先驅,氣勢,副將,波狀攻擊,名將,風林火山"], index=["統率", "武勇", "智略", "類型戰鬥特性"]) team = Team(s_warrior, 10000) team.traits.loc[:, "activated"] = True expected = team.traits.copy() expected.loc[expected["name"].isin(["氣勢", "風林火山"]), ["damage_increase", "loss_decrease"]] = [0, 0] expected.drop(index=expected.loc[expected["name"] == "先驅"].index, inplace=True) team.update_traits_on_battle_end() assert pd.DataFrame.equals(team.traits, expected)
def test_team_inits_with_multiple_warriors(): team = Team([s_zhentianxingcun, s_zhentianchangxing], 10000) assert len(team.warriors) == 2 assert team.troops == 10000 assert team.tong == 92 assert team.wu == 99 np.testing.assert_almost_equal(team.zhi, 90.16) assert team.tong_lead == 92 assert team.wu_lead == 99 assert team.zhi_lead == 82 assert team.traits.empty is False
name2 = sys.argv[2] # Read in team1 stats dataReader = DataReader() rushingData = dataReader.statReader("Rushing.csv") passingData = dataReader.statReader("Passing.csv") kickingData = dataReader.statReader("Kicking.csv") returningData = dataReader.statReader("Returning.csv") puntingData = dataReader.statReader("Punting.csv") downData = dataReader.statReader("Down.csv") # Read in play percentages playData = dataReader.playReader("Percent.csv") # Build Team team1 = Team(name1) team1.buildTeam(rushingData, passingData, kickingData, returningData, puntingData, downData, playData) team2 = Team(name2) team2.buildTeam(rushingData, passingData, kickingData, returningData, puntingData, downData, playData) team1Count = 0 team2Count = 0 tieCount = 0 fileWrite = open("output.txt", 'w') for i in range(1000): game = Game(team1, team2) game.startGame()
from src.Game import Game from src.Team import Team team1 = Team('First') team2 = Team('Second') def test_get_winner_team1(): game = Game(team1, 10, team2, 4) assert game.get_winner() is team1 def test_get_winner_team2(): game = Game(team1, 2, team2, 4) assert game.get_winner() is team2 def test_get_winner_draw(): game = Game(team1, 3, team2, 3) assert game.get_winner() is None
field = int(sys.argv[4]) # Read in team stats dataReader = DataReader() rushingData = dataReader.statReader("Rushing.csv") passingData = dataReader.statReader("Passing.csv") kickingData = dataReader.statReader("Kicking.csv") returningData = dataReader.statReader("Returning.csv") puntingData = dataReader.statReader("Punting.csv") downData = dataReader.statReader("Down.csv") # Read in play percentages playData = dataReader.playReader("Percent.csv") # Build Team team = Team(name) team.buildTeam(rushingData, passingData, kickingData, returningData, puntingData, downData, playData) # Choose a play playSet = {} play = "" percent = 0.0 for i in range(1000): playTemp, percentTemp = team.playProb(down, distance, field) if playTemp not in playSet.keys(): playSet[playTemp] = percentTemp if percent < percentTemp: play = playTemp percent = percentTemp
def test_sort_points_by_name(): team1 = Team('Santa Cruz Slugs') team2 = Team('Aptos FC') points = [(team1, 0), (team2, 0)] League.sort_points(points) assert points == [(team2, 0), (team1, 0)]
def test_default_name(): team = Team() assert team.name #falsy if None or ''
def test_add_game(): team = Team('Santa Cruz Slugs') enemy = Team('Aptos FC') game = Game(team, 5, enemy, 3) team.add_game(game) assert game in team.games