Esempio n. 1
0
    def test_Rabble_Moat(self):
        tu.print_test_header("test Rabble moat")
        rabble = prosperity.Rabble(self.game, self.player1)
        moat2 = base.Moat(self.game, self.player2)
        moat3 = base.Moat(self.game, self.player3)

        self.player1.hand.add(rabble)
        self.player2.hand.add(moat2)
        self.player3.hand.add(moat3)

        player2decksize = len(self.player2.deck)
        player3decksize = len(self.player3.deck)

        yield tu.send_input(self.player1, "play", "Rabble")
        yield tu.send_input(self.player2, "post_selection", ["Reveal"])
        self.assertTrue(self.player1.last_mode["mode"] == "wait")
        yield tu.send_input(self.player3, "post_selection", ["Reveal"])
        yield gen.sleep(.2)
        self.assertTrue(self.player1.last_mode["mode"] != "wait")
        self.assertTrue(player2decksize == len(self.player2.deck))
        self.assertTrue(player3decksize == len(self.player3.deck))
Esempio n. 2
0
	def test_block_sea_hag_3p(self):
		tu.print_test_header("Test block sea hag 3p")
		sea_hag = sea.Sea_Hag(self.game, self.player2)
		self.player2.hand.add(sea_hag)
		self.player1.hand.add(base.Moat(self.game, self.player1))
		self.player3.hand.add(base.Moat(self.game, self.player3))

		self.player1.gain_to_deck = unittest.mock.Mock(return_value=gen.Future())
		player1_select_future = gen.Future()
		self.player1.select = unittest.mock.Mock(return_value=player1_select_future)
		self.player3.gain_to_deck = unittest.mock.Mock(return_value=gen.Future())
		player3_select_future = gen.Future()
		self.player3.select = unittest.mock.Mock(return_value=player3_select_future)
		yield tu.send_input(self.player2, "play", "Sea Hag")
		yield gen.moment
		player1_select_future.set_result(["Reveal"])
		yield gen.sleep(.1)
		player3_select_future.set_result(["Reveal"])
		yield gen.sleep(.1)

		self.assertTrue(self.player1.gain_to_deck.call_count == 0)
		self.assertTrue(self.player3.gain_to_deck.call_count == 0)
Esempio n. 3
0
    def test_Moat_reaction(self):
        tu.print_test_header("test Moat Reaction")
        moat = base.Moat(self.game, self.player2)
        self.player2.hand.add(moat)
        moat.react = unittest.mock.Mock(moat, wraps=moat.react)
        self.player2.gain = unittest.mock.Mock()

        reveal_future = gen.Future()
        reveal_mock = unittest.mock.MagicMock(return_value=reveal_future)
        self.player2.select = reveal_mock
        base.Witch(self.game, self.player1).play()
        self.assertTrue(moat.react.called)
        reveal_future.set_result(["Reveal"])
        yield gen.moment
        self.assertTrue(self.player2.protection == 1)
        self.assertFalse(self.player2.gain.called)
        self.assertTrue(self.player2.search_and_extract_card("Curse") == None)
Esempio n. 4
0
    def test_inn_gain(self):
        tu.print_test_header("test Inn on gain")
        village = base.Village(self.game, self.player1)
        moat = base.Moat(self.game, self.player1)
        copper = supply_cards.Copper(self.game, self.player1)
        self.player1.discard_pile = [village, moat, copper]

        self.player1.gain('Inn')
        self.assertTrue(self.player1.last_mode["mode"] == "select")
        self.assertTrue("Village" in self.player1.last_mode["select_from"])
        self.assertTrue("Moat" in self.player1.last_mode["select_from"])
        self.assertTrue("Inn" in self.player1.last_mode["select_from"])
        self.assertTrue("Copper" not in self.player1.last_mode["select_from"])
        yield tu.send_input(self.player1, "post_selection",
                            ["Village", "Moat", "Inn"])
        self.assertTrue(self.player1.discard_pile == [copper])
        self.assertTrue(village in self.player1.deck)
        self.assertTrue(moat in self.player1.deck)
Esempio n. 5
0
	def test_Minion(self):
		tu.print_test_header("test Minion")
		minion = intrigue.Minion(self.game, self.player1)
		self.player1.hand.add(minion)
		moat = base.Moat(self.game, self.player3)
		self.player3.hand.add(moat)
		#top 4 cards of player2's deck will be drawn
		top4 = self.player2.deck[-4:]
		discard_size = len(self.player2.discard_pile)
		minion.play()
		yield tu.send_input(self.player1, "post_selection", ["discard hand and draw 4 cards"])
		yield tu.send_input(self.player3, "post_selection", ["Reveal"])
		yield gen.sleep(.2)
		self.assertTrue(len(self.player1.hand) == 4)
		self.assertTrue(len(self.player2.hand) == 4)
		for x in top4:
			self.assertTrue(x in self.player2.hand.card_array())
		self.assertTrue(discard_size + 5 == len(self.player2.discard_pile))
		self.assertTrue(len(self.player3.hand) > 4)
Esempio n. 6
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. 7
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")