def test_Forge(self): tu.print_test_header("test Forge") forge = prosperity.Forge(self.game, self.player1) steward = intrigue.Steward(self.game, self.player1) minion = intrigue.Minion(self.game, self.player1) torturer = intrigue.Torturer(self.game, self.player1) secret_chamber = intrigue.Secret_Chamber(self.game, self.player1) gold = supply_cards.Gold(self.game, self.player1) self.player1.hand.add(steward) self.player1.hand.add(minion) self.player1.hand.add(torturer) self.player1.hand.add(secret_chamber) self.player1.hand.add(gold) forge.play() # trash prices total to 8 yield tu.send_input(self.player1, "post_selection", ["Steward", "Copper", "Copper", "Minion"]) self.assertTrue(len(self.game.trash_pile) == 4) yield tu.send_input(self.player1, "selectSupply", ["Province"]) self.assertTrue(self.player1.discard_pile[0].title == "Province") forge.play() # trash prices total to 13 -- nothing to gain yield tu.send_input(self.player1, "post_selection", ["Torturer", "Secret Chamber", "Gold"]) self.assertTrue(self.player1.cb is None)
def test_Royal_Seal(self): tu.print_test_header("test Royal Seal") royal_seal = prosperity.Royal_Seal(self.game, self.player1) workers_village = prosperity.Workers_Village(self.game, self.player1) copper = supply_cards.Copper(self.game, self.player1) self.player1.hand.add(royal_seal) self.player1.hand.add(copper) tu.add_many_to_hand(self.player1, workers_village, 3) workers_village.play() workers_village.play() workers_village.play() royal_seal.play() yield tu.send_input(self.player1, "buyCard", "Curse") self.assertTrue(self.player1.last_mode["mode"] == "select") yield tu.send_input(self.player1, "post_selection", ["Yes"]) self.assertTrue(self.player1.deck[-1].title == "Curse") yield gen.sleep(.2) self.assertTrue(self.player1.last_mode["mode"] == "buy") yield tu.send_input(self.player1, "buyCard", "Silver") self.assertTrue(self.player1.last_mode["mode"] == "select") yield tu.send_input(self.player1, "post_selection", ["No"]) self.assertTrue(self.player1.discard_pile[-1].title == "Silver") yield gen.sleep(.2) self.assertTrue(self.player1.last_mode["mode"] == "buy") yield tu.send_input(self.player1, "buyCard", "Mint") self.assertTrue(self.player1.last_mode["mode"] == "buy")
def test_Forge_nothing(self): tu.print_test_header("test Forge nothing") forge = prosperity.Forge(self.game, self.player1) forge.play() yield tu.send_input(self.player1, "post_selection", []) self.assertTrue(self.player1.last_mode["mode"] == "selectSupply") yield tu.send_input(self.player1, "selectSupply", ["Copper"]) self.assertTrue(len(self.player1.waiter.waiting_on) == 0)
def test_Border_Village(self): tu.print_test_header("test Border Village") yield tu.send_input(self.player1, "buyCard", "Border Village") yield tu.send_input(self.player1, "selectSupply", ["Duchy"]) self.assertTrue(len([x for x in self.player1.discard_pile if x.title == "Border Village"]) == 1) self.assertTrue(len([x for x in self.player1.discard_pile if x.title == "Duchy"]) == 1)
def test_invalid_selection(self): tu.print_test_header("test invalid selection") selection_future = self.player1.select(1, 1, ["Copper", "Curse"], "Select Copper or Curse") self.assertTrue(self.player1.last_mode["mode"] == "select") yield tu.send_input(self.player1, "post_selection", ["Province"]) self.assertTrue(selection_future.running()) self.assertTrue(self.player1.last_mode["mode"] == "select") yield tu.send_input(self.player1, "post_selection", ["Curse"]) self.assertTrue(selection_future.result() == ["Curse"])
def test_Expand(self): tu.print_test_header("testing expand") expand = prosperity.Expand(self.game, self.player1) expand.play() yield tu.send_input(self.player1, "post_selection", ["Copper"]) yield tu.send_input(self.player1, "post_selection", ["Silver"]) self.assertTrue(self.player1.discard_pile[0].title == "Silver")
def test_Duchess_Feast(self): tu.print_test_header("Test Duchess Feast") feast = base.Feast(self.game, self.player1) self.player1.hand.add(feast) tu.send_input(self.player1, "play", "Feast") yield tu.send_input(self.player1, "post_selection", ["Duchy"]) self.assertTrue(self.player1.last_mode["mode"] == "select") yield tu.send_input(self.player1, "post_selection", ["Yes"]) self.assertTrue(self.player1.discard_pile[-1].title == "Duchess")
def test_Crossroads_Throne_Room(self): tu.print_test_header("test Crossroads Throne Room") crossroads = hl.Crossroads(self.game, self.player1) throneroom = base.Throne_Room(self.game, self.player1) self.player1.hand.add(throneroom) self.player1.hand.add(crossroads) tu.send_input(self.player1, "play", "Throne Room") yield tu.send_input(self.player1, "post_selection", ["Crossroads"]) self.assertTrue(self.player1.actions == 3)
def test_has_selectable(self): tu.print_test_header("test has selectable") #2 Remodels in hand tu.add_many_to_hand(self.player1, base.Remodel(self.game, self.player1), 2) #nothing in supply except remodel and gold both at 0 left self.game.supply.data = {"Remodel": [base.Remodel(self.game, None), 0], "Gold": [supply_cards.Gold(self.game, None), 0]} #try to remodel another remodel tu.send_input(self.player1, "play", "Remodel") self.assertTrue(self.player1.last_mode["mode"] == "select") yield tu.send_input(self.player1, "post_selection", ["Remodel"]) self.assertTrue(self.player1.last_mode["mode"] != "selectSupply")
def test_spam_cb(self): tu.print_test_header("test spam cb") self.player1.hand.add(base.Remodel(self.game, self.player1)) self.player1.hand.add(supply_cards.Silver(self.game, self.player1)) self.player1.hand.add(supply_cards.Silver(self.game, self.player1)) tu.send_input(self.player1, "play", "Remodel") yield tu.send_input(self.player1, "post_selection", ["Silver"]) yield tu.send_input(self.player1, "selectSupply", ["Silver"]) self.assertTrue(self.player1.cb == None) yield tu.send_input(self.player1, "selectSupply", ["Silver"]) self.assertTrue(len(self.player1.discard_pile) == 1)
def test_Embassy(self): tu.print_test_header("test Embassy") self.player1.balance = 5 yield tu.send_input(self.player1, "buyCard", "Embassy") self.assertTrue(self.player2.discard_pile[-1].title == "Silver") self.assertTrue(self.player3.discard_pile[-1].title == "Silver") embassy = hl.Embassy(self.game, self.player2) copper = supply_cards.Copper(self.game, self.player2) tu.set_player_hand(self.player2, [embassy]) tu.add_many_to_hand(self.player2, copper, 4) embassy.play() yield tu.send_input(self.player2, "post_selection", ["Copper", "Copper", "Copper"]) self.assertTrue(len(self.player2.hand) == 6)
def test_watchtower_trader(self): tu.print_test_header("test Watchtower Trader") watchtower = prosperity.Watchtower(self.game, self.player1) trader = hl.Trader(self.game, self.player1) self.player1.hand.add(watchtower) self.player1.hand.add(trader) self.player1.spend_all_money() yield tu.send_input(self.player1, "buyCard", "Copper") self.assertTrue(self.player1.last_mode["mode"] == "select") #order reactions, reveal trader then watchtower yield tu.send_input(self.player1, "post_selection", ["Watchtower", "Trader"]) self.assertTrue(self.player1.last_mode["mode"] == "select") #reveal trader yield tu.send_input(self.player1, "post_selection", ["Reveal"]) self.assertTrue(self.game.supply.get_count("Copper") == 30) #gaining silver now yield tu.send_input(self.player1, "post_selection", ["Watchtower", "Trader"]) # trader's reaction is ignored since its for silver # reveal watchtower yield tu.send_input(self.player1, "post_selection", ["Reveal"]) yield tu.send_input(self.player1, "post_selection", ["Put on top of deck"]) self.assertTrue(self.player1.deck[-1].title == "Silver") #watchtower from the copper earlier yield tu.send_input(self.player1, "post_selection", ["Reveal"]) yield tu.send_input(self.player1, "post_selection", ["Put on top of deck"]) self.assertTrue(self.player1.deck[-1].title == "Silver")
def test_Develop(self): tu.print_test_header("Test Develop") develop = hl.Develop(self.game, self.player1) tu.add_many_to_hand(self.player1, develop, 2) self.player1.hand.add(supply_cards.Copper(self.game, self.player1)) self.player1.hand.add(supply_cards.Estate(self.game, self.player1)) develop.play() yield tu.send_input(self.player1, "post_selection", ["Copper"]) develop.play() yield tu.send_input(self.player1, "post_selection", ["Estate"]) yield tu.send_input(self.player1, "selectSupply", ["Silver"]) self.assertTrue("Silver" == self.player1.discard_pile[-1].title)
def test_Scheme(self): tu.print_test_header("test Scheme") scheme1 = hl.Scheme(self.game, self.player1) scheme2 = hl.Scheme(self.game, self.player2) tu.add_many_to_hand(self.player1, scheme1, 2) self.player2.hand.add(scheme2) tu.send_input(self.player1, "play", "Scheme") tu.send_input(self.player1, "play", "Scheme") self.player1.end_turn() self.assertTrue(self.player1.last_mode["mode"] == "select") yield tu.send_input(self.player1, "post_selection", ["Scheme", "Scheme"]) self.assertTrue(self.game.get_turn_owner() == self.player2) self.assertTrue(self.player1.hand.get_count("Scheme") == 2) tu.send_input(self.player2, "play", "Scheme") self.player2.end_turn() self.assertTrue(self.player2.last_mode["mode"] == "select") self.assertTrue(self.player2.last_mode["max_cards"] == 1) yield tu.send_input(self.player2, "post_selection", ["Scheme"]) self.player3.end_turn() self.assertTrue(self.player3.last_mode["mode"] != "select")
def test_Ill_Gotten_Gains(self): tu.print_test_header("test Ill-Gotten Gains") ill_gotten_gains = hl.Ill_Gotten_Gains(self.game, self.player1) self.player1.hand.add(ill_gotten_gains) yield tu.send_input(self.player1, "buyCard", "Ill Gotten Gains") self.assertTrue(len([x for x in self.player2.discard_pile if x.title == "Curse"]) == 1) self.assertTrue(len([x for x in self.player3.discard_pile if x.title == "Curse"]) == 1) ill_gotten_gains.play() yield tu.send_input(self.player1, "post_selection", ["Yes"]) self.assertTrue(len(self.player1.hand) == 6)
def test_Watchtower_react(self): tu.print_test_header("testing Watchtower reaction") watchtower = prosperity.Watchtower(self.game, self.player1) tu.set_player_hand(self.player1, [watchtower]) self.player1.buy_card("Silver") #0 buys should end turn normally but we have a reaction so should still be player1's turn self.assertTrue(self.game.get_turn_owner().name == self.player1.name) #shouldn't trigger reaction wait for opponents self.assertTrue(self.player2.last_mode["mode"] != "wait") self.assertTrue(self.player3.last_mode["mode"] != "wait") yield tu.send_input(self.player1, "post_selection", ["Reveal"]) yield tu.send_input(self.player1, "post_selection", ["Put on top of deck"]) self.assertTrue(len(self.player1.discard_pile) == 0) self.assertTrue(self.player1.deck[-1].title == "Silver")
def test_Cutpurse(self): tu.print_test_header("test Cutpurse") cutpurse = sea.Cutpurse(self.game, self.player1) self.player1.hand.add(cutpurse) discard_future = gen.Future() self.player2.discard = unittest.mock.Mock(return_value=discard_future) self.player3.discard = unittest.mock.Mock(return_value=gen.Future()) balance = self.player1.balance tu.send_input(self.player1, "play", "Cutpurse") self.assertTrue(self.player1.balance == balance + 2) self.player2.discard.assert_called_with(['Copper'], self.player2.discard_pile) discard_future.set_result([]) yield gen.moment self.player3.discard.assert_called_with(['Copper'], self.player3.discard_pile)
def test_Stables(self): tu.print_test_header("test Stables") stables = hl.Stables(self.game, self.player1) stables2 = hl.Stables(self.game, self.player1) self.player1.hand.add(stables) self.player1.deck.append(stables2) stables.play() yield tu.send_input(self.player1, "post_selection", ["Copper"]) # original hand of 6 - stables - copper = 4, draw 3 = 7 self.assertTrue(len(self.player1.hand) == 7) self.assertTrue(self.player1.actions == 1) stables2.play() # nothing happens if you don't discard a treasure yield tu.send_input(self.player1, "post_selection", []) self.assertTrue(len(self.player1.hand) == 6) self.assertTrue(self.player1.actions == 0)
def test_Treasury(self): tu.print_test_header("test Treasury") treasury1 = sea.Treasury(self.game, self.player1) treasury2 = sea.Treasury(self.game, self.player1) self.player1.hand.add(treasury1) self.player1.hand.add(treasury2) select_future = gen.Future() self.player1.select = unittest.mock.Mock(return_value=select_future) tu.send_input(self.player1, "play", "Treasury") tu.send_input(self.player1, "play", "Treasury") self.player1.end_turn() self.player1.select.assert_called_once_with(1, 1, [0, 1, 2], unittest.mock.ANY) select_future.set_result([2]) yield gen.sleep(.1) self.assertTrue(self.player1.hand.get_count("Treasury") == 2)
def test_Rabble(self): tu.print_test_header("test Rabble") rabble = prosperity.Rabble(self.game, self.player1) copper = supply_cards.Copper(self.game, self.player2) estate = supply_cards.Estate(self.game, self.player2) self.player2.deck.append(estate) self.player2.deck.append(copper) self.player2.deck.append(estate) duchy = supply_cards.Duchy(self.game, self.player3) gardens = base.Gardens(self.game, self.player3) great_hall = intrigue.Great_Hall(self.game, self.player3) self.player3.deck.append(duchy) self.player3.deck.append(gardens) self.player3.deck.append(great_hall) rabble.play() topdeck1 = self.player2.topdeck() topdeck2 = self.player2.topdeck() self.assertTrue(topdeck1.title == "Estate") self.assertTrue(topdeck2.title == "Estate") yield tu.send_input(self.player3, "post_selection", ["Gardens", "Duchy"]) topdeck1 = self.player3.topdeck() topdeck2 = self.player3.topdeck() self.assertTrue(topdeck1.title == "Duchy") self.assertTrue(topdeck2.title == "Gardens")
def test_double_wait_timer(self): tu.print_test_header("test double wait") torturer = intr.Torturer(self.game, self.player1) self.player1.hand.add(torturer) torturer.play() self.assertTrue(self.player2.waiter.afk_timer != None) #timer for choosing which torturer method initial_timer = self.player2.waiter.afk_timer yield tu.send_input(self.player2, "post_selection", ["Discard 2 cards"]) #timer for choosing which cards to discard second_timer = self.player2.waiter.afk_timer self.assertTrue(initial_timer != second_timer) yield tu.send_input(self.player2, "post_selection", ["Copper", "Copper"]) self.assertTrue(self.player2.waiter.afk_timer == None) yield tornado.gen.sleep(3) self.assertTrue(self.player2.waiter.is_afk == False)
def test_Mountebank(self): tu.print_test_header("test Mountebank") mountebank = prosperity.Mountebank(self.game, self.player1) curse = supply_cards.Curse(self.game, self.player2) self.player2.hand.add(curse) mountebank.play() self.assertTrue(self.player1.balance == 2) yield tu.send_input(self.player2, "post_selection", ["Yes"]) self.assertTrue(self.player2.discard_pile[0].title == "Curse") yield tu.send_input(self.player2, "post_selection", ["No"]) #curse is gained first then copper self.assertTrue(self.player3.discard_pile[0].title == "Curse") self.assertTrue(self.player3.discard_pile[1].title == "Copper")
def test_Throne_Room_Scheme(self): tu.print_test_header("test Throne Room Scheme") scheme = hl.Scheme(self.game, self.player1) tr = base.Throne_Room(self.game, self.player1) self.player1.hand.add(scheme) self.player1.hand.add(tr) tr.play() yield tu.send_input(self.player1, "post_selection", ["Scheme"]) self.player1.end_turn() self.assertTrue(self.player1.last_mode["mode"] == "select") self.assertTrue(self.player1.last_mode["max_cards"] == 2) num_cards = len(self.player1.all_cards()) yield tu.send_input(self.player1, "post_selection", ["Throne Room", "Scheme"]) self.assertTrue(num_cards == len(self.player1.all_cards())) self.assertTrue("Throne Room" in self.player1.hand) self.assertTrue("Scheme" in self.player1.hand)
def test_Margrave(self): tu.print_test_header("test Margrave") margrave = hl.Margrave(self.game, self.player1) tu.set_player_hand(self.player1, [margrave]) margrave.play() self.assertTrue(len(self.player1.hand)==3) self.assertTrue(len(self.player2.hand)==6) self.assertTrue(len(self.player3.hand)==6) yield tu.send_input(self.player2, "post_selection", ["Copper", "Copper", "Copper"]) yield tu.send_input(self.player3, "post_selection", ["Copper", "Copper", "Copper"]) self.assertTrue(len(self.player2.hand)==3) self.assertTrue(len(self.player2.discard_pile)==3) self.assertTrue(len(self.player3.hand)==3) self.assertTrue(len(self.player3.discard_pile)==3)
def test_Duchess(self): tu.print_test_header("Test Duchess") duchess = hl.Duchess(self.game, self.player1) self.player1.hand.add(duchess) player1top = self.player1.deck[-1] player2top = self.player2.deck[-1] player3top = self.player3.deck[-1] tu.send_input(self.player1, "play", "Duchess") self.assertTrue(self.player1.balance == 2) self.assertTrue(self.player1.last_mode["mode"] == "select") self.assertTrue(self.player2.last_mode["mode"] == "select") self.assertTrue(self.player3.last_mode["mode"] == "select") yield tu.send_input(self.player2, "post_selection", ["Discard"]) self.assertTrue(self.player1.last_mode["mode"] == "select") self.assertTrue(self.player2.discard_pile[-1] == player2top) self.assertTrue(self.player2.last_mode["mode"] != "select") yield tu.send_input(self.player1, "post_selection", ["Put Back"]) self.assertTrue(self.player1.deck[-1] == player1top) self.assertTrue(self.player1.last_mode["mode"] == "wait") yield tu.send_input(self.player3, "post_selection", ["Discard"]) self.assertTrue(self.player1.last_mode["mode"] != "wait") self.player1.end_turn() self.player2.balance = 5 yield tu.send_input(self.player2, "buyCard", "Duchy") self.assertTrue(self.player2.last_mode["mode"] == "select") yield tu.send_input(self.player2, "post_selection", ["Yes"]) self.assertTrue(self.player2.last_mode["mode"] != "select") self.assertTrue(self.player2.discard_pile[-1].title == "Duchess")
def test_Ill_Gotten_Gains(self): tu.print_test_header("test Ill-Gotten Gains") ill_gotten_gains = hl.Ill_Gotten_Gains(self.game, self.player1) self.player1.hand.add(ill_gotten_gains) yield tu.send_input(self.player1, "buyCard", "Ill Gotten Gains") self.assertTrue( len([x for x in self.player2.discard_pile if x.title == "Curse"]) == 1) self.assertTrue( len([x for x in self.player3.discard_pile if x.title == "Curse"]) == 1) ill_gotten_gains.play() yield tu.send_input(self.player1, "post_selection", ["Yes"]) self.assertTrue(len(self.player1.hand) == 6)
def test_Salvager(self): tu.print_test_header("test Salvager") salvager = sea.Salvager(self.game, self.player1) province = supply_cards.Province(self.game, self.player1) self.player1.hand.add(province) salvager.play() yield tu.send_input(self.player1, "post_selection", ["Province"]) self.assertTrue(self.player1.buys == 2) self.assertTrue(self.player1.balance == 8)
def test_Masquerade_waits(self): tu.print_test_header("test Masquerade waits") masquerade = intrigue.Masquerade(self.game, self.player1) curse = supply_cards.Curse(self.game, self.player1) estate = supply_cards.Estate(self.game, self.player2) estate3 = supply_cards.Estate(self.game, self.player3) self.player1.hand.add(masquerade) self.player1.hand.add(curse) self.player2.hand.add(estate) self.player3.hand.add(estate3) masquerade.play() yield tu.send_input(self.player1, "post_selection", ["Curse"]) self.assertTrue(self.player1.last_mode["mode"] == "wait") yield tu.send_input(self.player2, "post_selection", ["Estate"]) self.assertTrue(self.player1.last_mode["mode"] == "wait") yield tu.send_input(self.player3, "post_selection", ["Estate"]) self.assertTrue(self.player1.last_mode["mode"] == "select")
def test_Fools_Gold_Trader(self): tu.print_test_header("test Fool's Gold Trader") fg = hl.Fools_Gold(self.game, self.player2) trader = hl.Trader(self.game, self.player2) self.player2.hand.add(fg) self.player2.hand.add(trader) self.player1.balance = 8 yield tu.send_input(self.player1, "buyCard", "Province") # trash fool's gold yield tu.send_input(self.player2, "post_selection", ["Yes"]) # reveal trader yield tu.send_input(self.player2, "post_selection", ["Reveal"]) yield tu.send_input(self.player2, "post_selection", ["Yes"]) self.assertTrue(self.player2.discard_pile[-1].title == "Silver") self.assertTrue(self.game.trash_pile[-1].title == "Fool's Gold") self.assertTrue(self.player2.deck[-1].title != "Gold")
def test_Treasure_Map(self): tu.print_test_header("test Treasure Map") treasure_map = sea.Treasure_Map(self.game, self.player1) tu.add_many_to_hand(self.player1, treasure_map, 2) treasure_map.play() yield tu.send_input(self.player1, "post_selection", ["Yes"]) for i in range (0, 4): self.assertTrue(self.player1.deck.pop().title == 'Gold') self.assertTrue(self.player1.hand.get_count('Treasure Map') == 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")
def test_Swindler(self): tu.print_test_header("test Swindler") swindler = intrigue.Swindler(self.game, self.player1) self.player2.deck.append(supply_cards.Copper(self.game, self.player2)) self.player1.hand.add(swindler) swindler.play() yield tu.send_input(self.player1, "selectSupply", ["Curse"]) self.assertTrue(self.player2.discard_pile[-1].title == "Curse")
def test_Talisman_Supply(self): tu.print_test_header("test Talisman supply") talisman = prosperity.Talisman(self.game, self.player1) self.player1.hand.add(talisman) talisman.play() coppers = self.game.supply.get_count("Copper") yield tu.send_input(self.player1, "buyCard", "Copper") self.assertTrue(self.game.supply.get_count("Copper") == coppers - 2)
def test_Pearl_Diver(self): tu.print_test_header("test Pearl Diver") pearl_diver = sea.Pearl_Diver(self.game, self.player1) pearl_diver.play() self.assertTrue(len(self.player1.hand) == 6) self.assertTrue(self.player1.actions == 1) bottom_deck = self.player1.deck[0] yield tu.send_input(self.player1, "post_selection", ["Yes"]) self.assertTrue(self.player1.topdeck() == bottom_deck)
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)
def test_Bishop(self): tu.print_test_header("test Bishop") bishop = prosperity.Bishop(self.game, self.player1) steward = intrigue.Steward(self.game, self.player1) self.player1.hand.add(steward) bishop.play() self.assertTrue(self.player1.balance == 1) self.assertTrue(self.player1.vp == 1) yield tu.send_input(self.player1, "post_selection", ["Steward"]) self.assertTrue(self.player1.vp == 2) yield tu.send_input(self.player2, "post_selection", ["None"]) yield tu.send_input(self.player3, "post_selection", ["Copper"]) self.assertTrue(self.player3.vp == 0) self.assertTrue(len(self.player3.hand.card_array()) == 4) self.assertTrue(len(self.player2.hand.card_array()) == 5)
def test_Forge_Peddler(self): tu.print_test_header("test Forge Peddler") peddler = prosperity.Peddler(self.game, self.player1) self.player1.hand.add(peddler) #add one lab to hand self.player1.hand.add(base.Laboratory(self.game, self.player1)) #add forge self.player1.hand.add(prosperity.Forge(self.game, self.player1)) self.assertTrue(self.game.price_modifier["Peddler"] == 0) yield tu.send_input(self.player1, "play", "Laboratory") self.assertTrue(self.game.price_modifier["Peddler"] == 0) yield tu.send_input(self.player1, "play", "Forge") self.assertTrue(self.game.card_from_title("Peddler").get_price() == 8) yield tu.send_input(self.player1, "post_selection", ["Peddler"]) self.assertTrue(self.game.card_from_title("Peddler").get_price() == 8) yield tu.send_input(self.player1, "post_selection", ["Province"]) self.player1.spend_all_money() self.assertTrue(self.game.card_from_title("Peddler").get_price() == 4)
def test_trader_royal_seal(self): tu.print_test_header("test Royal Seal Trader") royal_seal = prosperity.Royal_Seal(self.game, self.player1) trader = hl.Trader(self.game, self.player1) self.player1.hand.add(royal_seal) self.player1.hand.add(trader) royal_seal.play() yield tu.send_input(self.player1, "buyCard", "Copper") self.assertTrue(self.player1.last_mode["mode"] == "select") yield tu.send_input(self.player1, "post_selection", ["Reveal"]) self.assertTrue(self.game.get_turn_owner() == self.player1) self.assertTrue(self.player1.last_mode["mode"] == "select") # royal seal triggers self.assertTrue(self.game.get_turn_owner() == self.player1) self.assertTrue(self.player1.last_mode["mode"] == "select") yield tu.send_input(self.player1, "post_selection", ["Yes"]) self.assertTrue(self.player1.deck[-1].title == "Silver")
def test_Cache(self): tu.print_test_header("test Cache") yield tu.send_input(self.player1, "buyCard", "Cache") self.assertTrue(len(self.player1.discard_pile) == 3) self.assertTrue( len([x for x in self.player1.discard_pile if x.title == "Cache"]) == 1) self.assertTrue( len([x for x in self.player1.discard_pile if x.title == "Copper"]) == 2)
def test_Margrave(self): tu.print_test_header("test Margrave") margrave = hl.Margrave(self.game, self.player1) tu.set_player_hand(self.player1, [margrave]) margrave.play() self.assertTrue(len(self.player1.hand) == 3) self.assertTrue(len(self.player2.hand) == 6) self.assertTrue(len(self.player3.hand) == 6) yield tu.send_input(self.player2, "post_selection", ["Copper", "Copper", "Copper"]) yield tu.send_input(self.player3, "post_selection", ["Copper", "Copper", "Copper"]) self.assertTrue(len(self.player2.hand) == 3) self.assertTrue(len(self.player2.discard_pile) == 3) self.assertTrue(len(self.player3.hand) == 3) self.assertTrue(len(self.player3.discard_pile) == 3)
def test_Watchtower_Witch(self): tu.print_test_header("testing Watchtower witch") self.player1.end_turn() self.assertTrue(self.game.get_turn_owner().name == self.player2.name) witch = base.Witch(self.game, self.player2) self.player2.hand.add(witch) watchtower2 = prosperity.Watchtower(self.game, self.player1) self.player1.hand.add(watchtower2) witch.play() self.assertTrue(self.player2.last_mode["mode"] == "wait") self.assertTrue(self.player3.discard_pile[-1].title == "Curse") yield tu.send_input(self.player1, "post_selection", ["Reveal"]) self.assertTrue(self.player2.last_mode["mode"] == "wait") yield tu.send_input(self.player1, "post_selection", ["Trash"]) yield gen.sleep(.1) self.assertTrue(self.player2.last_mode["mode"] != "wait") self.assertTrue(self.game.trash_pile[-1].title == "Curse")
def test_Mining_Village(self): tu.print_test_header("test Mining Village") mining_village = intrigue.Mining_Village(self.game, self.player1) mining_village2 = intrigue.Mining_Village(self.game, self.player1) self.player1.hand.add(mining_village) self.player1.hand.add(mining_village2) mining_village.play() yield tu.send_input(self.player1, "post_selection", ["No"]) self.assertTrue(self.player1.actions == 2) self.assertTrue(mining_village not in self.game.trash_pile) # note discard takes in a string as a parameter so the trashed mining village # could be mining_village or mining_village2 it is not guaranteed to be the same mining_village2.play() yield tu.send_input(self.player1, "post_selection", ["Yes"]) self.assertTrue(self.player1.actions == 3) self.assertTrue(self.game.trash_pile[-1].title == "Mining Village") self.assertTrue(len(self.player1.played_cards)==1) self.assertTrue(self.player1.balance == 2)
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))
def test_Crossroads(self): tu.print_test_header("test Crossroads") crossroads = hl.Crossroads(self.game, self.player1) tu.add_many_to_hand(self.player1, crossroads, 2) base_hand_size = len(self.player1.hand) num_victory_cards = len(self.player1.hand.get_cards_by_type("Victory")) tu.send_input(self.player1, "play", "Crossroads") num_actions = self.player1.actions self.assertTrue(num_actions == 3) self.assertTrue( len(self.player1.hand) == num_victory_cards + base_hand_size - 1) base_hand_size = len(self.player1.hand) num_victory_cards = len(self.player1.hand.get_cards_by_type("Victory")) deck_size = len(self.player1.deck) tu.send_input(self.player1, "play", "Crossroads") self.assertTrue(self.player1.actions == num_actions - 1) expected_drawn = min(deck_size, num_victory_cards) self.assertTrue( len(self.player1.hand) == expected_drawn + base_hand_size - 1)
def test_Warehouse(self): tu.print_test_header("test Warehouse") copper = supply_cards.Copper(self.game, self.player1) self.player1.hand.add(copper) warehouse = sea.Warehouse(self.game, self.player1) warehouse.play() self.assertTrue(self.player1.actions == 1) self.assertTrue(len(self.player1.hand) == 9) yield tu.send_input(self.player1, "post_selection", ["Copper", "Copper", "Copper"]) self.assertTrue(len(self.player1.hand) == 6)
def test_Conspirator_Throne_Room(self): tu.print_test_header("test Conspirator Throne Room") conspirator = intrigue.Conspirator(self.game, self.player1) throne_room = base.Throne_Room(self.game, self.player1) tu.set_player_hand(self.player1, [conspirator, throne_room]) throne_room.play() handsize = len(self.player1.hand) yield tu.send_input(self.player1, "post_selection", ["Conspirator"]) self.assertTrue(self.player1.actions == 1) self.assertTrue(self.player1.balance == 4) #discard conspirator, draw 1 card should have same handsize self.assertTrue(handsize == len(self.player1.hand))
def test_throne_room_throne_room(self): tu.print_test_header("Test throne room throne room") throneroom = base.Throne_Room(self.game, self.player1) throneroom2 = base.Throne_Room(self.game, self.player1) self.player1.hand.add(throneroom) self.player1.hand.add(throneroom2) yield tu.send_input(self.player1, "play", "Throne Room") yield tu.send_input(self.player1, "post_selection", ["Throne Room"]) self.player1.end_turn() self.player2.end_turn() self.player3.end_turn() self.player1.hand.add(throneroom) self.player1.hand.add(throneroom2) self.player1.hand.add(base.Village(self.game, self.player1)) self.player1.hand.add(base.Village(self.game, self.player1)) self.player1.hand.add(base.Woodcutter(self.game, self.player1)) yield tu.send_input(self.player1, "play", "Throne Room") yield tu.send_input(self.player1, "post_selection", ["Village"]) self.assertTrue(self.player1.actions == 4) self.assertTrue(self.player1.last_mode["mode"] == "action") yield tu.send_input(self.player1, "play", "Throne Room") yield tu.send_input(self.player1, "post_selection", ["Woodcutter"]) self.assertTrue(self.player1.balance == 4) self.assertTrue(self.player1.last_mode["mode"] == "action")
def test_Trader(self): tu.print_test_header("test Trader") witch = base.Witch(self.game, self.player1) trader = hl.Trader(self.game, self.player2) #2 curses left for i in range(0, self.game.supply.get_count("Curse") - 2): self.game.remove_from_supply("Curse") self.player1.hand.add(witch) self.player2.hand.add(trader) #reaction tu.send_input(self.player1, "play", "Witch") self.assertTrue(self.player1.last_mode["mode"] == "wait") yield tu.send_input(self.player2, "post_selection", ["Reveal"]) self.assertTrue(len(self.game.trash_pile) == 0) #and gained a silver self.assertTrue(self.player2.discard_pile[-1].title == "Silver") yield gen.sleep(.1) self.assertTrue(self.player1.last_mode["mode"] != "wait") self.assertTrue(self.player3.discard_pile[-1].title == "Curse") #one curse returned to supply self.assertTrue(self.game.supply.get_count("Curse") == 1) self.assertTrue(self.game.empty_piles == 0) self.player1.end_turn() self.player2.hand.add(supply_cards.Estate(self.game, self.player2)) tu.send_input(self.player2, "play", "Trader") yield tu.send_input(self.player2, "post_selection", ["Estate"]) self.assertTrue(len(self.player2.discard_pile) == 3)
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)
def test_Fools_Gold(self): tu.print_test_header("test Fool's Gold") fg = hl.Fools_Gold(self.game, self.player1) tu.clear_player_hand(self.player1) tu.add_many_to_hand(self.player1, fg, 3) fg2 = hl.Fools_Gold(self.game, self.player3) tu.add_many_to_hand(self.player3, fg2, 2) yield tu.send_input(self.player1, "play", "Fool's Gold") yield tu.send_input(self.player1, "play", "Fool's Gold") yield tu.send_input(self.player1, "play", "Fool's Gold") self.assertTrue(self.player1.balance == 9) yield tu.send_input(self.player1, "buyCard", "Province") self.assertTrue(self.player3.last_mode["mode"] == "select") self.assertTrue(self.game.get_turn_owner() == self.player1) # Trash fool's gold yield tu.send_input(self.player3, "post_selection", ["Yes"]) self.assertTrue(len(self.player3.hand) == 6) self.assertTrue(self.player3.deck[-1].title == "Gold") self.assertTrue(self.game.trash_pile[-1].title == "Fool's Gold") self.assertTrue(self.player3.last_mode["mode"] == "select") yield tu.send_input(self.player3, "post_selection", ["Yes"]) self.assertTrue(self.player3.deck[-2].title == "Gold")
def test_Torturer_Throne_Room(self): tu.print_test_header("test Torturer Throne Room") throne_room = base.Throne_Room(self.game, self.player1) torturer = intrigue.Torturer(self.game, self.player1) self.player1.hand.add(torturer) throne_room.play() #Throne room a torturer yield tu.send_input(self.player1, "post_selection", ["Torturer"]) #Player 2 is choosing, everyone else waits self.assertTrue(self.player1.last_mode["mode"] == "wait") self.assertTrue("player2" in self.player1.last_mode["msg"]) self.assertTrue(self.player3.last_mode["mode"] == "wait") yield tu.send_input(self.player2, "post_selection", ["Gain a Curse"]) #player3's turn to get torturered self.assertTrue("player3" in self.player1.last_mode["msg"]) self.assertTrue(self.player3.last_mode["mode"] != "wait") self.assertTrue(self.player2.last_mode["mode"] == "wait") self.assertTrue(self.player1.last_mode["mode"] == "wait") yield tu.send_input(self.player3, "post_selection", ["Gain a Curse"]) self.assertTrue("Curse" in self.player3.hand) yield gen.sleep(.1) #Second torturer yield tu.send_input(self.player2, "post_selection", ["Discard 2 cards"]) self.assertTrue(self.player1.last_mode["mode"] == "wait") self.assertTrue(self.player3.last_mode["mode"] == "wait") yield tu.send_input(self.player2, "post_selection", ["Curse", "Copper"]) self.assertTrue(self.player3.last_mode["mode"] != "wait") yield tu.send_input(self.player3, "post_selection", ["Gain a Curse"]) self.assertTrue(self.player1.last_mode["mode"] != "wait")