4
4
"""
5
5
import numpy as np
6
6
from scipy .special import comb
7
- from numpy .testing import assert_array_equal
8
- from nose .tools import eq_ , ok_ , raises
7
+ from numpy .testing import assert_array_equal , assert_ , assert_raises
9
8
from quantecon .gridtools import num_compositions
10
9
from quantecon .game_theory import pure_nash_brute
11
10
15
14
16
15
17
16
class TestBlottoGame :
18
- def setUp (self ):
17
+ def setup (self ):
19
18
self .h , self .t = 4 , 3
20
19
rho = 0.5
21
20
self .g = blotto_game (self .h , self .t , rho )
22
21
23
22
def test_size (self ):
24
23
n = num_compositions (self .h , self .t )
25
- eq_ (self .g .nums_actions , (n , n ))
24
+ assert_ (self .g .nums_actions == (n , n ))
26
25
27
26
def test_constant_diagonal (self ):
28
27
for i in range (self .g .N ):
29
28
diag = self .g .payoff_arrays [i ].diagonal ()
30
- ok_ ((diag == diag [0 ]).all ())
29
+ assert_ ((diag == diag [0 ]).all ())
31
30
32
31
def test_seed (self ):
33
32
seed = 0
@@ -39,21 +38,23 @@ def test_seed(self):
39
38
40
39
41
40
class TestRankingGame :
42
- def setUp (self ):
41
+ def setup (self ):
43
42
self .n = 100
44
43
self .g = ranking_game (self .n )
45
44
46
45
def test_size (self ):
47
- eq_ (self .g .nums_actions , (self .n , self .n ))
46
+ assert_ (self .g .nums_actions == (self .n , self .n ))
48
47
49
48
def test_weakly_decreasing_row_wise_payoffs (self ):
50
49
for payoff_array in self .g .payoff_arrays :
51
- ok_ ((payoff_array [:, 1 :- 1 ] >= payoff_array [:, 2 :]).all ())
50
+ assert_ ((payoff_array [:, 1 :- 1 ] >= payoff_array [:, 2 :]).all ())
52
51
53
52
def test_elements_first_row (self ):
54
- eq_ (self .g .payoff_arrays [0 ][0 , 0 ] + self .g .payoff_arrays [1 ][0 , 0 ], 1. )
53
+ assert_ (
54
+ self .g .payoff_arrays [0 ][0 , 0 ] + self .g .payoff_arrays [1 ][0 , 0 ] == 1.
55
+ )
55
56
for payoff_array in self .g .payoff_arrays :
56
- ok_ (np .isin (payoff_array [0 , :], [0 , 1 , 0.5 ]).all ())
57
+ assert_ (np .isin (payoff_array [0 , :], [0 , 1 , 0.5 ]).all ())
57
58
58
59
def test_seed (self ):
59
60
seed = 0
@@ -84,53 +85,52 @@ def test_sgc_game():
84
85
85
86
86
87
class TestTournamentGame :
87
- def setUp (self ):
88
+ def setup (self ):
88
89
self .n = 5
89
90
self .k = 3
90
91
self .m = comb (self .n , self .k , exact = True )
91
92
self .g = tournament_game (self .n , self .k )
92
93
93
94
def test_size (self ):
94
- eq_ (self .g .nums_actions , (self .n , self .m ))
95
+ assert_ (self .g .nums_actions == (self .n , self .m ))
95
96
96
97
def test_payoff_values (self ):
97
98
possible_values = [0 , 1 ]
98
99
for payoff_array in self .g .payoff_arrays :
99
- ok_ (np .isin (payoff_array , possible_values ).all ())
100
+ assert_ (np .isin (payoff_array , possible_values ).all ())
100
101
101
102
max_num_dominated_subsets = \
102
103
sum ([comb (i , self .k , exact = True ) for i in range (self .n )])
103
- ok_ (self .g .payoff_arrays [0 ].sum () <= max_num_dominated_subsets )
104
- ok_ ((self .g .payoff_arrays [1 ].sum (axis = 1 ) == self .k ).all ())
104
+ assert_ (self .g .payoff_arrays [0 ].sum () <= max_num_dominated_subsets )
105
+ assert_ ((self .g .payoff_arrays [1 ].sum (axis = 1 ) == self .k ).all ())
105
106
106
107
def test_seed (self ):
107
108
seed = 0
108
109
g0 = tournament_game (self .n , self .k , random_state = seed )
109
110
g1 = tournament_game (self .n , self .k , random_state = seed )
110
111
assert_array_equal (g1 .payoff_profile_array , g0 .payoff_profile_array )
111
112
112
- @raises (ValueError )
113
113
def test_raises_value_error_too_large_inputs (self ):
114
114
n , k = 100 , 50
115
- tournament_game ( n , k )
115
+ assert_raises ( ValueError , tournament_game , n , k )
116
116
117
117
118
118
class TestUnitVectorGame :
119
- def setUp (self ):
119
+ def setup (self ):
120
120
self .n = 100
121
121
self .g = unit_vector_game (self .n )
122
122
123
123
def test_size (self ):
124
- eq_ (self .g .nums_actions , (self .n , self .n ))
124
+ assert_ (self .g .nums_actions == (self .n , self .n ))
125
125
126
126
def test_payoff_values (self ):
127
127
# Player 0
128
- ok_ ((np .sum (self .g .players [0 ].payoff_array , axis = 0 ) == 1 ).all ())
128
+ assert_ ((np .sum (self .g .players [0 ].payoff_array , axis = 0 ) == 1 ).all ())
129
129
130
130
def test_avoid_pure_nash (self ):
131
131
NEs = pure_nash_brute (unit_vector_game (self .n , avoid_pure_nash = True ),
132
132
tol = 0 )
133
- eq_ (len (NEs ), 0 )
133
+ assert_ (len (NEs ) == 0 )
134
134
135
135
def test_seed (self ):
136
136
seed = 0
@@ -144,12 +144,11 @@ def test_redraw(self):
144
144
n = 2
145
145
g = unit_vector_game (n , avoid_pure_nash = True , random_state = seed )
146
146
NEs = pure_nash_brute (g , tol = 0 )
147
- eq_ (len (NEs ), 0 )
147
+ assert_ (len (NEs ) == 0 )
148
148
149
- @raises (ValueError )
150
149
def test_raises_value_error_avoid_pure_nash_n_1 (self ):
151
150
n = 1
152
- unit_vector_game ( n , avoid_pure_nash = True )
151
+ assert_raises ( ValueError , unit_vector_game , n , avoid_pure_nash = True )
153
152
154
153
155
154
def test_payoff_range ():
@@ -162,13 +161,3 @@ def test_payoff_range():
162
161
g = func (** kwargs )
163
162
for payoff_array in g .payoff_arrays :
164
163
assert_array_equal (np .clip (payoff_array , 0 , 1 ), payoff_array )
165
-
166
-
167
- if __name__ == '__main__' :
168
- import sys
169
- import nose
170
-
171
- argv = sys .argv [:]
172
- argv .append ('--verbose' )
173
- argv .append ('--nocapture' )
174
- nose .main (argv = argv , defaultTest = __file__ )
0 commit comments