def test_last_hand_raise_valid_8_cards(self): # player -1 raised world = WorldWatten() world.played_cards = [0, 1, 2, 3, 4, 5, 6, 7] world.rank = 3 world.suit = 2 world.current_player = -1 world.player_B_hand = [watten.get_id(4, 1)] world.player_A_hand = [watten.get_id(5, 0)] result = world._last_hand_raise_valid() self.assertFalse(result) world = WorldWatten() world.played_cards = [0, 1, 2, 3, 4, 5, 6, 7] world.rank = 3 world.suit = 2 world.current_player = -1 world.player_B_hand = [watten.get_id(4, 2)] world.player_A_hand = [watten.get_id(5, 0)] result = world._last_hand_raise_valid() self.assertTrue(result) # player 1 raised world = WorldWatten() world.played_cards = [0, 1, 2, 3, 4, 5, 6, 7] world.rank = 3 world.suit = 2 world.current_player = 1 world.player_B_hand = [watten.get_id(4, 1)] world.player_A_hand = [watten.get_id(5, 0)] result = world._last_hand_raise_valid() self.assertFalse(result) world = WorldWatten() world.played_cards = [0, 1, 2, 3, 4, 5, 6, 7] world.rank = 3 world.suit = 2 world.current_player = 1 world.player_B_hand = [watten.get_id(4, 2)] world.player_A_hand = [watten.get_id(5, 2)] result = world._last_hand_raise_valid() self.assertTrue(result)
def test_get_last_played_card(self): world = WorldWatten() world.played_cards = [4, 3, 2] last_played_card = world._get_last_played_card() self.assertEqual(last_played_card, 2) world = WorldWatten() world.played_cards = [] last_played_card = world._get_last_played_card() self.assertEqual(last_played_card, None) world = WorldWatten() world.played_cards = [123] last_played_card = world._get_last_played_card() self.assertEqual(last_played_card, 123) world = WorldWatten() world.played_cards = [2, 8] last_played_card = world._get_last_played_card() self.assertEqual(last_played_card, 8)
def test_last_hand_raise_valid_error(self): world = WorldWatten() world.played_cards = [0, 1, 2, 3, 4] world.rank = 3 world.suit = 2 world.current_player = 1 world.player_B_hand = [watten.get_id(4, 1)] world.player_A_hand = [watten.get_id(5, 0)] self.assertRaises(InconsistentStateError, world._last_hand_raise_valid)
def test_get_valid_moves_played_suit_only_rechte(self): world = WorldWatten() # suit has been played world.played_cards = [] world.rank = 4 world.suit = 3 world.played_cards.append(watten.get_id(3, 3)) world.current_player = 1 world.player_A_hand = [ watten.get_id(1, 2), watten.get_id(1, 0), watten.get_id(3, 0), watten.get_id(4, 3), watten.get_id(2, 2) ] valid_moves = world.get_valid_moves() self.assertEqual(valid_moves, [17, 1, 3, 28, 18, 46])
def test_observe(self): world = WorldWatten() world.first_card_deck = 32 world.last_card_deck = 32 world.player_A_hand = [0, 1, 2, 3, 4] world.player_B_hand = [31, 30, 29, 28, 27] world.rank = 8 world.suit = 0 world.played_cards = [10, 11, 12, 13, 14] world.current_game_player_A_score = 1 world.current_game_player_B_score = 2 world.player_A_score = 14 world.player_B_score = 1 world.is_last_move_raise = True world.is_last_move_accepted_raise = True world.is_last_hand_raise_valid = False world.current_game_prize = 15 expected_player_A = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 9 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 19 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 29 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, # 39 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 49 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 59 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, # 69 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 79 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 89 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 99 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, # 109 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 119 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, # 129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 139 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 149 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, # 159 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 169 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, # 179 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, # 189 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, # 199 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 209 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, # 219 0, 0, 0, 0, 0, 1 ] # 225 expected_player_B = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 9 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 19 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 29 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, # 39 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 49 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 59 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, # 69 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 79 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 89 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, # 99 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, # 109 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 119 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, # 129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 139 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 149 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, # 159 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 169 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, # 179 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, # 189 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, # 199 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, # 209 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, # 219 0, 0, 0, 0, 0, 1 ] # 225 observation_player_A = world.observe(1) observation_player_B = world.observe(-1) np.testing.assert_array_equal( observation_player_A, np.array(expected_player_A).reshape((226, 1))) np.testing.assert_array_equal( observation_player_B, np.array(expected_player_B).reshape((226, 1)))
def test_last_hand_raise_valid_9_cards(self): # trumpf # player -1 raised world = WorldWatten() world.played_cards = [0, 1, 2, 3, 4, 5, 6, 7, 8] world.rank = 3 world.suit = 2 world.current_player = -1 world.player_B_hand = [watten.get_id(4, 2)] world.player_A_hand = [watten.get_id(5, 0)] result = world._last_hand_raise_valid() self.assertTrue(result) # player 1 raised world = WorldWatten() world.played_cards = [0, 1, 2, 3, 4, 5, 6, 7, 8] world.rank = 3 world.suit = 2 world.current_player = 1 world.player_B_hand = [watten.get_id(4, 2)] world.player_A_hand = [watten.get_id(5, 2)] result = world._last_hand_raise_valid() self.assertTrue(result) # same suit # player 1 raised world = WorldWatten() world.played_cards = [0, 1, 2, 3, 4, 5, 6, 7, watten.get_id(1, 0)] world.rank = 3 world.suit = 2 world.current_player = 1 world.player_B_hand = [] world.player_A_hand = [watten.get_id(4, 0)] result = world._last_hand_raise_valid() self.assertTrue(result) # player -1 raised world = WorldWatten() world.played_cards = [0, 1, 2, 3, 4, 5, 6, 7, watten.get_id(1, 0)] world.rank = 3 world.suit = 2 world.current_player = -1 world.player_B_hand = [watten.get_id(4, 0)] world.player_A_hand = [] result = world._last_hand_raise_valid() self.assertTrue(result) # card beats the played one # player 1 raised world = WorldWatten() world.played_cards = [0, 1, 2, 3, 4, 5, 6, 7, watten.get_id(1, 0)] world.rank = 3 world.suit = 2 world.current_player = 1 world.player_B_hand = [] world.player_A_hand = [watten.get_id(3, 2)] result = world._last_hand_raise_valid() self.assertTrue(result) # player -1 raised world = WorldWatten() world.played_cards = [0, 1, 2, 3, 4, 5, 6, 7, watten.get_id(1, 0)] world.rank = 3 world.suit = 2 world.current_player = -1 world.player_B_hand = [watten.get_id(3, 2)] world.player_A_hand = [] result = world._last_hand_raise_valid() self.assertTrue(result) # raise was not legal # player 1 raised world = WorldWatten() world.played_cards = [0, 1, 2, 3, 4, 5, 6, 7, watten.get_id(6, 3)] world.rank = 3 world.suit = 2 world.current_player = 1 world.player_B_hand = [] world.player_A_hand = [watten.get_id(1, 0)] result = world._last_hand_raise_valid() self.assertFalse(result) # player -1 raised world = WorldWatten() world.played_cards = [0, 1, 2, 3, 4, 5, 6, 7, watten.get_id(6, 3)] world.rank = 3 world.suit = 2 world.current_player = -1 world.player_B_hand = [watten.get_id(1, 0)] world.player_A_hand = [] result = world._last_hand_raise_valid() self.assertFalse(result)