Esempio n. 1
0
    def test_Mandarin(self):
        tu.print_test_header("test Mandarin")
        tu.add_many_to_hand(self.player1,
                            supply_cards.Silver(self.game, self.player1), 3)
        tu.add_many_to_hand(self.player1,
                            supply_cards.Gold(self.game, self.player1), 2)

        tu.send_input(self.player1, "play", "Gold")
        tu.send_input(self.player1, "play", "Silver")
        tu.send_input(self.player1, "play", "Silver")

        yield tu.send_input(self.player1, "buyCard", "Mandarin")

        self.assertTrue(self.player1.last_mode["mode"] == "select")
        yield tu.send_input(self.player1, "post_selection",
                            ["Silver", "Silver", "Gold"])
        self.assertTrue(len(self.player1.played_cards) == 0)
        self.assertTrue(self.player1.deck[-1].title == "Gold")
        self.assertTrue(self.player1.deck[-2].title == "Silver")
        self.assertTrue(self.player1.deck[-3].title == "Silver")

        self.player1.end_turn()
        self.player2.hand.add(hl.Mandarin(self.game, self.player2))
        self.player2.hand.add(supply_cards.Silver(self.game, self.player2))
        tu.send_input(self.player2, "play", "Mandarin")
        self.assertTrue(self.player2.balance == 3)
        self.assertTrue(self.player2.last_mode["mode"] == "select")
        yield tu.send_input(self.player2, "post_selection", ["Copper"])
        self.assertTrue(self.player2.deck[-1].title == "Copper")
        self.assertTrue(len(self.player2.hand) == 5)
Esempio n. 2
0
 def test_Spice_Merchant(self):
     tu.print_test_header("test Spice Merchant")
     spice_merchant1 = hl.Spice_Merchant(self.game, self.player1)
     spice_merchant2 = hl.Spice_Merchant(self.game, self.player1)
     copper = supply_cards.Copper(self.game, self.player1)
     silver = supply_cards.Silver(self.game, self.player1)
     self.player1.hand.add(spice_merchant1)
     self.player1.hand.add(spice_merchant2)
     self.player1.deck = [silver] * 5
     self.player1.hand.add(copper)
     yield tu.send_input(self.player1, "play", "Spice Merchant")
     yield tu.send_input(self.player1, "post_selection", ["Copper"])
     yield tu.send_input(self.player1, "post_selection",
                         ["+2 cards +1 action"])
     self.assertTrue(copper in self.game.trash_pile)
     self.assertTrue(
         len(self.player1.hand.card_array()) == 8
     )  # We started with 5 cards and then added 2 SMs and a copper (8 cards), then put one in
     yield tu.send_input(
         self.player1, "play", "Spice Merchant"
     )  # play and trashed the copper, then drew 2 brining us back to 8
     yield tu.send_input(self.player1, "post_selection", ["Copper"])
     yield tu.send_input(self.player1, "post_selection", ["+$2 +1 buy"])
     self.assertTrue(len(self.game.trash_pile) == 2)
     self.assertTrue(self.player1.buys == 2)
     self.assertTrue(self.player1.balance == 2)
Esempio n. 3
0
 def test_Mint_Select_None(self):
     tu.print_test_header("test Mint with select none")
     mint = prosperity.Mint(self.game, self.player1)
     silver = supply_cards.Silver(self.game, self.player1)
     self.player1.hand.add(mint)
     self.player1.hand.add(silver)
     starting_hand = self.player1.hand.card_array()
     mint.play()
     yield tu.send_input(self.player1, "post_selection", [])
     new_hand = self.player1.hand.card_array()
     self.assertTrue(not self.player1.discard_pile)
     self.assertTrue(
         ((set(starting_hand) - set(new_hand)).pop().title == "Mint"))
Esempio n. 4
0
 def test_Mint(self):
     tu.print_test_header("test Mint")
     mint = prosperity.Mint(self.game, self.player1)
     silver = supply_cards.Silver(self.game, self.player1)
     self.player1.hand.add(mint)
     self.player1.hand.add(silver)
     mint.play()
     yield tu.send_input(self.player1, "post_selection", ["Silver"])
     self.assertTrue(self.player1.discard_pile[0].title == "Silver")
     num_money = len(self.player1.hand.get_cards_by_type("Treasure"))
     self.player1.spend_all_money()
     self.player1.buy_card('Mint')
     self.assertTrue(len(self.game.trash_pile) >= num_money)
