Example #1
0
 def test_tiles_included_two_adjacencies_away(self):
     blank_board(self.game)
     self.game["lonely_tiles"] = ["1A", "2A"]
     tile = self.player["rack"][0] = "1B"
     gametools.play_tile(self.game, self.player, tile)
     gametools.create_hotel(self.game, self.player, self.zeta)
     self.assertTrue("2A" in self.zeta["tiles"])
Example #2
0
 def test_turn_rotates_after_creating_hotel(self):
     self.game["lonely_tiles"] = ["1A"]
     tile = self.player["rack"][0] = "1B"
     gametools.play_tile(self.game, self.player, tile)
     gametools.create_hotel(self.game, self.player, self.zeta)
     gametools.purchase(self.game, self.player, {})
     self.assertEqual(gametools.active_player(self.game), self.game["players"][1])
Example #3
0
 def test_many_tiles_added_to_hotel(self):
     for tile in ["2D", "1B", "1A", "2A"]:
         player = gametools.active_player(self.game)
         player["rack"][0] = tile
         gametools.play_tile(self.game, player, tile)
         gametools.purchase(self.game, player, {})
         self.assertEqual(gametools.where_is_tile(self.game, tile), "phoenix")
     self.assertEqual(len(self.phoenix["tiles"]), 6)
Example #4
0
 def test_offer_purchase_after_hotel_creation(self):
     self.game["lonely_tiles"] = ["7C"]
     tile = self.player["rack"][0] = "8C"
     gametools.play_tile(self.game, self.player, tile)
     gametools.create_hotel(self.game, self.player, self.quantum)
     first_action = self.game["action_queue"][0]
     self.assertEqual(first_action["action"], "purchase")
     self.assertEqual(first_action["player"], self.player["name"])
Example #5
0
 def test_bonuses_awarded_at_game_end(self):
     self.sackson["tiles"] = [str(i) + "A" for i in xrange(1, 13)]
     self.player["shares"]["sackson"] = 1
     tile = self.player["rack"][0] = "1D"
     self.remember_cash()
     gametools.play_tile(self.game, self.player, tile)
     gametools.purchase(self.game, self.player, {}, end_game=True)
     self.assertEqual(self.cash_difference(), [11200, 0, 0])
Example #6
0
 def test_playing_creation_tile_when_no_available_hotels(self):
     blank_board(self.game)
     tilesets = [["1A", "2A"], ["4A", "5A"], ["7A", "8A"], ["10A", "11A"], ["1C", "2C"], ["4C", "5C"], ["7C", "8C"]]
     for hotel, tileset in zip(self.game["hotels"], tilesets):
         hotel["tiles"] = tileset
     self.game["lonely_tiles"] = ["1I"]
     tile = self.player["rack"][0] = "2I"
     with self.assertRaises(gametools.GamePlayNotAllowedError):
         gametools.play_tile(self.game, self.player, tile)
Example #7
0
 def test_legit_play_tile(self):
     tile = None
     for rack_tile in self.player["rack"]:
         if rack_tile not in gametools.tiles_that_create_hotels(self.game):
             tile = rack_tile
             break
     gametools.play_tile(self.game, self.player, tile)
     self.assertTrue(tile in self.game["lonely_tiles"])
     self.assertTrue(tile not in self.player["rack"])
Example #8
0
 def test_discard_and_replenish_unplayable_rack_tiles(self):
     blank_board(self.game)
     self.zeta["tiles"] = [str(i) + "A" for i in xrange(1, 13)]
     self.america["tiles"] = [str(i) + "C" for i in xrange(1, 13)]
     unplayable = [str(i) + "B" for i in xrange(1, 6)]
     self.player["rack"][1:6] = unplayable
     for tile in unplayable:
         if tile in self.game["tilebag"]:
             self.game["tilebag"].remove(tile)
     tile = self.player["rack"][0] = "10D"
     gametools.play_tile(self.game, self.player, tile)
     gametools.purchase(self.game, self.player, {})
     for tile in unplayable:
         self.assertTrue(tile not in self.player["rack"])
     self.assertEqual(len(self.player["rack"]), 6)
Example #9
0
 def play_tile_message(self, message):
     """Someone played a tile."""
     player_name = message['player']
     game = self.game_for_player(player_name)
     if not game:
         return
     try:
         player = gametools.player_named(game, player_name)
         stock_market_shares = gametools.play_tile(game, player, 
                                                   message['tile'])
     except gametools.GamePlayNotAllowedError, e:
         self.send_error(player_name, 'Cannot play tile', e)
         return
Example #10
0
 def merge_america_and_hydra(self):
     gametools.play_tile(self.game, self.player, "1B")
Example #11
0
 def merge_quantum_and_fusion(self, survivor=None):
     gametools.play_tile(self.game, self.player, self.tile)
     if survivor:
         gametools.choose_survivor(self.game, self.player, survivor)
