def setUp(self): self.players = [ Player('1', 'Golf Player 1', '', ['G'], '', 5000, 200, projected_ownership=0.95), Player('2', 'Golf Player 2', '', ['G'], '', 5000, 20, projected_ownership=0.7), Player('3', 'Golf Player 3', '', ['G'], '', 5000, 20, projected_ownership=0.7), Player('4', 'Golf Player 4', '', ['G'], '', 5000, 20, projected_ownership=0.7), Player('5', 'Golf Player 5', '', ['G'], '', 5000, 5, projected_ownership=0.5), Player('6', 'Golf Player 6', '', ['G'], '', 5000, 5, projected_ownership=0.5), Player('7', 'Golf Player 7', '', ['G'], '', 5000, 5, projected_ownership=0.5), Player('8', 'Golf Player 8', '', ['G'], '', 5000, 5, projected_ownership=0.5), Player('9', 'Golf Player 9', '', ['G'], '', 5000, 5, projected_ownership=0.5), Player('10', 'Golf Player 10', '', ['G'], '', 5000, 5, projected_ownership=0.5), ] self.optimizer = get_optimizer(Site.DRAFTKINGS, Sport.GOLF) self.optimizer.load_players(self.players)
def setUpClass(cls): cls.players = [ Player(1, 'Golf Player 1', '', ['G'], '', 5000, 200, projected_ownership=0.95), Player(2, 'Golf Player 2', '', ['G'], '', 5000, 20, projected_ownership=0.7), Player(3, 'Golf Player 3', '', ['G'], '', 5000, 20, projected_ownership=0.7), Player(4, 'Golf Player 4', '', ['G'], '', 5000, 20, projected_ownership=0.7), Player(5, 'Golf Player 5', '', ['G'], '', 5000, 5, projected_ownership=0.5), Player(6, 'Golf Player 6', '', ['G'], '', 5000, 5, projected_ownership=0.5), Player(7, 'Golf Player 7', '', ['G'], '', 5000, 5, projected_ownership=0.5), Player(8, 'Golf Player 8', '', ['G'], '', 5000, 5, projected_ownership=0.5), Player(9, 'Golf Player 9', '', ['G'], '', 5000, 5, projected_ownership=0.5), Player(10, 'Golf Player 10', '', ['G'], '', 5000, 5, projected_ownership=0.5), ]
def setUp(self): self.optimizer = get_optimizer(Site.YAHOO, Sport.BASKETBALL) self.first_team = 'TEST' self.second_team = 'TEST2' self.players = [ Player('1', 'p1', 'p1', ['PG'], self.first_team, 10, 200), Player('2', 'p2', 'p2', ['SG'], 'team2', 10, 200), Player('3', 'p3', 'p3', ['SF'], 'team3', 10, 200), Player('4', 'p4', 'p4', ['PF'], 'team4', 10, 200), Player('5', 'p5', 'p5', ['C'], 'team5', 10, 200), Player('6', 'p6', 'p6', ['PG', 'SG'], 'team6', 10, 200), Player('7', 'p7', 'p7', ['SF', 'PF'], 'team7', 10, 200), Player('8', 'p8', 'p8', ['PG', 'SG', 'SF'], 'team8', 10, 200), Player('9', 'p9', 'p9', ['SF', 'PF'], self.second_team, 10, 2), Player('10', 'p10', 'p10', ['PG', 'SG', 'SF'], self.second_team, 10, 2), Player('11', 'p11', 'p11', ['C'], self.first_team, 10, 2), Player('12', 'p12', 'p12', ['SF'], self.first_team, 10, 2), Player('13', 'p13', 'p13', ['PF', 'C'], self.first_team, 10, 2), ] self.optimizer.load_players(self.players)
def test_adding_player_with_salary_bigger_than_budget(self): self.lineup_optimizer.reset_lineup() player = Player(1, '1', '1', ['PG'], 'DEN', 100000, 2) with self.assertRaises(LineupOptimizerException): self.lineup_optimizer.add_player_to_lineup(player)
def test_positions_from_same_team(self): optimizer = get_optimizer(Site.YAHOO, Sport.BASKETBALL) players = [ Player(1, 'p1', 'p1', ['PG'], 'team1', 10, 200), Player(2, 'p2', 'p2', ['SG'], 'team2', 10, 200), Player(3, 'p3', 'p3', ['SF'], 'team3', 10, 200), Player(4, 'p4', 'p4', ['PF'], 'team4', 10, 200), Player(5, 'p5', 'p5', ['C'], 'team5', 10, 200), Player(6, 'p6', 'p6', ['PG', 'SG'], 'team6', 10, 200), Player(7, 'p7', 'p7', ['SF', 'PF'], 'team7', 10, 200), Player(8, 'p8', 'p8', ['PG', 'SG', 'SF'], 'team8', 10, 200), Player(9, 'p9', 'p9', ['C'], 'team1', 10, 5), Player(10, 'p10', 'p10', ['SF'], 'team1', 10, 2), Player(11, 'p11', 'p11', ['PF', 'C'], 'team1', 10, 2), ] optimizer.load_players(players) lineup = next(optimizer.optimize(1)) self.assertEqual(len(set([p.team for p in lineup.lineup])), 8) optimizer.set_positions_for_same_team(['PG', 'C']) lineup = next(optimizer.optimize(1)) self.assertEqual(len(set([p.team for p in lineup.lineup])), 7) self.assertTrue(all(players[i] in lineup.lineup for i in [0, 8])) optimizer.set_positions_for_same_team(['PG', 'SF', 'C']) lineup = next(optimizer.optimize(1)) self.assertEqual(len(set([p.team for p in lineup.lineup])), 6) self.assertTrue(all(players[i] in lineup.lineup for i in [0, 8, 9])) optimizer.set_positions_for_same_team(['PG', 'SF', 'C', 'C']) lineup = next(optimizer.optimize(1)) self.assertEqual(len(set([p.team for p in lineup.lineup])), 5) self.assertTrue(all(players[i] in lineup.lineup for i in [0, 8, 9, 10])) # Test reset optimizer.set_positions_for_same_team(None) lineup = next(optimizer.optimize(1)) self.assertEqual(len(set([p.team for p in lineup.lineup])), 8)
def setUp(self): self.players = [ Player('1', '1', '1', ['P'], 'HOU', 3000, 10), Player('2', '2', '2', ['P'], 'BOS', 3000, 20), Player('3', '3', '3', ['C'], 'BOS', 3000, 30), Player('4', '4', '4', ['SS'], 'HOU', 3000, 30), Player('5', '5', '5', ['OF'], 'HOU', 3000, 30), Player('6', '6', '6', ['OF'], 'HOU', 3000, 30), Player('7', '7', '7', ['OF'], 'HOU', 3000, 30), Player('8', '8', '8', ['1B'], 'BOS', 3000, 30), Player('9', '9', '9', ['2B'], 'BOS', 3000, 5), Player('10', '10', '10', ['3B'], 'BOS', 3000, 5), Player('11', '11', '11', ['P'], 'ARI', 3000, 5), Player('12', '12', '12', ['SS'], 'NY', 3000, 5), Player('13', '13', '13', ['OF'], 'POR', 3000, 5), ] self.optimizer = get_optimizer(Site.FANDUEL, Sport.BASEBALL) self.optimizer.settings.min_teams = 3 self.optimizer.settings.max_from_one_team = 5 self.optimizer.load_players(self.players)
def setUp(self): self.players = [ Player('1', '1', '1', ['P'], 'HOU', 3000, 10), Player('2', '2', '2', ['P'], 'NY', 3000, 20), Player('3', '3', '3', ['C'], 'BOS', 3000, 30), Player('4', '4', '4', ['SS'], 'HOU', 3000, 30), Player('5', '5', '5', ['OF'], 'HOU', 3000, 30), Player('6', '6', '6', ['OF'], 'HOU', 3000, 30), Player('7', '7', '7', ['OF'], 'HOU', 3000, 30), Player('8', '8', '8', ['1B'], 'HOU', 3000, 30), Player('9', '9', '9', ['2B'], 'MIA', 3000, 5), Player('10', '10', '10', ['3B'], 'ARI', 3000, 5), Player('11', '11', '11', ['1B'], 'ARI', 3000, 5), ] self.optimizer = get_optimizer(Site.FANDUEL, Sport.BASEBALL) self.optimizer.load_players(self.players)
def setUp(self): self.players = [ Player('1', '1', '1', ['SP', 'RP'], 'HOU', 3000, 15, ), Player('2', '2', '2', ['SP', 'RP'], 'HOU', 3000, 15, ), Player('3', '3', '3', ['C'], 'HOU', 3000, 15, ), Player('4', '4', '4', ['SS'], 'HOU', 3000, 15, ), Player('5', '5', '5', ['OF'], 'MIL', 3000, 15, ), Player('6', '6', '6', ['OF'], 'MIL', 3000, 15, ), Player('7', '7', '7', ['OF'], 'MIL', 3000, 15, ), Player('8', '8', '8', ['1B'], 'BOS', 3000, 15, roster_order=1), Player('9', '9', '9', ['2B'], 'BOS', 3000, 20, roster_order=2), Player('10', '10', '10', ['3B'], 'BOS', 3000, 25, roster_order=3), Player('11', '11', '11', ['1B'], 'NY', 3000, 30, roster_order=4), Player('12', '12', '12', ['2B'], 'NY', 3000, 35, roster_order=5), Player('13', '13', '13', ['3B'], 'NY', 3000, 50, roster_order=6), ] self.players_dict = {player.id: player for player in self.players} self.positions = ['1B', '2B', '3B'] self.optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASEBALL) self.optimizer.load_players(self.players)
def setUp(self): first_game_info = GameInfo('HOU', 'BOS', datetime.now(), False) second_game_info = GameInfo('CHI', 'NY', datetime.now(), False) self.players = [ Player('1', '1', '1', ['SP', 'RP'], 'HOU', 3000, 15, game_info=first_game_info), Player('2', '2', '2', ['SP', 'RP'], 'BOS', 3000, 15, game_info=first_game_info), Player('3', '3', '3', ['C'], 'HOU', 3000, 15, game_info=first_game_info), Player('4', '4', '4', ['1B'], 'BOS', 3000, 15, game_info=first_game_info), Player('5', '5', '5', ['2B'], 'HOU', 3000, 15, game_info=first_game_info), Player('6', '6', '6', ['3B'], 'BOS', 3000, 15, game_info=first_game_info), Player('7', '7', '7', ['SS'], 'HOU', 3000, 15, game_info=first_game_info), Player('8', '8', '8', ['OF'], 'BOS', 3000, 15, game_info=first_game_info), Player('9', '9', '9', ['OF'], 'HOU', 3000, 15, game_info=first_game_info), Player('10', '10', '10', ['OF'], 'BOS', 3000, 15, game_info=first_game_info), Player('11', '11', '11', ['SP', 'RP'], 'CHI', 3000, 5, game_info=second_game_info), Player('12', '12', '12', ['SP', 'RP'], 'NY', 3000, 5, game_info=second_game_info), ] self.optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASEBALL) self.optimizer.load_players(self.players)
def test_min_exposure_error(self): self.lineup_optimizer.player_pool.extend_players([ Player('5', '5', '5', ['C'], '5', 1000, 0, min_exposure=1) ]) with self.assertRaises(LineupOptimizerException): list(self.lineup_optimizer.optimize(10))