def test_last_hand_raise_valid_8_cards(self): # player -1 raised world = WorldTotalWatten() 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 = [total_watten.get_id(4, 1)] world.player_A_hand = [total_watten.get_id(5, 0)] result = world._last_hand_raise_valid() self.assertFalse(result) world = WorldTotalWatten() 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 = [total_watten.get_id(4, 2)] world.player_A_hand = [total_watten.get_id(5, 0)] result = world._last_hand_raise_valid() self.assertTrue(result) # player 1 raised world = WorldTotalWatten() 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 = [total_watten.get_id(4, 1)] world.player_A_hand = [total_watten.get_id(5, 0)] result = world._last_hand_raise_valid() self.assertFalse(result) world = WorldTotalWatten() 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 = [total_watten.get_id(4, 2)] world.player_A_hand = [total_watten.get_id(5, 2)] result = world._last_hand_raise_valid() self.assertTrue(result)
def test_assign_points_single_hand_ended(self): # current player: 1 world = WorldTotalWatten() world.current_player = 1 world.current_game_player_A_score = 1 world.current_game_player_B_score = 2 world._assign_points_move(True) self.assertEqual(world.current_game_player_A_score, 2) self.assertEqual(world.current_game_player_B_score, 2) world = WorldTotalWatten() world.current_player = 1 world.current_game_player_A_score = 1 world.current_game_player_B_score = 2 world._assign_points_move(False) self.assertEqual(world.current_game_player_A_score, 1) self.assertEqual(world.current_game_player_B_score, 3) # current player: 2 world = WorldTotalWatten() world.current_player = -1 world.current_game_player_A_score = 1 world.current_game_player_B_score = 2 world._assign_points_move(True) self.assertEqual(world.current_game_player_A_score, 1) self.assertEqual(world.current_game_player_B_score, 3) world = WorldTotalWatten() world.current_player = -1 world.current_game_player_A_score = 1 world.current_game_player_B_score = 2 world._assign_points_move(False) self.assertEqual(world.current_game_player_A_score, 2) self.assertEqual(world.current_game_player_B_score, 2)
def test_get_current_player_hand(self): world = WorldTotalWatten() world.player_A_hand = [1, 2, 3] world.player_B_hand = [4, 5, 6] world.current_player = 1 result = world._get_current_player_hand() self.assertEqual(result, [1, 2, 3]) world = WorldTotalWatten() world.player_A_hand = [1, 2, 3] world.player_B_hand = [4, 5, 6] world.current_player = -1 result = world._get_current_player_hand() self.assertEqual(result, [4, 5, 6])
def test_last_hand_raise_valid_error(self): world = WorldTotalWatten() world.played_cards = [0, 1, 2, 3, 4] world.rank = 3 world.suit = 2 world.current_player = 1 world.player_B_hand = [total_watten.get_id(4, 1)] world.player_A_hand = [total_watten.get_id(5, 0)] self.assertRaises(InconsistentStateError, world._last_hand_raise_valid)
def test_observe_after_raise(self): world = WorldTotalWatten() world.rank = 3 world.suit = 1 world.current_player = 1 result, next_player = world.act(0, self.agent) result, next_player = world.act(1, self.agent) world.observe(next_player, self.agent)
def test_best_move_declares_rank_2(self): world = WorldTotalWatten() world.current_player = -1 result, next_player = world.act(0, self.agent) self.assertEqual(result, "continue") self.assertEqual(next_player, 1) self.assertIsNotNone(world.rank) self.assertEqual(world.is_last_move_raise, False) self.assertEqual(world.is_last_move_accepted_raise, False)
def test_act_accept_raise(self): world = WorldTotalWatten() world.current_player = 1 world.is_last_move_accepted_raise = False world.is_last_move_raise = True result, next_player = world.act(3, self.agent) self.assertEqual(result, "continue") self.assertEqual(next_player, -1) self.assertEqual(world.is_last_move_raise, False) self.assertEqual(world.is_last_move_accepted_raise, True)
def test_best_move_move_plays_card_2(self): world = WorldTotalWatten() world.current_player = -1 world.rank = 3 world.suit = 1 result, next_player = world.act(0, self.agent) self.assertEqual(result, "continue") self.assertEqual(next_player, 1) self.assertEqual(len(world.player_A_hand), 5) self.assertEqual(len(world.player_B_hand), 4)
def test_best_move_declares_suit_1(self): world = WorldTotalWatten() world.current_player = 1 world.rank = 3 world.is_last_move_accepted_raise = True world.is_last_move_raise = False result, next_player = world.act(0, self.agent) self.assertEqual(result, "continue") self.assertEqual(next_player, -1) self.assertIsNotNone(world.suit) self.assertEqual(world.is_last_move_raise, False) self.assertEqual(world.is_last_move_accepted_raise, False)
def test_act_raise_points(self): world = WorldTotalWatten() world.current_player = -1 world.current_game_prize = 4 world.is_last_move_raise = False world.is_last_move_accepted_raise = False result, next_player = world.act(1, self.agent) self.assertEqual(result, "continue") self.assertEqual(next_player, 1) self.assertEqual(world.current_player, 1) self.assertEqual(world.current_game_prize, 5) self.assertEqual(world.is_last_move_raise, True) self.assertEqual(world.is_last_move_accepted_raise, False)
def test_act_fold(self): world = WorldTotalWatten() world.player_A_score = 4 world.player_B_score = 7 world.current_game_prize = 3 world.current_player = 1 world.distributing_cards_player = -1 world.is_last_move_raise = True result, next_player = world.act(total_watten.moves["fold_hand"], self.agent) self.assertEqual("end", result) self.assertEqual(7 + 2, world.player_B_score) self.assertEqual(-1, world.current_player) self.assertEqual(-1, next_player)
def test_assign_points_fold(self): # player -1 fold world = WorldTotalWatten() world.current_player = -1 world.current_game_prize = 5 world.player_A_score = 3 world.player_B_score = 8 world.is_last_hand_raise_valid = None world._assign_points_fold() self.assertEqual(world.player_A_score, 7) self.assertEqual(world.player_B_score, 8) # player 1 fold world = WorldTotalWatten() world.current_player = 1 world.current_game_prize = 5 world.player_A_score = 3 world.player_B_score = 8 world.is_last_hand_raise_valid = None world._assign_points_fold() self.assertEqual(world.player_A_score, 3) self.assertEqual(world.player_B_score, 12) # player 1 fold is last hand raise not valid world = WorldTotalWatten() world.current_player = 1 world.current_game_prize = 5 world.player_A_score = 3 world.player_B_score = 8 world.is_last_hand_raise_valid = False world._assign_points_fold() self.assertEqual(world.player_A_score, 7) self.assertEqual(world.player_B_score, 8) # player 1 fold is last hand raise valid world = WorldTotalWatten() world.current_player = 1 world.current_game_prize = 5 world.player_A_score = 3 world.player_B_score = 8 world.is_last_hand_raise_valid = True world._assign_points_fold() self.assertEqual(world.player_A_score, 3) self.assertEqual(world.player_B_score, 12) # player -1 fold is last hand raise not valid world = WorldTotalWatten() world.current_player = -1 world.current_game_prize = 5 world.player_A_score = 3 world.player_B_score = 8 world.is_last_hand_raise_valid = False world._assign_points_fold() self.assertEqual(world.player_A_score, 3) self.assertEqual(world.player_B_score, 12) # player -1 fold is last hand raise valid world = WorldTotalWatten() world.current_player = -1 world.current_game_prize = 5 world.player_A_score = 3 world.player_B_score = 8 world.is_last_hand_raise_valid = True world._assign_points_fold() self.assertEqual(world.player_A_score, 7) self.assertEqual(world.player_B_score, 8)
def test_last_hand_raise_valid_9_cards(self): # trumpf # player -1 raised world = WorldTotalWatten() 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 = [total_watten.get_id(4, 2)] world.player_A_hand = [total_watten.get_id(5, 0)] result = world._last_hand_raise_valid() self.assertTrue(result) # player 1 raised world = WorldTotalWatten() 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 = [total_watten.get_id(4, 2)] world.player_A_hand = [total_watten.get_id(5, 2)] result = world._last_hand_raise_valid() self.assertTrue(result) # same suit # player 1 raised world = WorldTotalWatten() world.played_cards = [ 0, 1, 2, 3, 4, 5, 6, 7, total_watten.get_id(1, 0) ] world.rank = 3 world.suit = 2 world.current_player = 1 world.player_B_hand = [] world.player_A_hand = [total_watten.get_id(4, 0)] result = world._last_hand_raise_valid() self.assertTrue(result) # player -1 raised world = WorldTotalWatten() world.played_cards = [ 0, 1, 2, 3, 4, 5, 6, 7, total_watten.get_id(1, 0) ] world.rank = 3 world.suit = 2 world.current_player = -1 world.player_B_hand = [total_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 = WorldTotalWatten() world.played_cards = [ 0, 1, 2, 3, 4, 5, 6, 7, total_watten.get_id(1, 0) ] world.rank = 3 world.suit = 2 world.current_player = 1 world.player_B_hand = [] world.player_A_hand = [total_watten.get_id(3, 2)] result = world._last_hand_raise_valid() self.assertTrue(result) # player -1 raised world = WorldTotalWatten() world.played_cards = [ 0, 1, 2, 3, 4, 5, 6, 7, total_watten.get_id(1, 0) ] world.rank = 3 world.suit = 2 world.current_player = -1 world.player_B_hand = [total_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 = WorldTotalWatten() world.played_cards = [ 0, 1, 2, 3, 4, 5, 6, 7, total_watten.get_id(6, 3) ] world.rank = 3 world.suit = 2 world.current_player = 1 world.player_B_hand = [] world.player_A_hand = [total_watten.get_id(1, 0)] result = world._last_hand_raise_valid() self.assertFalse(result) # player -1 raised world = WorldTotalWatten() world.played_cards = [ 0, 1, 2, 3, 4, 5, 6, 7, total_watten.get_id(6, 3) ] world.rank = 3 world.suit = 2 world.current_player = -1 world.player_B_hand = [total_watten.get_id(1, 0)] world.player_A_hand = [] result = world._last_hand_raise_valid() self.assertFalse(result)