Skip to content

Commit 09f2a33

Browse files
Only assert the filter criteria when at least one game returned
1 parent 8077cd6 commit 09f2a33

1 file changed

Lines changed: 44 additions & 35 deletions

File tree

tests/test_catalog.py

Lines changed: 44 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -54,101 +54,110 @@ def test_catalog_games_filter_n_actions(all_games):
5454
filtered_games = gbt.catalog.games(n_actions=2)
5555
assert isinstance(filtered_games, pd.DataFrame)
5656
assert len(filtered_games) < len(all_games)
57-
g = gbt.catalog.load(filtered_games.Game.iloc[0])
58-
assert len(g.actions) == 2
57+
if len(filtered_games) > 0:
58+
g = gbt.catalog.load(filtered_games.Game.iloc[0])
59+
assert len(g.actions) == 2
5960

6061

6162
def test_catalog_games_filter_n_contingencies(all_games):
6263
"""Test games() function can filter on length of gbt.Game attribute 'contingencies'"""
6364
filtered_games = gbt.catalog.games(n_contingencies=2)
6465
assert isinstance(filtered_games, pd.DataFrame)
6566
assert len(filtered_games) < len(all_games)
66-
g = gbt.catalog.load(filtered_games.Game.iloc[0])
67-
assert len(g.contingencies) == 2
67+
if len(filtered_games) > 0:
68+
g = gbt.catalog.load(filtered_games.Game.iloc[0])
69+
assert len(g.contingencies) == 2
6870

6971

7072
def test_catalog_games_filter_n_infosets(all_games):
7173
"""Test games() function can filter on length of gbt.Game attribute 'infosets'"""
7274
filtered_games = gbt.catalog.games(n_infosets=2)
7375
assert isinstance(filtered_games, pd.DataFrame)
7476
assert len(filtered_games) < len(all_games)
75-
g = gbt.catalog.load(filtered_games.Game.iloc[0])
76-
assert len(g.infosets) == 2
77+
if len(filtered_games) > 0:
78+
g = gbt.catalog.load(filtered_games.Game.iloc[0])
79+
assert len(g.infosets) == 2
7780

7881

7982
def test_catalog_games_filter_is_const_sum(all_games):
8083
"""Test games() function can filter on boolean gbt.Game attribute 'is_const_sum'"""
8184
filtered_games = gbt.catalog.games(is_const_sum=True)
8285
assert isinstance(filtered_games, pd.DataFrame)
8386
assert len(filtered_games) < len(all_games)
84-
g = gbt.catalog.load(filtered_games.Game.iloc[0])
85-
assert g.is_const_sum
87+
if len(filtered_games) > 0:
88+
g = gbt.catalog.load(filtered_games.Game.iloc[0])
89+
assert g.is_const_sum
8690

8791

88-
# TODO: Re-introduce this test when there are examples in the catalog without perfect recall
89-
# def test_catalog_games_filter_is_perfect_recall(all_games):
90-
# """Test games() function can filter on boolean gbt.Game attribute 'is_perfect_recall'"""
91-
# filtered_games = gbt.catalog.games(is_perfect_recall=True)
92-
# assert isinstance(filtered_games, pd.DataFrame)
93-
# assert len(filtered_games) < len(all_games)
94-
# g = gbt.catalog.load(filtered_games.Game.iloc[0])
95-
# assert g.is_perfect_recall
92+
def test_catalog_games_filter_is_not_perfect_recall(all_games):
93+
"""Test games() function can filter on boolean gbt.Game attribute 'is_perfect_recall'"""
94+
filtered_games = gbt.catalog.games(is_perfect_recall=False)
95+
assert isinstance(filtered_games, pd.DataFrame)
96+
assert len(filtered_games) < len(all_games)
97+
if len(filtered_games) > 0:
98+
g = gbt.catalog.load(filtered_games.Game.iloc[0])
99+
assert not g.is_perfect_recall
96100

97101

