6
6
from pydfs_lineup_optimizer .lineup_optimizer import LineupOptimizer
7
7
from pydfs_lineup_optimizer .settings import LineupPosition
8
8
from pydfs_lineup_optimizer .exceptions import LineupOptimizerException
9
- from pydfs_lineup_optimizer .utils import ratio
9
+ from pydfs_lineup_optimizer .utils import get_positions_for_optimizer
10
10
from pydfs_lineup_optimizer .sites .yahoo .settings import YahooFootballSettings
11
11
from .utils import create_players , load_players
12
12
13
13
14
14
class OptimizerMethodsTestCase (unittest .TestCase ):
15
- @classmethod
16
- def setUpClass (cls ):
17
- cls .players = load_players ()
18
-
19
15
def setUp (self ):
16
+ self .players = load_players ()
20
17
self .lineup_optimizer = get_optimizer (Site .DRAFTKINGS , Sport .BASKETBALL )
21
- self .lineup_optimizer .load_players (self .players [:])
22
-
23
- def test_optimizer_positions_processing (self ):
24
- class TestSettings (settings .BaseSettings ):
25
- positions = [
26
- LineupPosition ('1' , ('1' , )),
27
- LineupPosition ('2' , ('2' , )),
28
- LineupPosition ('3' , ('3' , )),
29
- LineupPosition ('23' , ('2' , '3' )),
30
- LineupPosition ('23' , ('2' , '3' )),
31
- LineupPosition ('all' , ('1' , '2' , '3' )),
32
- LineupPosition ('all' , ('1' , '2' , '3' )),
33
- ]
34
- optimizer = LineupOptimizer (TestSettings )
35
- positions = optimizer .get_positions_for_optimizer ()
36
- self .assertEqual (len (positions ), 7 )
37
- self .assertEqual (positions [('1' , )], 1 )
38
- self .assertEqual (positions [('2' , )], 1 )
39
- self .assertEqual (positions [('3' , )], 1 )
40
- self .assertEqual (positions [('2' , '3' )], 4 )
41
- self .assertEqual (positions [('1' , '2' )], 2 )
42
- self .assertEqual (positions [('1' , '3' )], 2 )
43
- self .assertEqual (positions [('1' , '2' , '3' )], 7 )
18
+ self .lineup_optimizer .load_players (self .players )
44
19
45
20
def test_add_player_to_lineup (self ):
46
- self .lineup_optimizer .reset_lineup ()
47
21
self .lineup_optimizer .add_player_to_lineup (self .players [0 ])
48
22
self .assertTrue (self .players [0 ] in self .lineup_optimizer .locked_players )
49
23
50
24
def test_same_players_in_lineup (self ):
51
- self .lineup_optimizer .reset_lineup ()
52
25
self .lineup_optimizer .add_player_to_lineup (self .players [0 ])
53
26
with self .assertRaises (LineupOptimizerException ):
54
27
self .lineup_optimizer .add_player_to_lineup (self .players [0 ])
55
28
56
29
def test_add_player_with_many_positions (self ):
57
30
players = create_players (['PG/SG' , 'PG' , 'PG' , 'PG' , 'PG/SG/SF' , 'SF' , 'SF' ])
58
31
self .lineup_optimizer .extend_players (players )
59
- self .lineup_optimizer .add_player_to_lineup (players [0 ])
60
- self .lineup_optimizer .add_player_to_lineup (players [1 ])
61
- self .lineup_optimizer .add_player_to_lineup (players [2 ])
62
- self .lineup_optimizer .add_player_to_lineup (players [3 ])
32
+ for player in players [:4 ]:
33
+ self .lineup_optimizer .add_player_to_lineup (player )
63
34
lineup = next (self .lineup_optimizer .optimize (1 ))
64
35
self .assertTrue (all ([p in lineup .players for p in players [:4 ]]))
65
36
self .lineup_optimizer .add_player_to_lineup (players [4 ])
@@ -81,25 +52,20 @@ def test_exact_number_of_players_for_position(self):
81
52
next (optimizer .optimize (1 ))
82
53
83
54
def test_adding_player_with_salary_bigger_than_budget (self ):
84
- self .lineup_optimizer .reset_lineup ()
85
- player = Player (1 , '1' , '1' , ['PG' ], 'DEN' , 100000 , 2 )
55
+ player = Player ('1' , '1' , '1' , ['PG' ], 'DEN' , 100000 , 2 )
86
56
with self .assertRaises (LineupOptimizerException ):
87
57
self .lineup_optimizer .add_player_to_lineup (player )
88
58
89
59
def test_adding_player_to_formed_position (self ):
90
- self .lineup_optimizer .reset_lineup ()
91
- players = []
92
- for i in '1234' :
93
- players .append (Player (int (i ), i , i , ['PG' ], 'DEN' , 10 , 2 ))
60
+ players = create_players (['PG' ] * 4 )
94
61
for i in range (3 ):
95
62
self .lineup_optimizer .add_player_to_lineup (players [i ])
96
63
with self .assertRaises (LineupOptimizerException ):
97
64
self .lineup_optimizer .add_player_to_lineup (players [3 ])
98
65
99
66
def test_remove_player_from_lineup (self ):
100
67
optimizer = self .lineup_optimizer
101
- optimizer .reset_lineup ()
102
- player = Player (1 , 'P' , 'P' , ['PG' ], 'DEN' , 10 , 2 )
68
+ player = Player ('1' , 'P' , 'P' , ['PG' ], 'DEN' , 10 , 2 )
103
69
optimizer .extend_players ([player ])
104
70
optimizer .add_player_to_lineup (player )
105
71
optimizer .remove_player_from_lineup (player )
@@ -108,11 +74,7 @@ def test_remove_player_from_lineup(self):
108
74
optimizer .remove_player_from_lineup (player )
109
75
110
76
def test_lineup_with_max_players (self ):
111
- self .lineup_optimizer .reset_lineup ()
112
- players = [Player (1 , 'P1' , 'P1' , ['PG' ], 'DEN' , 10 , 2 ), Player (5 , 'P5' , 'P5' , ['SG' ], 'DEN' , 10 , 2 ),
113
- Player (2 , 'P2' , 'P2' , ['SF' ], 'DEN' , 10 , 2 ), Player (6 , 'P6' , 'P6' , ['PF' ], 'DEN' , 10 , 2 ),
114
- Player (3 , 'P3' , 'P3' , ['C' ], 'DEN' , 10 , 2 ), Player (7 , 'P7' , 'P7' , ['PG' ], 'DEN' , 10 , 2 ),
115
- Player (4 , 'P4' , 'P4' , ['PF' ], 'DEN' , 10 , 2 ), Player (8 , 'P8' , 'P8' , ['PG' ], 'DEN' , 10 , 2 )]
77
+ players = create_players (['PG' , 'SG' , 'SF' , 'PF' , 'C' , 'PG' , 'SF' , 'C' ])
116
78
self .lineup_optimizer .extend_players (players )
117
79
for player in players :
118
80
self .lineup_optimizer .add_player_to_lineup (player )
@@ -124,38 +86,3 @@ def test_get_optimizer(self):
124
86
self .assertEqual (optimizer ._settings , YahooFootballSettings )
125
87
with self .assertRaises (NotImplementedError ):
126
88
get_optimizer (Site .DRAFTKINGS , 'Some sport' )
127
-
128
- def test_ratio (self ):
129
- threshold = 0.8
130
- self .assertTrue (ratio ('Blake Griffin' , 'Blake Griffin' ) >= threshold )
131
- self .assertTrue (ratio ('griffin' , 'Blake Griffin' ) >= threshold )
132
- self .assertTrue (ratio ('grifin' , 'Blake Griffin' ) >= threshold )
133
- self .assertFalse (ratio ('Hood' , 'Blake Griffin' ) >= threshold )
134
-
135
- def test_lineup_building (self ):
136
- optimizer = get_optimizer (Site .DRAFTKINGS , Sport .BASKETBALL )
137
- optimizer ._build_lineup (create_players (['PG' , 'SG' , 'SF' , 'PF' , 'C' , 'SG' , 'SF' , 'SF' ]))
138
- optimizer ._build_lineup (create_players (['PG/SG' , 'SG/SF' , 'SF/PF' , 'PF/C' , 'C/PG' , 'SG/SF' , 'SF/PF' , 'SF/PF' ]))
139
- optimizer ._build_lineup (create_players (['PG' , 'PG' , 'C' , 'C' , 'SG/SF' , 'SF/PF' , 'SF/PF' , 'PG/SG' ]))
140
- optimizer ._build_lineup (create_players (['C' , 'SG/SF' , 'PG/SG' , 'SG/SF' , 'SG/SF' , 'C' , 'SF/PF' , 'PG' ]))
141
- optimizer ._build_lineup (create_players (['SG' , 'PF' , 'C' , 'C' , 'PF' , 'PG/SF' , 'PG/SG' , 'PG/SG' ]))
142
- optimizer ._build_lineup (create_players (['PG' , 'PG/SG' , 'PG/SG/SF' , 'PG/SF/PF' , 'PG/PF/C' , 'PG' , 'PG/SF/PF' ,
143
- 'PG/SG' ]))
144
- with self .assertRaises (LineupOptimizerException ):
145
- optimizer ._build_lineup (create_players (['PG' , 'SG' , 'SF' , 'PF' , 'C' , 'SG' , 'C' , 'C' ]))
146
- optimizer = get_optimizer (Site .DRAFTKINGS , Sport .FOOTBALL )
147
- optimizer ._build_lineup (create_players (['QB' , 'WR' , 'WR' , 'WR' , 'WR' , 'RB' , 'RB' , 'TE' , 'DST' ]))
148
- with self .assertRaises (LineupOptimizerException ):
149
- optimizer ._build_lineup (create_players (['QB' , 'WR' , 'WR' , 'WR' , 'WR' , 'WR' , 'RB' , 'RB' , 'TE' ]))
150
- optimizer = get_optimizer (Site .DRAFTKINGS , Sport .HOCKEY )
151
- optimizer ._build_lineup (create_players (['LW' , 'RW' , 'LW' , 'RW' , 'C' , 'C' , 'D' , 'D' , 'G' ]))
152
- with self .assertRaises (LineupOptimizerException ):
153
- optimizer ._build_lineup (create_players (['LW' , 'RW' , 'LW' , 'RW' , 'LW' , 'C' , 'D' , 'D' , 'G' ]))
154
- optimizer = get_optimizer (Site .DRAFTKINGS , Sport .BASEBALL )
155
- optimizer ._build_lineup (create_players (['SP' , 'SP' , 'C' , '1B' , '2B' , '3B' , 'SS' , 'OF' , 'OF' , 'OF' ]))
156
- with self .assertRaises (LineupOptimizerException ):
157
- optimizer ._build_lineup (create_players (['P' , 'C' , 'C' , '1B' , '2B' , '3B' , 'SS' , 'OF' , 'OF' , 'OF' ]))
158
- optimizer = get_optimizer (Site .FANTASY_DRAFT , Sport .BASKETBALL )
159
- optimizer ._build_lineup (create_players (['PG' , 'PG' , 'PG' , 'SF' , 'SF' , 'SF' , 'SF' , 'SF' ]))
160
- with self .assertRaises (LineupOptimizerException ):
161
- optimizer ._build_lineup (create_players (['PG' , 'PG' , 'SF' , 'SF' , 'SF' , 'SF' , 'SF' , 'SF' ]))
0 commit comments