Esempio n. 5
0
	def test_Wishing_Well(self):
		tu.print_test_header("test Wishing Well")
		wishing_well = intrigue.Wishing_Well(self.game, self.player1)
		tu.add_many_to_hand(self.player1, wishing_well, 2)
		province = supply_cards.Province(self.game, self.player1)
		self.player1.deck.append(province)
		self.player1.deck.append(supply_cards.Silver(self.game, self.player1))
		self.player1.deck.append(province)
		wishing_well.play()
		yield tu.send_input(self.player1, "selectSupply", ["Curse"])
		self.assertTrue(self.player1.hand.get_count('Province') == 1)

		wishing_well.play()
		yield tu.send_input(self.player1, "selectSupply", ["Province"])
		self.assertTrue(self.player1.hand.get_count('Province') == 2)
Esempio n. 6
0
	def __init__(self, players, required_cards, excluded_cards, req_supply="default", test=False):
		Game.__init__(self, players, req_supply)
		if not test:
			self.logger = logHandler.LogHandler(", ".join(map(lambda x: x.name, self.players)) + " " + time.ctime(time.time()))
		else:
			self.logger = logHandler.TestLogHandler()
		# randomize turn order
		random.shuffle(self.players)
		self.trash_pile = []
		self.empty_piles = 0
		self.mat = {}
		if req_supply == "default":
			rand = random.randint(1, 10)
			if rand < 2:
				req_supply = "prosperity"

		# kingdom = dictionary {card.title => [card, count]} i.e {"Copper": [card.Copper(self,None),10]}
		base_supply = [supply_cards.Curse(self, None), supply_cards.Estate(self, None),
		               supply_cards.Duchy(self, None), supply_cards.Province(self, None), supply_cards.Copper(self, None),
		               supply_cards.Silver(self, None), supply_cards.Gold(self, None)]

		if req_supply == "prosperity":
			base_supply.append(supply_cards.Colony(self, None))
			base_supply.append(supply_cards.Platinum(self, None))

		self.base_supply = self.init_supply(base_supply)
		generator = kg.kingdomGenerator(self, required_cards, excluded_cards)
		if not test:
			self.kingdom = self.init_supply(generator.gen_kingdom())
		else:
			self.kingdom = self.init_supply(generator.every_card_kingdom())

		self.supply = cp.CardPile()
		self.supply.combine(self.base_supply)
		self.supply.combine(self.kingdom)
		for x in self.kingdom.unique_cards():
			x.on_supply_init()

		#dictionary of card title => price modifier for that card
		self.price_modifier = {}
		for x in self.supply.unique_cards():
			self.price_modifier[x.title] = 0

		#record of game announcements for public viewing / archiving
		self.game_log = []
Esempio n. 7
0
	def test_Upgrade_Selection_issue_21(self):
		tu.print_test_header("test Upgrade selection issue 21")
		upgrade = intrigue.Upgrade(self.game, self.player1)
		throne_room = base.Throne_Room(self.game, self.player1)
		self.player1.deck.append(supply_cards.Estate(self.game, self.player1))
		self.player1.deck.append(supply_cards.Silver(self.game, self.player1))

		self.player1.hand.add(upgrade)
		self.player1.hand.add(throne_room)
		throne_room.play()
		yield tu.send_input(self.player1, "post_selection", ["Upgrade"])
		yield tu.send_input(self.player1, "post_selection", ["Silver"])
		yield tu.send_input(self.player1, "selectSupply", ["Coppersmith"])
		self.assertTrue(self.player1.discard_pile[-1].title == "Coppersmith")
		yield gen.moment
		yield tu.send_input(self.player1, "post_selection", ["Estate"])
		yield tu.send_input(self.player1, "selectSupply", ["Silver"])
		self.assertTrue(self.player1.discard_pile[-1].title == "Silver")