98-
# TODO: Re-introduce this test when there are examples in the catalog of normal form games
99-
# def test_catalog_games_filter_is_tree(all_games):
100-
# """Test games() function can filter on boolean gbt.Game attribute 'is_tree'"""
101-
# filtered_games = gbt.catalog.games(is_tree=True)
102-
# assert isinstance(filtered_games, pd.DataFrame)
103-
# assert len(filtered_games) < len(all_games)
104-
# g = gbt.catalog.load(filtered_games.Game.iloc[0])
105-
# assert g.is_tree
102+
def test_catalog_games_filter_is_not_tree(all_games):
103+
"""Test games() function can filter on boolean gbt.Game attribute 'is_tree'"""
104+
filtered_games = gbt.catalog.games(is_tree=False)
105+
assert isinstance(filtered_games, pd.DataFrame)
106+
assert len(filtered_games) < len(all_games)
107+
if len(filtered_games) > 0:
108+
g = gbt.catalog.load(filtered_games.Game.iloc[0])
109+
assert not g.is_tree
106110

107111

108112
def test_catalog_games_filter_min_payoff_and_max_payoff(all_games):
109113
"""Test games() function can filter on min and max payoff values"""
110114
filtered_games = gbt.catalog.games(min_payoff=0, max_payoff=10)
111115
assert isinstance(filtered_games, pd.DataFrame)
112116
assert len(filtered_games) < len(all_games)
113-
g = gbt.catalog.load(filtered_games.Game.iloc[0])
114-
assert g.min_payoff >= 0
115-
assert g.max_payoff <= 10
117+
if len(filtered_games) > 0:
118+
g = gbt.catalog.load(filtered_games.Game.iloc[0])
119+
assert g.min_payoff >= 0
120+
assert g.max_payoff <= 10
116121

117122

118123
def test_catalog_games_filter_n_nodes(all_games):
119124
"""Test games() function can filter on length of gbt.Game attribute 'nodes'"""
120125
filtered_games = gbt.catalog.games(n_nodes=5)
121126
assert isinstance(filtered_games, pd.DataFrame)
122127
assert len(filtered_games) < len(all_games)
123-
g = gbt.catalog.load(filtered_games.Game.iloc[0])
124-
assert len(g.nodes) == 5
128+
if len(filtered_games) > 0:
129+
g = gbt.catalog.load(filtered_games.Game.iloc[0])
130+
assert len(g.nodes) == 5
125131

126132

127133
def test_catalog_games_filter_n_outcomes(all_games):
128134
"""Test games() function can filter on length of gbt.Game attribute 'outcomes'"""
129135
filtered_games = gbt.catalog.games(n_outcomes=3)
130136
assert isinstance(filtered_games, pd.DataFrame)
131137
assert len(filtered_games) < len(all_games)
132-
g = gbt.catalog.load(filtered_games.Game.iloc[0])
133-
assert len(g.outcomes) == 3
138+
if len(filtered_games) > 0:
139+
g = gbt.catalog.load(filtered_games.Game.iloc[0])
140+
assert len(g.outcomes) == 3
134141

135142

136143
def test_catalog_games_filter_n_players(all_games):
137144
"""Test games() function can filter on length of gbt.Game attribute 'players'"""
138145
filtered_games = gbt.catalog.games(n_players=2)
139146
assert isinstance(filtered_games, pd.DataFrame)
140147
assert len(filtered_games) < len(all_games)
141-
g = gbt.catalog.load(filtered_games.Game.iloc[0])
142-
assert len(g.players) == 2
148+
if len(filtered_games) > 0:
149+
g = gbt.catalog.load(filtered_games.Game.iloc[0])
150+
assert len(g.players) == 2
143151

144152

145153
def test_catalog_games_filter_n_strategies(all_games):
146154
"""Test games() function can filter on length of gbt.Game attribute 'strategies'"""
147155
filtered_games = gbt.catalog.games(n_strategies=4)
148156
assert isinstance(filtered_games, pd.DataFrame)
149157
assert len(filtered_games) < len(all_games)
150-
g = gbt.catalog.load(filtered_games.Game.iloc[0])
151-
assert len(g.strategies) == 4
158+
if len(filtered_games) > 0:
159+
g = gbt.catalog.load(filtered_games.Game.iloc[0])
160+
assert len(g.strategies) == 4
152161

153162

154163
def test_catalog_games_filter_bad_filter():

0 commit comments

Comments
 (0)