using DominionBase; using DominionBase.Cards; using DominionBase.Cards.DarkAges2ndEdition; using DominionBase.Cards.Universal; using DominionBase.Enums; using DominionBase.Piles; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using System.Collections.Generic; namespace DominionBaseUnitTest.Cards { [TestClass] public class UnitTestDarkAges2ndEdition : UnitTestCards { [TestMethod] public void Test_Armory_Basic() { var card = new Armory(); Assert.AreEqual(new Cost(4), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_BandOfMisfits_Basic() { var card = new BandOfMisfits(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Beggar_Basic() { var card = new Beggar(); Assert.AreEqual(new Cost(2), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Reaction, card.Category); } [TestMethod] public void Test_Catacombs_Basic() { var card = new Catacombs(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Count_Basic() { var card = new Count(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Cultist_Basic() { var card = new Cultist(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(2, card.Benefit.Cards); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack | Categories.Looter, card.Category); } [TestMethod] public void Test_DameAnna_Basic() { var card = new DameAnna(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack | Categories.Knight, card.Category); } [TestMethod] public void Test_DameJosephine_Basic() { var card = new DameJosephine(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(2, card.VictoryPoints); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack | Categories.Knight | Categories.Victory, card.Category); } [TestMethod] public void Test_DameMolly_Basic() { var card = new DameMolly(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(2, card.Benefit.Actions); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack | Categories.Knight, card.Category); } [TestMethod] public void Test_DameNatalie_Basic() { var card = new DameNatalie(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack | Categories.Knight, card.Category); } [TestMethod] public void Test_DameSylvia_Basic() { var card = new DameSylvia(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(new Currency(2), card.Benefit.Currency); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack | Categories.Knight, card.Category); } [TestMethod] public void Test_Feodum_Basic() { var card = new Feodum(); Assert.AreEqual(new Cost(4), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Victory, card.Category); } [TestMethod] public void Test_Forager_Basic() { var card = new Forager(); Assert.AreEqual(new Cost(3), card.BaseCost); Assert.AreEqual(1, card.Benefit.Buys); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Graverobber_Basic() { var card = new Graverobber(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Hermit_Basic() { var card = new Hermit(); Assert.AreEqual(new Cost(3), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Ironmonger_Basic() { var card = new Ironmonger(); Assert.AreEqual(new Cost(4), card.BaseCost); Assert.AreEqual(1, card.Benefit.Cards); Assert.AreEqual(1, card.Benefit.Actions); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Knights_Basic() { var card = new Knights(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack | Categories.Knight, card.Category); } [TestMethod] public void Test_Madman_Basic() { var card = new Madman(); Assert.AreEqual(new Cost(special: true), card.BaseCost); Assert.AreEqual(2, card.Benefit.Actions); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_MarketSquare_Basic() { var card = new MarketSquare(); Assert.AreEqual(new Cost(3), card.BaseCost); Assert.AreEqual(1, card.Benefit.Cards); Assert.AreEqual(1, card.Benefit.Actions); Assert.AreEqual(1, card.Benefit.Buys); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Reaction, card.Category); } [TestMethod] public void Test_Mercenary_Basic() { var card = new Mercenary(); Assert.AreEqual(new Cost(special: true), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack, card.Category); } [TestMethod] public void Test_Mystic_Basic() { var card = new Mystic(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(new Currency(2), card.Benefit.Currency); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_OvergrownEstate_Basic() { var card = new OvergrownEstate(); Assert.AreEqual(new Cost(1), card.BaseCost); Assert.AreEqual(0, card.VictoryPoints); Assert.AreEqual(Categories.Card | Categories.Victory | Categories.Shelter, card.Category); } [TestMethod] public void Test_Pillage_Basic() { var card = new Pillage(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack, card.Category); } [TestMethod] public void Test_PoorHouse_Basic() { var card = new PoorHouse(); Assert.AreEqual(new Cost(1), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_PoorHouse_Play() { var hand = new Deck(DominionBase.Players.DeckLocation.Hand, Visibility.All, VisibilityTo.All); hand.AddRange(mockPlayer.Object, new List { new Copper(), new Copper() }); mockPlayer.SetupGet(_ => _.Hand).Returns(hand); Card card = new PoorHouse(); card.FollowInstructions(mockPlayer.Object); mockPlayer.Verify(_ => _.ReceiveBenefit(It.Is(c => c == card), It.Is(cb => cb.Currency == new Currency(4, It.IsAny(), It.IsAny())), It.IsAny()), Times.Once); // Given 2 Treasures (Coppers) in hand, Poor House should give -2 money mockPlayer.Verify(_ => _.ReceiveBenefit(It.Is(c => c == card), It.Is(cb => cb.Currency == new Currency(-2, It.IsAny(), It.IsAny())), It.IsAny()), Times.Once); } [TestMethod] public void Test_PoorHouse_Play_LotsofTreasures() { var hand = new Deck(DominionBase.Players.DeckLocation.Hand, Visibility.All, VisibilityTo.All); hand.AddRange(mockPlayer.Object, new List { new Copper(), new Copper(), new Copper(), new Copper(), new Copper(), new Copper(), new Copper() }); mockPlayer.SetupGet(_ => _.Hand).Returns(hand); Card card = new PoorHouse(); card.FollowInstructions(mockPlayer.Object); mockPlayer.Verify(_ => _.ReceiveBenefit(It.Is(c => c == card), It.Is(cb => cb.Currency == new Currency(-7, It.IsAny(), It.IsAny())), It.IsAny()), Times.Once); } [TestMethod] public void Test_Rats_Basic() { var card = new Rats(); Assert.AreEqual(new Cost(4), card.BaseCost); Assert.AreEqual(1, card.Benefit.Cards); Assert.AreEqual(1, card.Benefit.Actions); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Rebuild_Basic() { var card = new Rebuild(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(1, card.Benefit.Actions); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Rogue_Basic() { var card = new Rogue(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(new Currency(2), card.Benefit.Currency); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack, card.Category); } [TestMethod] public void Test_Scavenger_Basic() { var card = new Scavenger(); Assert.AreEqual(new Cost(4), card.BaseCost); Assert.AreEqual(new Currency(2), card.Benefit.Currency); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Shelters_Basic() { var card = new Shelters(); Assert.AreEqual(Categories.Card | Categories.Shelter, card.Category); } [TestMethod] public void Test_SirBailey_Basic() { var card = new SirBailey(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(1, card.Benefit.Cards); Assert.AreEqual(1, card.Benefit.Actions); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack | Categories.Knight, card.Category); } [TestMethod] public void Test_SirDestry_Basic() { var card = new SirDestry(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(2, card.Benefit.Cards); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack | Categories.Knight, card.Category); } [TestMethod] public void Test_SirMartin_Basic() { var card = new SirMartin(); Assert.AreEqual(new Cost(4), card.BaseCost); Assert.AreEqual(2, card.Benefit.Buys); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack | Categories.Knight, card.Category); } [TestMethod] public void Test_SirMichael_Basic() { var card = new SirMichael(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack | Categories.Knight, card.Category); } [TestMethod] public void Test_SirVander_Basic() { var card = new SirVander(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack | Categories.Knight, card.Category); } [TestMethod] public void Test_Squire_Basic() { var card = new Squire(); Assert.AreEqual(new Cost(2), card.BaseCost); Assert.AreEqual(new Currency(1), card.Benefit.Currency); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Storeroom_Basic() { var card = new Storeroom(); Assert.AreEqual(new Cost(3), card.BaseCost); Assert.AreEqual(1, card.Benefit.Buys); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Urchin_Basic() { var card = new Urchin(); Assert.AreEqual(new Cost(3), card.BaseCost); Assert.AreEqual(1, card.Benefit.Cards); Assert.AreEqual(1, card.Benefit.Actions); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack, card.Category); } [TestMethod] public void Test_WanderingMinstrel_Basic() { var card = new WanderingMinstrel(); Assert.AreEqual(new Cost(4), card.BaseCost); Assert.AreEqual(1, card.Benefit.Cards); Assert.AreEqual(2, card.Benefit.Actions); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } } }