public void Have_non_empty_explanation()
        {
            // Arrange & Act
            ExplodingKittens.Cards.Attack attack = new ExplodingKittens.Cards.Attack(null, 1, "Test attack card");

            // Assert
            NUnit.Framework.Assert.IsNotEmpty(attack.Explanation);
        }
        public void Not_implement_play_method_called_with_another_player()
        {
            // Arrange
            Game game = new Game(2);

            ExplodingKittens.Cards.Attack attack = new ExplodingKittens.Cards.Attack(game, 1, "Test attack card");

            // Act, assert
            NUnit.Framework.Assert.That(() => attack.Play(game.NextPlayer), Throws.Exception.TypeOf <NotImplementedException>());
        }
        public void Set_the_current_player_as_not_attacked_when_played()
        {
            // Arrange
            Game game = new Game(2);

            ExplodingKittens.Cards.Attack attack = new ExplodingKittens.Cards.Attack(game, 1, "Test attack card");

            // Act
            attack.Play();

            // Assert
            NUnit.Framework.Assert.IsFalse(game.PreviousPlayer.IsUnderAttack);
        }
        public void Set_the_next_player_as_attacked_when_played()
        {
            // Arrange
            Game game = new Game(2);

            ExplodingKittens.Cards.Attack attack = new ExplodingKittens.Cards.Attack(game, 1, "Test attack card");

            // Act
            attack.Play();

            // Assert
            NUnit.Framework.Assert.IsTrue(game.ActivePlayer.IsUnderAttack);
        }
        public void Have_card_be_selected_when_selected()
        {
            // Arrange
            Game   game   = new Game(2);
            Player player = new Player(1, game);

            ExplodingKittens.Cards.Card card = new ExplodingKittens.Cards.Attack(game, 1, "Test card");
            player.Hand.Cards.Add(1, card);

            // Act
            player.SelectCard(1);

            // Assert
            NUnit.Framework.Assert.IsTrue(card.IsSelected);
        }