Esempio n. 8
0
 def test_Noble_Brigand(self):
     tu.print_test_header("test Noble Brigand")
     silver = supply_cards.Silver(self.game, self.player2)
     estate = supply_cards.Estate(self.game, self.player3)
     self.player2.deck.append(silver)
     self.player3.deck += [estate, estate]
     nb = hl.Noble_Brigand(self.game, self.player1)
     deck2size = len(self.player2.deck)
     deck3size = len(self.player3.deck)
     nb.play()
     yield tu.send_input(self.player1, "post_selection", ["Silver"])
     self.assertTrue(self.player1.discard_pile[-1].title == "Silver")
     self.assertTrue(len(self.player2.discard_pile) == 1)
     self.assertTrue(len(self.player2.deck) == deck2size - 2)
     self.assertTrue(self.player2.deck[-1].title != "Silver")
     self.assertTrue(len(self.player3.deck) == deck3size - 2)
     self.assertTrue(len(self.player3.discard_pile) == 3)
     self.assertTrue(self.player3.discard_pile[-1].title == "Copper")
Esempio n. 9
0
    def test_Venture(self):
        tu.print_test_header("test Venture")
        venture = prosperity.Venture(self.game, self.player1)
        estate = supply_cards.Estate(self.game, self.player1)
        loan = prosperity.Loan(self.game, self.player1)
        silver = supply_cards.Silver(self.game, self.player1)
        self.player1.deck += [loan, estate, estate, silver, estate]

        venture.play()

        self.assertTrue(len(self.player1.discard_pile) == 1)
        self.assertTrue(self.player1.balance == 3)

        venture.play()

        # self.assertTrue(len(self.player1.discard_pile) == 4)
        self.assertTrue(self.player1.balance == 5)
        self.assertTrue(silver in self.player1.all_cards())
Esempio n. 10
0
    def test_Thief_2_treasures(self):
        tu.print_test_header("test Thief on 2 treasures")
        thief_card = base.Thief(self.game, self.player1)
        self.player1.hand.add(thief_card)
        self.player2.deck.append(supply_cards.Copper(self.game, self.player2))
        self.player2.deck.append(supply_cards.Silver(self.game, self.player2))
        select_trash_future = gen.Future()
        select_gain_future = gen.Future()
        self.player1.select = unittest.mock.MagicMock(
            side_effect=[select_trash_future, select_gain_future])
        self.player1.gain = unittest.mock.Mock(return_value=gen.Future())

        thief_card.play()

        self.player1.select.assert_called_with(1, 1, ["Silver", "Copper"],
                                               unittest.mock.ANY)
        select_trash_future.set_result(["Silver"])
        yield gen.moment
        self.assertTrue(self.game.trash_pile[-1].title == "Silver")
        select_gain_future.set_result(["Yes"])
        yield gen.moment
        self.player1.gain.assert_called_with("Silver", False)
Esempio n. 11
0
	def test_Scout(self):
		tu.print_test_header("test Scout")
		scout = intrigue.Scout(self.game, self.player1)
		scout2 = intrigue.Scout(self.game, self.player1)
		province = supply_cards.Province(self.game, self.player1)
		greathall = intrigue.Great_Hall(self.game, self.player1)
		silver = supply_cards.Silver(self.game, self.player1)
		self.player1.hand.add(scout)
		self.player1.deck.append(province)
		self.player1.deck.append(greathall)
		self.player1.deck.append(scout2)
		self.player1.deck.append(silver)
		decklength = len(self.player1.deck)
		scout.play()

		self.assertTrue(greathall.title in self.player1.hand)
		self.assertTrue(province.title in self.player1.hand)
		self.assertFalse(silver.title in self.player1.hand)
		self.assertFalse(scout2.title in self.player1.hand)
		yield tu.send_input(self.player1, "post_selection", ["Scout", "Silver"])
		self.assertTrue(self.player1.deck[-1].title == "Silver")
		self.assertTrue(self.player1.deck[-2].title == "Scout")
		#decksize should be 2 less since we took province and great hall out
		self.assertTrue(len(self.player1.deck) == decklength - 2)
