Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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])
Пример #4
0
    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)
Пример #5
0
    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)
Пример #6
0
    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)
Пример #7
0
    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)
Пример #8
0
    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)
Пример #9
0
    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)
Пример #10
0
    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)
Пример #11
0
    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)
Пример #12
0
    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)
Пример #13
0
    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)