Example #12
0
 def test_do_not_offer_purchase_when_no_shares_in_bank(self):
     self.hydra["tiles"] = ["2I", "3I"]
     self.game["players"][1]["shares"]["hydra"] = 25
     gametools.play_tile(self.game, self.player, self.player["rack"][0])
     self.assertNotEqual(self.game["action_queue"][0]["action"], "purchase")
Example #13
0
 def test_do_not_offer_purchase_when_no_shares_affordable(self):
     self.fusion["tiles"] = ["8H", "9H"]
     self.player["cash"] = 200
     gametools.play_tile(self.game, self.player, self.player["rack"][0])
     self.assertNotEqual(self.game["action_queue"][0]["action"], "purchase")
Example #14
0
 def test_playing_safe_hotel_merge_tile(self):
     self.quantum["tiles"] = [str(i) + "A" for i in xrange(1, 13)]
     self.phoenix["tiles"] = [str(i) + "C" for i in xrange(1, 13)]
     tile = self.player["rack"][0] = "4B"
     with self.assertRaises(gametools.GamePlayNotAllowedError):
         gametools.play_tile(self.game, self.player, tile)
Example #15
0
 def test_other_player_play_tile(self):
     other_player = self.game["players"][1]
     tile = other_player["rack"][0]
     with self.assertRaises(gametools.GamePlayNotAllowedError):
         gametools.play_tile(self.game, other_player, tile)
Example #16
0
 def test_tile_rack_replenished_at_end_of_turn(self):
     self.game["lonely_tiles"] = ["9D"]
     tile = self.player["rack"][0] = "8D"
     gametools.play_tile(self.game, self.player, tile)
     self.assertEqual(len(self.player["rack"]), 5)
Example #17
0
 def test_play_tile_not_in_rack(self):
     tile = self.game["tilebag"][0]
     with self.assertRaises(gametools.GamePlayNotAllowedError):
         gametools.play_tile(self.game, self.player, tile)
     self.assertEqual(self.game["tilebag"][0], tile)
Example #18
0
 def test_turn_rotates_after_playing_tile(self):
     gametools.play_tile(self.game, self.player, self.player["rack"][0])
     self.assertEqual(gametools.active_player(self.game), gametools.player_after(self.game, self.player))
Example #19
0
 def test_adjacent_lonely_tiles_added_to_hotel(self):
     self.game["lonely_tiles"] = ["4C"]
     tile = self.player["rack"][0] = "3C"
     gametools.play_tile(self.game, self.player, tile)
     self.assertTrue("4C" in self.phoenix["tiles"])
     self.assertTrue("4C" not in self.game["lonely_tiles"])
Example #20
0
 def test_nonexistent_tile_play(self):
     nonexistent_tiles = ["0E", "11", "1J", "13C"]
     for tile in nonexistent_tiles:
         with self.assertRaises(gametools.GamePlayNotAllowedError):
             gametools.play_tile(self.game, self.player, tile)
Example #21
0
 def test_one_tile_added_to_hotel(self):
     tile = self.player["rack"][0] = "2D"
     gametools.play_tile(self.game, self.player, tile)
     self.assertEqual(len(self.phoenix["tiles"]), 3)
     self.assertEqual(gametools.where_is_tile(self.game, tile), "phoenix")
Example #22
0
 def test_inappropriate_game_end(self):
     self.sackson["tiles"] = ["1A", "2A"]
     gametools.play_tile(self.game, self.player, self.player["rack"][0])
     gametools.purchase(self.game, self.player, {}, end_game=True)
     self.assertFalse(self.game["ended"])
Example #23
0
 def test_appropriate_game_end(self):
     self.sackson["tiles"] = [str(i) + "A" for i in xrange(1, 13)]
     tile = self.player["rack"][0] = "1D"
     gametools.play_tile(self.game, self.player, tile)
     gametools.purchase(self.game, self.player, {}, end_game=True)
     self.assertTrue(self.game["ended"])
Example #24
0
 def test_rack_replenishment(self):
     blank_board(self.game)
     tile = self.player["rack"][0]
     gametools.play_tile(self.game, self.player, tile)
     self.assertEqual(len(self.player["rack"]), 6)
Example #25
0
 def test_do_not_offer_purchase_when_no_hotels_on_board(self):
     gametools.play_tile(self.game, self.player, self.player["rack"][0])
     self.assertNotEqual(self.game["action_queue"][0]["action"], "purchase")
Example #26
0
 def force_active_player_to_create_hotel(self):
     tile_to_play = gametools.tiles_that_create_hotels(self.game)[0]
     player = gametools.active_player(self.game)
     player["rack"][0] = tile_to_play
     gametools.play_tile(self.game, player, tile_to_play)