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_game_no_raise_player_A_starts(self): world = WorldWatten() world.LOG.setLevel(DEBUG) world.init_world_to_state(1, -1, 0, 0, [14, 30, 2, 28, 11], [4, 23, 31, 7, 22], [], 0, 0, 2, False, False, None, 21, 26, None, None) # [40, 45, 29, 12, 28, 13, 26, 0, 33, 45, # 3, 25, 6, 16, 30, 14, 13, 1, 38, 43, 13, 5, 32, 3, 21, 27, 33, 42, 0, # 4, 30, 31, 23, 7, 29, 1, 25, 9, 33, 42, 9, 30, 14, 32, 7, 25, 34, 42, # 29, 7, 15, 19, 11, 17, 20, 27, 0, 2, 35, 44, 31, 4, 28, 1, 12, 3, 33, # 45, 24, 25, 7, 11, 14, 18, 37, 45, 2, 27, 3, 0, 8, 10, 6, 26, 33, 43, # 21, 22, 6, 10, 24, 14, 8, 16, 33, 42, 3, 0, 29, 17, 13, 31] world_copy = world.deepcopy() ######## MOVE ######## valid_moves = world.get_valid_moves() self.assertEqual(valid_moves, [33, 34, 35, 36, 37, 38, 39, 40, 41, 46]) self._compare_worlds(world, world_copy) outcome, next_player = world.act(36) self.assertEqual(outcome, "continue") self.assertEqual(next_player, -1) world_copy.rank = 3 world_copy.current_player = -1 self._compare_worlds(world, world_copy) ######## MOVE ######## valid_moves = world.get_valid_moves() self.assertEqual(valid_moves, [42, 43, 44, 45, 46]) self._compare_worlds(world, world_copy) outcome, next_player = world.act(45) self.assertEqual(outcome, "continue") self.assertEqual(next_player, 1) world_copy.suit = 3 world_copy.current_player = 1 self._compare_worlds(world, world_copy) ######## MOVE ######## valid_moves = world.get_valid_moves() self.assertEqual(valid_moves, [14, 30, 2, 28, 11, 46]) self._compare_worlds(world, world_copy) outcome, next_player = world.act(30) self.assertEqual(outcome, "continue") self.assertEqual(next_player, -1) world_copy.player_A_hand = [14, 2, 28, 11] world_copy.played_cards = [30] world_copy.current_player = -1 self._compare_worlds(world, world_copy) ######## MOVE ######## valid_moves = world.get_valid_moves() self.assertEqual(valid_moves, [31, 46]) self._compare_worlds(world, world_copy) outcome, next_player = world.act(31) self.assertEqual(outcome, "continue") self.assertEqual(next_player, -1) world_copy.current_game_player_B_score = 1 world_copy.player_B_hand = [4, 23, 7, 22] world_copy.played_cards = [30, 31] self._compare_worlds(world, world_copy) ######## MOVE ######## valid_moves = world.get_valid_moves() self.assertEqual(valid_moves, [4, 23, 7, 22, 46]) self._compare_worlds(world, world_copy) outcome, next_player = world.act(22) self.assertEqual(outcome, "continue") self.assertEqual(next_player, 1) world_copy.player_B_hand = [4, 23, 7] world_copy.played_cards = [30, 31, 22] world_copy.current_player = 1 self._compare_worlds(world, world_copy) ######## MOVE ######## valid_moves = world.get_valid_moves() self.assertEqual(valid_moves, [14, 2, 28, 11, 46]) self._compare_worlds(world, world_copy) outcome, next_player = world.act(2) self.assertEqual(outcome, "continue") self.assertEqual(next_player, -1) world_copy.player_A_hand = [14, 28, 11] world_copy.current_game_player_B_score = 2 world_copy.played_cards = [30, 31, 22, 2] world_copy.current_player = -1 self._compare_worlds(world, world_copy) ######## MOVE ######## valid_moves = world.get_valid_moves() self.assertEqual(valid_moves, [4, 23, 7, 46]) self._compare_worlds(world, world_copy) outcome, next_player = world.act(23) self.assertEqual(outcome, "continue") self.assertEqual(next_player, 1) world_copy.player_B_hand = [4, 7] world_copy.played_cards = [30, 31, 22, 2, 23] world_copy.current_player = 1 self._compare_worlds(world, world_copy) ######## MOVE ######## valid_moves = world.get_valid_moves() self.assertEqual(valid_moves, [14, 28, 11, 46]) self._compare_worlds(world, world_copy) outcome, next_player = world.act(14) self.assertEqual(outcome, "end") self.assertEqual(next_player, -1) world.player_A_hand = [20, 21, 22, 23, 24] world.player_B_hand = [25, 26, 27, 28, 29] world.first_card_deck = 4 world.last_card_deck = 5 world.deck = [8, 9, 10] world_copy.player_A_hand = [20, 21, 22, 23, 24] world_copy.player_B_hand = [25, 26, 27, 28, 29] world_copy.first_card_deck = 4 world_copy.last_card_deck = 5 world_copy.deck = [8, 9, 10] world_copy.current_player = -1 world_copy.distributing_cards_player = 1 world_copy.player_B_score = 2 world_copy.played_cards = [] world_copy.current_game_player_A_score = 0 world_copy.current_game_player_B_score = 0 world_copy.rank = None world_copy.suit = None self._compare_worlds(world, world_copy)