Esempio n. 12
0
    def test_Cartographer(self):
        tu.print_test_header("test Cartographer")
        cart = hl.Cartographer(self.game, self.player1)
        village = base.Village(self.game, self.player1)
        silver = supply_cards.Silver(self.game, self.player1)
        self.player1.deck += [village, silver, village, village]
        #draw the gold with cartographer
        self.player1.deck.append(supply_cards.Gold(self.game, self.player1))
        self.player1.hand.add(cart)

        cart.play()
        self.assertTrue(self.player1.last_mode["mode"] == "select")
        self.assertTrue(self.player1.last_mode["max_cards"] == 4)
        yield tu.send_input(self.player1, "post_selection",
                            ["Village", "Village"])
        self.assertTrue(self.player1.discard_pile[-1].title == "Village")
        self.assertTrue(self.player1.discard_pile[-2].title == "Village")
        self.assertTrue(self.player1.last_mode["mode"] == "select")
        self.assertTrue(self.player1.last_mode["max_cards"] == 2)
        yield tu.send_input(self.player1, "post_selection",
                            ["Silver", "Village"])

        self.assertTrue(self.player1.deck[-1].title == "Village")
        self.assertTrue(self.player1.deck[-2].title == "Silver")
Esempio n. 13
0
    def test_2_reaction_waits(self):
        tu.print_test_header("test 2 reaction waits")
        militia = base.Militia(self.game, self.player1)
        moat = base.Moat(self.game, self.player2)
        secret_chamber = intrigue.Secret_Chamber(self.game, self.player2)
        self.player2.hand.add(moat)
        self.player2.hand.add(secret_chamber)
        self.player2.deck.append(supply_cards.Estate(self.game, self.player2))
        self.player2.deck.append(supply_cards.Estate(self.game, self.player2))

        moat3 = base.Moat(self.game, self.player3)
        secret_chamber3 = intrigue.Secret_Chamber(self.game, self.player3)
        silver = supply_cards.Silver(self.game, self.player3)
        tu.set_player_hand(self.player3,
                           [silver, silver, silver, moat3, secret_chamber3])

        militia.play()
        self.assertTrue(self.player1.last_mode["mode"] == "wait")
        self.assertTrue(self.player2.last_mode["mode"] != "wait")
        self.assertTrue(self.player3.last_mode["mode"] != "wait")

        #player 2 choose order, moat then secret chamber
        yield tu.send_input(self.player2, "post_selection",
                            ["Secret Chamber", "Moat"])
        self.assertTrue(self.player1.last_mode["mode"] == "wait")
        self.assertTrue(self.player2.last_mode["mode"] != "wait")
        self.assertTrue(self.player3.last_mode["mode"] != "wait")

        #player 2 reveals moat
        yield tu.send_input(self.player2, "post_selection", ["Reveal"])
        self.assertTrue(self.player1.last_mode["mode"] == "wait")
        self.assertTrue(self.player2.last_mode["mode"] != "wait")
        self.assertTrue(self.player3.last_mode["mode"] != "wait")

        #player 3 chooses same order, moat then secret chamber
        yield tu.send_input(self.player3, "post_selection",
                            ["Secret Chamber", "Moat"])
        self.assertTrue(self.player1.last_mode["mode"] == "wait")
        self.assertTrue(self.player2.last_mode["mode"] != "wait")
        self.assertTrue(self.player3.last_mode["mode"] != "wait")

        #player 2 reveals secret chamber
        yield tu.send_input(self.player2, "post_selection", ["Reveal"])
        self.assertTrue(self.player1.last_mode["mode"] == "wait")
        self.assertTrue(self.player2.last_mode["mode"] != "wait")
        self.assertTrue(self.player3.last_mode["mode"] != "wait")

        #player 2 draws 2 estates, puts back 1 and a copper
        yield tu.send_input(self.player2, "post_selection",
                            ["Estate", "Copper"])
        self.assertTrue(self.player1.last_mode["mode"] == "wait")
        self.assertTrue(self.player2.last_mode["mode"] != "wait")
        self.assertTrue(self.player3.last_mode["mode"] != "wait")

        #player 3 reveals moat
        yield tu.send_input(self.player3, "post_selection", ["Reveal"])
        self.assertTrue(self.player1.last_mode["mode"] == "wait")
        self.assertTrue(self.player2.last_mode["mode"] != "wait")
        self.assertTrue(self.player3.last_mode["mode"] != "wait")

        #player 3 hides secret chamber
        yield tu.send_input(self.player3, "post_selection", ["Hide"])
        self.assertTrue(self.player1.last_mode["mode"] == "wait")
        self.assertTrue(self.player2.last_mode["mode"] != "wait")
        self.assertTrue(self.player3.last_mode["mode"] != "wait")

        #player 2 drew cards so is reprompted and chooses order again
        yield tu.send_input(self.player2, "post_selection",
                            ["Secret Chamber", "Moat"])
        self.assertTrue(self.player1.last_mode["mode"] == "wait")
        self.assertTrue(self.player2.last_mode["mode"] != "wait")
        self.assertTrue(self.player3.last_mode["mode"] != "wait")

        #player 2 hides moat
        yield tu.send_input(self.player2, "post_selection", ["Hide"])
        self.assertTrue(self.player1.last_mode["mode"] == "wait")
        self.assertTrue(self.player2.last_mode["mode"] != "wait")
        self.assertTrue(self.player3.last_mode["mode"] != "wait")

        #player 2 hides secret chamber
        yield tu.send_input(self.player2, "post_selection", ["Hide"])
        yield gen.sleep(.1)
        self.assertTrue(self.player1.last_mode["mode"] != "wait")
