コード例 #1
0
ファイル: driver_test.py プロジェクト: kpeng94/splendor-ai
 def test_DriverInitializesWithGameState(self):
   agents = [FakeAgent(), FakeAgent()]
   game_state = setup.SinglePlayerEmptyGameState()._replace(
     player_states=[
       setup.NewPlayerState(), setup.NewPlayerState()])
   self.assertIsNotNone(driver.Driver(
     agents, game_state=game_state, game_rules=game_rules.GAME_RULES))
コード例 #2
0
ファイル: driver_test.py プロジェクト: kpeng94/splendor-ai
 def test_DriverInitializesWithGameStateWrongNumAgentsFails(self):
   agents = [FakeAgent(), FakeAgent(), FakeAgent()]
   game_state = setup.SinglePlayerEmptyGameState()._replace(
     player_states=[
       setup.NewPlayerState(), setup.NewPlayerState()])
   with self.assertRaises(IndexError):
     driver.Driver(
       agents, game_state=game_state,
       game_rules=game_rules.GAME_RULES)
コード例 #3
0
ファイル: driver_test.py プロジェクト: kpeng94/splendor-ai
 def test_DriverWinnerButNeedToCompleteRound(self):
   agents = [FakeAgent(), FakeAgent()]
   game_state = setup.SinglePlayerEmptyGameState()._replace(
     player_states=[
       setup.NewPlayerState(),
       self._GetWinningPlayerState(),
     ],
     turn=1,
   )
   game_driver = driver.Driver(
     agents, game_state=game_state,
     game_rules=game_rules.GAME_RULES)
   winners = game_driver.GetWinners()
   self.assertEquals(winners, tuple())
コード例 #4
0
ファイル: driver_test.py プロジェクト: kpeng94/splendor-ai
 def test_DriverGetWinnersTie(self):
   agents = [FakeAgent(), FakeAgent()]
   game_state = setup.SinglePlayerEmptyGameState()._replace(
     player_states=[
       self._GetWinningPlayerState(),
       self._GetWinningPlayerState(),
     ],
     turn=0,
   )
   game_driver = driver.Driver(
     agents, game_state=game_state,
     game_rules=game_rules.GAME_RULES)
   winners = game_driver.GetWinners()
   self.assertEquals(winners, (0, 1))
コード例 #5
0
 def test_PlayerGameStateCanTopDeck(self):
     game_state = setup.SinglePlayerEmptyGameState()._replace(
         development_cards={
             Deck.LEVEL_1: [setup.EmptyBlueDevelopmentCard()] * 5,
             Deck.LEVEL_2: [setup.EmptyBlueDevelopmentCard()] * 4,
         })
     state = player_game_state.PlayerGameState(game_state,
                                               game_rules.GAME_RULES)
     self.assertEquals(
         state.revealed_cards, {
             Deck.LEVEL_1: [setup.EmptyBlueDevelopmentCard()] * 4,
             Deck.LEVEL_2: [setup.EmptyBlueDevelopmentCard()] * 4,
         })
     self.assertTrue(state.CanTopDeck(Deck.LEVEL_1))
     self.assertFalse(state.CanTopDeck(Deck.LEVEL_2))
コード例 #6
0
ファイル: driver_test.py プロジェクト: kpeng94/splendor-ai
 def test_DriverGetWinnersWithTieBreak(self):
   agents = [FakeAgent(), FakeAgent()]
   game_state = setup.SinglePlayerEmptyGameState()._replace(
     player_states=[
       self._GetWinningPlayerState(),
       setup.NewPlayerState()._replace(
         purchased_cards=[
           setup.EmptyBlueDevelopmentCard()._replace(points=15),
         ]),
     ],
     turn=0,
   )
   game_driver = driver.Driver(
     agents, game_state=game_state,
     game_rules=game_rules.GAME_RULES)
   winners = game_driver.GetWinners()
   self.assertEquals(winners, (1,))
コード例 #7
0
 def test_PlayerGameStateHasOpponentStates(self):
     player_states = [
         setup.NewPlayerState()._replace(gems={GemType.RED: 1}),
         setup.NewPlayerState()._replace(gems={GemType.BLUE: 1}),
         setup.NewPlayerState()._replace(gems={GemType.GREEN: 1}),
         setup.NewPlayerState()._replace(gems={GemType.WHITE: 1}),
     ]
     game_state = setup.SinglePlayerEmptyGameState()._replace(
         player_states=player_states, turn=1)
     state = player_game_state.PlayerGameState(game_state,
                                               game_rules.GAME_RULES)
     opponent_gems = []
     for opp in state.opponent_states:
         opponent_gems.append(opp.gem_counts)
     expected_opponent_gems = [
         player_states[2].gems,
         player_states[3].gems,
         player_states[0].gems,
     ]
     self.assertEquals(opponent_gems, expected_opponent_gems)
コード例 #8
0
 def test_PlayerGameStateCanTakeTwo(self):
     game_state = setup.SinglePlayerEmptyGameState()._replace(
         available_gems={GemType.RED: 4})
     state = player_game_state.PlayerGameState(game_state,
                                               game_rules.GAME_RULES)
     self.assertTrue(state.CanTakeTwo(GemType.RED))
コード例 #9
0
    def test_PlayerGameStateCanPurchaseCard(self):
        owned_dev_card_1 = DevelopmentCard(asset_id="",
                                           level=Deck.LEVEL_1,
                                           points=0,
                                           gem=GemType.RED,
                                           cost={GemType.GREEN: 1})

        player_states = [
            setup.NewPlayerState()._replace(gems={
                GemType.RED: 4,
                GemType.BLUE: 2,
                GemType.GOLD: 1
            },
                                            purchased_cards=[owned_dev_card_1
                                                             ]),
            setup.NewPlayerState()._replace(gems={GemType.BLUE: 1}),
            setup.NewPlayerState()._replace(gems={GemType.GREEN: 1}),
            setup.NewPlayerState()._replace(gems={GemType.WHITE: 1}),
        ]
        game_state = setup.SinglePlayerEmptyGameState()._replace(
            player_states=player_states, turn=0)
        state = player_game_state.PlayerGameState(game_state,
                                                  game_rules.GAME_RULES)
        dev_card_1 = DevelopmentCard(asset_id="",
                                     level=Deck.LEVEL_1,
                                     points=0,
                                     gem=GemType.RED,
                                     cost={
                                         GemType.BLUE: 1,
                                         GemType.GREEN: 1,
                                         GemType.RED: 1,
                                         GemType.WHITE: 1
                                     })
        self.assertFalse(state.CanPurchaseCard(dev_card_1))

        dev_card_2 = DevelopmentCard(asset_id="",
                                     level=Deck.LEVEL_1,
                                     points=0,
                                     gem=GemType.RED,
                                     cost={
                                         GemType.BLUE: 2,
                                         GemType.RED: 3,
                                         GemType.WHITE: 1
                                     })
        self.assertFalse(state.CanPurchaseCard(dev_card_2))

        dev_card_3 = DevelopmentCard(asset_id="",
                                     level=Deck.LEVEL_1,
                                     points=0,
                                     gem=GemType.RED,
                                     cost={
                                         GemType.BLUE: 2,
                                         GemType.RED: 3
                                     })
        self.assertTrue(state.CanPurchaseCard(dev_card_3))

        dev_card_4 = DevelopmentCard(asset_id="",
                                     level=Deck.LEVEL_1,
                                     points=0,
                                     gem=GemType.RED,
                                     cost={
                                         GemType.BLUE: 2,
                                         GemType.RED: 5
                                     })
        self.assertTrue(state.CanPurchaseCard(dev_card_4))