X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=test%2Fsymmetric_linear_game_test.py;h=6327592b1268429e53cc54df757b275b5e894ad5;hb=8371d92c42c7faded26d8ef327129ad6d8c72d73;hp=887831a44a68aeae7e8b25514154cfbe53f0309c;hpb=d90b0b66e1983af5268fb1784907004e12b48dfa;p=dunshire.git diff --git a/test/symmetric_linear_game_test.py b/test/symmetric_linear_game_test.py index 887831a..6327592 100644 --- a/test/symmetric_linear_game_test.py +++ b/test/symmetric_linear_game_test.py @@ -42,12 +42,19 @@ class SymmetricLinearGameTest(TestCase): # pylint: disable=R0904 self.assertTrue(abs(first - second) < options.ABS_TOL*modifier) - def test_solutions_dont_change(self): + def test_solutions_dont_change_orthant(self): + G = random_orthant_game() + self.assert_solutions_dont_change(G) + + def test_solutions_dont_change_icecream(self): + G = random_icecream_game() + self.assert_solutions_dont_change(G) + + def assert_solutions_dont_change(self, G): """ If we solve the same problem twice, we should get the same answer both times. """ - G = random_orthant_game() soln1 = G.solution() soln2 = G.solution() p1_diff = norm(soln1.player1_optimal() - soln2.player1_optimal()) @@ -61,6 +68,54 @@ class SymmetricLinearGameTest(TestCase): # pylint: disable=R0904 self.assertTrue(p1_close and p2_close and gv_close) + def assert_player1_start_valid(self, G): + x = G.player1_start()['x'] + s = G.player1_start()['s'] + s1 = s[0:G.dimension()] + s2 = s[G.dimension():] + self.assert_within_tol(norm(G.A()*x - G.b()), 0) + self.assertTrue((s1,s2) in G.C()) + + + def test_player1_start_valid_orthant(self): + """ + Ensure that player one's starting point is in the orthant. + """ + G = random_orthant_game() + self.assert_player1_start_valid(G) + + + def test_player1_start_valid_icecream(self): + """ + Ensure that player one's starting point is in the ice-cream cone. + """ + G = random_icecream_game() + self.assert_player1_start_valid(G) + + + def assert_player2_start_valid(self, G): + z = G.player2_start()['z'] + z1 = z[0:G.dimension()] + z2 = z[G.dimension():] + self.assertTrue((z1,z2) in G.C()) + + + def test_player2_start_valid_orthant(self): + """ + Ensure that player two's starting point is in the orthant. + """ + G = random_orthant_game() + self.assert_player2_start_valid(G) + + + def test_player2_start_valid_icecream(self): + """ + Ensure that player two's starting point is in the ice-cream cone. + """ + G = random_icecream_game() + self.assert_player2_start_valid(G) + + def test_condition_lower_bound(self): """ Ensure that the condition number of a game is greater than or