public void Display_the_top_3_cards_of_the_draw_pile_when_played()
        {
            // Arrange
            Game game = new Game(2, new ExplodingKittens.Writers.MemoryWriter());

            ExplodingKittens.Cards.SeeTheFuture card1 = new ExplodingKittens.Cards.SeeTheFuture(game, 1, "Test card 1");
            ExplodingKittens.Cards.SeeTheFuture card2 = new ExplodingKittens.Cards.SeeTheFuture(game, 2, "Test card 2");
            ExplodingKittens.Cards.SeeTheFuture card3 = new ExplodingKittens.Cards.SeeTheFuture(game, 3, "Test card 3");
            ExplodingKittens.Cards.SeeTheFuture card4 = new ExplodingKittens.Cards.SeeTheFuture(game, 4, "Test card 4");
            string expectedOutput = string.Format("{0}\n{1}\n{2}\n", card4.ToString(), card3.ToString(), card2.ToString());

            game.Deck.DrawPile.Clear();
            game.Deck.DrawPile.Push(card2);
            game.Deck.DrawPile.Push(card3);
            game.Deck.DrawPile.Push(card4);

            Player player = game.Players.First.Value;

            player.Hand.Cards.Clear();
            player.Hand.Cards.Add(card1.Id, card1);

            // Act
            player.Hand.Cards[card1.Id].Play();

            // Assert
            NUnit.Framework.Assert.AreEqual(game.Writer.Message, expectedOutput);
        }
        public void Have_non_empty_explanation()
        {
            // Arrange & Act
            ExplodingKittens.Cards.SeeTheFuture seeTheFuture = new ExplodingKittens.Cards.SeeTheFuture(null, 1, "Test see the future card");

            // Assert
            NUnit.Framework.Assert.IsNotEmpty(seeTheFuture.Explanation);
        }
        public void Have_card_added_to_play_pile_when_played()
        {
            // Arrange
            Game   game            = new Game(2);
            Player player          = game.Players.First.Value;
            int    cardCountBefore = game.Deck.PlayPile.Count;

            // TODO: FIXME: Need a better way of adding test cards (ie. use test cards rather than actual cards)
            ExplodingKittens.Cards.SeeTheFuture testCard = new ExplodingKittens.Cards.SeeTheFuture(game, 0, "Test card");
            player.Hand.Cards.Add(testCard.Id, testCard);

            // Act
            player.PlayCard(testCard);

            // Assert
            NUnit.Framework.Assert.AreEqual(game.Deck.PlayPile.Count, cardCountBefore += 1);
        }