Пример #1
0
 def test_lowest_card_by_suit_empty(self):
     players = self.test_players.copy()
     new_game = spades.Spades(players)
     seven_spades = pyCardDeck.PokerCard("Spades", 7, "Seven")
     new_game.board[0] = pyCardDeck.PokerCard("Spades", 3, "Three")
     actual = players[0].lowest_card_that_wins(new_game.board[0])
     self.assertEqual([], actual)
Пример #2
0
 def test_empty_board_spades_and_others(self):
     players = self.test_players.copy()
     new_game = spades.Spades(players)
     new_game.initial_deal()
     expected = ["HIGHEST_NON_SPADE", "LOWEST_NON_SPADE"]
     actual = players[0].getLegalActions(new_game)
     self.assertEqual(expected, actual)
Пример #3
0
 def test_dealing(self):
     game = spades.Spades(self.test_players)
     for player in self.test_players:
         self.assertEqual(len(player.hand), 0)
     game.initial_deal()
     for player in self.test_players:
         self.assertEqual(len(player.hand), 26)
Пример #4
0
 def test_real_game(self):
     players = self.test_players.copy()
     new_game = spades.Spades(players)
     new_game.initial_deal()
     actual = players[0].getLegalActions(new_game)
     expected = ['HIGHEST_NON_SPADE', 'LOWEST_NON_SPADE']
     self.assertEqual(expected, actual)
Пример #5
0
 def test_board_rep_one_heart(self):
     players = self.test_players.copy()
     new_game = spades.Spades(players)
     new_game.board[0] = pyCardDeck.PokerCard("Hearts", 2, "Two")
     actual = players[0].create_board_representation(new_game)
     expected = ("H2", )
     self.assertEqual(expected, actual)
Пример #6
0
 def test_empty_board_only_spades(self):
     players = self.test_players.copy()
     new_game = spades.Spades(players)
     players[0].hand.append(pyCardDeck.PokerCard("Spades", 7, "Seven"))
     expected = ["HIGHEST_SPADE", "LOWEST_SPADE"]
     actual_actions = self.test_players[0].getLegalActions(new_game)
     self.assertEqual(expected, actual_actions)
Пример #7
0
 def test_lowest_spade_that_wins1(self):
     players = self.test_players.copy()
     new_game = spades.Spades(players)
     seven_spades = pyCardDeck.PokerCard("Spades", 7, "Seven")
     players[0].hand.append(seven_spades)
     new_game.board[0] = pyCardDeck.PokerCard("Spades", 3, "Three")
     actual = players[0].lowest_spade_that_wins(new_game.board[0])
     self.assertEqual(seven_spades, actual)
Пример #8
0
 def test_board_with_clubs(self):
     players = self.test_players.copy()
     new_game = spades.Spades(players)
     new_game.board[0] = pyCardDeck.PokerCard("Clubs", 2, "Two")
     players[0].hand.append(pyCardDeck.PokerCard("Clubs", 7, "Seven"))
     expected = ["HIGHEST_SAME_SUIT", "LOWEST_SAME_SUIT", "LOWEST_SAME_SUIT_WIN", "LOWEST_OFF_SUIT"]
     actual = players[0].getLegalActions(new_game)
     self.assertEqual(expected, actual)
Пример #9
0
 def test_only_off_suits(self):
     players = self.test_players.copy()
     new_game = spades.Spades(players)
     new_game.board[0] = pyCardDeck.PokerCard("Clubs", 2, "Two")
     players[0].hand.append(pyCardDeck.PokerCard("Hearts", 7, "Seven"))
     expected = ["LOWEST_OFF_SUIT"]
     actual = players[0].getLegalActions(new_game)
     self.assertEqual(expected, actual)
Пример #10
0
 def test_update_winner_2(self):
     players = self.test_players.copy()
     new_game = spades.Spades(players)
     for i in range(20):
         players[0].hand.append(pyCardDeck.PokerCard("Spades", 10, "Ten"))
         players[1].hand.append(pyCardDeck.PokerCard("Spades", 9, "Ten"))
         new_game.play_full_turn()
     self.assertDictEqual(new_game.scores, {1:20, 2:0})
Пример #11
0
 def test_update_winner(self):
     players = self.test_players.copy()
     new_game = spades.Spades(players)
     players[0].hand.append(pyCardDeck.PokerCard("Spades", 10, "Ten"))
     players[1].hand.append(pyCardDeck.PokerCard("Spades", 9, "Ten"))
     self.assertDictEqual(new_game.scores, {1:0, 2:0})
     new_game.play_turn()
     new_game.update_winner()
     self.assertDictEqual(new_game.scores, {1:1, 2:0})
Пример #12
0
 def test_losing_to_spade(self):
     players = self.test_players.copy()
     new_game = spades.Spades(players)
     new_game.board[0] = PokerCard("Spades",3,"Three")
     hand = [PokerCard("Hearts", 7, "Seven")]
     players[0].hand = hand
     expected = ["LOWEST_OFF_SUIT"]
     actual = players[0].getLegalActions(new_game)
     self.assertEqual(expected, actual)
Пример #13
0
 def test_reward_function_simple_loss(self):
     players = self.test_players.copy()
     new_game = spades.Spades(players)
     players[1].hand.append(pyCardDeck.PokerCard("Spades", 10, "Ten"))
     players[0].hand.append(pyCardDeck.PokerCard("Hearts", 10, "Ten"))
     new_game.play_turn()
     actual_reward = new_game.reward_function(players[0])
     expected_reward = -100
     self.assertEqual(expected_reward, actual_reward)
Пример #14
0
 def test_legal_moves_blank_board(self):
     """
     Tests that on a blank board you can make any move that isn't a Spade
     """
     new_game = spades.Spades(self.test_players.copy())
     new_game.initial_deal()
     legal_moves = self.game.get_legal_moves(self.test_players[0])
     non_spades_in_hand = list(filter(lambda card: card.suit != "Spades", self.test_players[0].hand))
     self.assertEqual(len(legal_moves), len(non_spades_in_hand))
     self.assertGreater(len(legal_moves), 0)
Пример #15
0
 def test_legal_moves_suit_on_board(self):
     players = self.test_players.copy()
     new_game = spades.Spades(players)
     new_game.initial_deal()
     random_card = players[0].getAction(new_game)
     new_game.place_card(random_card, players[0], 0)
     legal_moves = new_game.get_legal_moves(players[1])
     common_suit_and_spades_player_2 = list(filter(lambda card: card.suit == "Spades" or card.suit == random_card.suit, players[1].hand))
     self.assertEqual(len(legal_moves), len(common_suit_and_spades_player_2))
     self.assertGreater(len(legal_moves), 0)
Пример #16
0
 def test_board_rep_empty(self):
     players = self.test_players.copy()
     new_game = spades.Spades(players)
     actual = players[0].create_board_representation(new_game)
     expected = ("EMPTY", )
     self.assertEqual(expected, actual)
Пример #17
0
 def test_empty_legal_moves(self):
     new_game = spades.Spades(self.test_players.copy())
     empty_actions = self.test_players[0].getLegalActions(new_game)
     self.assertEqual([], empty_actions)
Пример #18
0
 def setUp(self) -> None:
     self.test_players = [QLearningAgent(1), RandomAgent(2)]
     self.game = spades.Spades(self.test_players)
Пример #19
0
 def test_winner(self):
     players = self.test_players.copy()
     new_game = spades.Spades(players)
     new_game.play_spades()
     scores = new_game.scores
     self.assertEqual(1, max(scores.values()))