Esempio n. 14
0
    def test_2_Reactions(self):
        tu.print_test_header("test 2 reaction secret chamber moat")
        militia = base.Militia(self.game, self.player1)
        moat = base.Moat(self.game, self.player2)
        secret_chamber = intrigue.Secret_Chamber(self.game, self.player2)
        estate = supply_cards.Estate(self.game, self.player2)
        self.player2.hand.add(moat)
        self.player2.hand.add(secret_chamber)
        self.player2.deck.append(estate)
        self.player2.deck.append(estate)
        moat3 = base.Moat(self.game, self.player3)
        secret_chamber3 = intrigue.Secret_Chamber(self.game, self.player3)
        silver = supply_cards.Silver(self.game, self.player3)
        tu.set_player_hand(self.player3,
                           [silver, silver, silver, moat3, secret_chamber3])

        militia.play()
        self.assertTrue(self.player1.last_mode["mode"] == "wait")
        self.assertTrue(self.player2.last_mode["mode"] == "select")
        self.assertTrue(
            "Secret Chamber" in self.player2.last_mode["select_from"])
        self.assertTrue("Moat" in self.player2.last_mode["select_from"])
        yield tu.send_input(self.player2, "post_selection",
                            ["Secret Chamber", "Moat"])
        #moat trigger first
        self.assertTrue("Moat" in self.player2.last_mode["msg"])
        self.assertTrue(self.player1.last_mode["mode"] == "wait")

        #while player2 is deciding to reveal moat or not,
        #player3 chose order Secret chamber first
        self.assertTrue(self.player3.last_mode["mode"] == "select")

        yield tu.send_input(self.player3, "post_selection",
                            ["Moat", "Secret Chamber"])
        self.assertTrue(self.player1.last_mode["mode"] == "wait")

        #player3 reveals secret chamber
        self.assertTrue("Secret Chamber" in self.player3.last_mode["msg"])
        yield tu.send_input(self.player3, "post_selection", ["Reveal"])

        #player3 chooses to put back secret chamber and moat in secret chamber reaction
        yield tu.send_input(self.player3, "post_selection",
                            ["Secret Chamber", "Moat"])
        self.assertTrue(self.player3.deck[-1].title == "Moat")
        self.assertTrue(self.player3.deck[-2].title == "Secret Chamber")
        self.assertTrue(self.player1.last_mode["mode"] == "wait")
        #player2 reveals moat
        self.assertTrue(self.player2.last_mode["mode"] == "select")
        yield tu.send_input(self.player2, "post_selection", ["Reveal"])
        self.assertTrue(self.player1.last_mode["mode"] == "wait")
        #player2 reveals secret chamber
        yield tu.send_input(self.player2, "post_selection", ["Reveal"])
        #player2 puts back Estate, moat
        self.assertTrue(self.player2.protection == 1)
        self.assertTrue(self.player1.last_mode["mode"] == "wait")
        yield tu.send_input(self.player2, "post_selection", ["Moat", "Estate"])
        self.assertTrue(self.player2.deck[-1].title == "Estate")
        self.assertTrue(self.player2.deck[-2].title == "Moat")
        #workaround to allow ioloop to process nested yields in time
        yield gen.sleep(.2)
        self.assertTrue(self.player1.last_mode["mode"] == "wait")
        #player3 discards 2 silver
        yield tu.send_input(self.player3, "post_selection",
                            ["Silver", "Silver"])
        self.assertTrue(len(self.player3.hand) == 3)
        #player1 resumes
        self.assertTrue(self.player1.last_mode["mode"] == "buy")