using DominionBase; using DominionBase.Cards; using DominionBase.Cards.Base; using DominionBase.Enums; using DominionBase.Piles; using DominionBase.Players; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using System.Collections.Generic; namespace DominionBaseUnitTest.Cards { [TestClass] public class UnitTestBase : UnitTestCards { [TestMethod] public void Test_Adventurer_Basic() { var card = new Adventurer(); Assert.AreEqual(new Cost(6), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Bureaucrat_Basic() { var card = new Bureaucrat(); Assert.AreEqual(new Cost(4), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack, card.Category); } [TestMethod] public void Test_Cellar_Basic() { var card = new Cellar(); Assert.AreEqual(new Cost(2), card.BaseCost); Assert.AreEqual(1, card.Benefit.Actions); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Chancellor_Basic() { var card = new Chancellor(); Assert.AreEqual(new Cost(3), card.BaseCost); Assert.AreEqual(new Currency(2), card.Benefit.Currency); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Chancellor_Play() { var fakeDeck = new Deck(DeckLocation.Deck); fakeDeck.AddRange(mockPlayer.Object, new List { new DominionBase.Cards.Universal.Dummy() }); mockPlayer.Setup(_ => _.DrawPile).Returns(fakeDeck); var fakeResult = new ChoiceResult(new List { ResourcesHelper.Get("Yes") }); mockPlayer.Setup(_ => _.MakeChoice(It.IsAny())).Returns(fakeResult); Card card = new Chancellor(); card.FollowInstructions(mockPlayer.Object); mockGame.Verify(_ => _.SendMessage(It.IsAny(), It.IsAny()), Times.Once); mockPlayer.Verify(_ => _.RetrieveCardsFrom(It.Is(dl => dl == DeckLocation.Deck)), Times.Once); mockPlayer.Verify(_ => _.AddCardsInto(It.Is(dl => dl == DeckLocation.Discard), It.IsAny>(), It.IsAny()), Times.Once); mockPlayer.Verify(_ => _.ShuffleDrawPile(), Times.Never); } [TestMethod] public void Test_Chapel_Basic() { var card = new Chapel(); Assert.AreEqual(new Cost(2), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_CouncilRoom_Basic() { var card = new CouncilRoom(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(4, card.Benefit.Cards); Assert.AreEqual(1, card.Benefit.Buys); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Feast_Basic() { var card = new Feast(); Assert.AreEqual(new Cost(4), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Festival_Basic() { var card = new Festival(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(2, card.Benefit.Actions); Assert.AreEqual(new Currency(2), card.Benefit.Currency); Assert.AreEqual(1, card.Benefit.Buys); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); Assert.IsTrue(card.CanUndo); } [TestMethod] public void Test_Festival_Play() { var player = new Human(mockGame.Object, "test"); var turn = new Turn(player); player.SetCurrentTurn(turn); player.GoToActionPhase(); Card card = new Festival(); player.PlayCard(card); Assert.AreEqual(new Currency(2), player.Currency); Assert.AreEqual(2, player.Buys); Assert.AreEqual(2, player.Actions); } [TestMethod] public void Test_Gardens_Basic() { var card = new Gardens(); Assert.AreEqual(new Cost(4), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Victory, card.Category); } [TestMethod] public void Test_Laboratory_Basic() { var card = new Laboratory(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(1, card.Benefit.Actions); Assert.AreEqual(2, card.Benefit.Cards); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Library_Basic() { var card = new Library(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Market_Basic() { var card = new Market(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(1, card.Benefit.Actions); Assert.AreEqual(1, card.Benefit.Cards); Assert.AreEqual(new Currency(1), card.Benefit.Currency); Assert.AreEqual(1, card.Benefit.Buys); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Militia_Basic() { var card = new Militia(); Assert.AreEqual(new Cost(4), card.BaseCost); Assert.AreEqual(new Currency(2), card.Benefit.Currency); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack, card.Category); } [TestMethod] public void Test_Mine_Basic() { var card = new Mine(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Moat_Basic() { var card = new Moat(); Assert.AreEqual(new Cost(2), card.BaseCost); Assert.AreEqual(2, card.Benefit.Cards); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Reaction, card.Category); } [TestMethod] public void Test_Moneylender_Basic() { var card = new Moneylender(); Assert.AreEqual(new Cost(4), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Remodel_Basic() { var card = new Remodel(); Assert.AreEqual(new Cost(4), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Smithy_Basic() { var card = new Smithy(); Assert.AreEqual(new Cost(4), card.BaseCost); Assert.AreEqual(3, card.Benefit.Cards); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Spy_Basic() { var card = new Spy(); Assert.AreEqual(new Cost(4), card.BaseCost); Assert.AreEqual(1, card.Benefit.Actions); Assert.AreEqual(1, card.Benefit.Cards); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack, card.Category); } [TestMethod] public void Test_Thief_Basic() { var card = new Thief(); Assert.AreEqual(new Cost(4), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack, card.Category); } [TestMethod] public void Test_ThroneRoom_Basic() { var card = new ThroneRoom(); Assert.AreEqual(new Cost(4), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Village_Basic() { var card = new Village(); Assert.AreEqual(new Cost(3), card.BaseCost); Assert.AreEqual(2, card.Benefit.Actions); Assert.AreEqual(1, card.Benefit.Cards); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Witch_Basic() { var card = new Witch(); Assert.AreEqual(new Cost(5), card.BaseCost); Assert.AreEqual(2, card.Benefit.Cards); Assert.AreEqual(Categories.Card | Categories.Action | Categories.Attack, card.Category); } [TestMethod] public void Test_Woodcutter_Basic() { var card = new Woodcutter(); Assert.AreEqual(new Cost(3), card.BaseCost); Assert.AreEqual(new Currency(2), card.Benefit.Currency); Assert.AreEqual(1, card.Benefit.Buys); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } [TestMethod] public void Test_Workshop_Basic() { var card = new Workshop(); Assert.AreEqual(new Cost(3), card.BaseCost); Assert.AreEqual(Categories.Card | Categories.Action, card.Category); } } }