public void InitialPlayerBHandShouldNotBeNull()
        {
            var game = HearthStoneGame.CreateGame();
            var hand = game.PlayerB.Hand;

            Assert.IsNotNull(hand);
        }
        public void PlayerBDeckShouldNotBeNull()
        {
            var game = HearthStoneGame.CreateGame();
            var deck = game.PlayerB.Deck;

            Assert.IsNotNull(deck);
        }
        public void DudCardShouldHasNoEffectOnEnemyHealth()
        {
            var game      = HearthStoneGame.CreateGame();
            var player    = game.PlayerA;
            var enemy     = game.PlayerB;
            var hand      = player.Hand;
            var handCards = hand.Cards
                            .Select((card, index) => new { Index = index, Card = card })
                            .Where(c => c.Card != null)
                            .ToList();

            var dudCard = handCards.Where(c => c.Card.ManaCost == 0).FirstOrDefault();

            while (dudCard == null)
            {
                var newCard = player.Deck.GetNextCard();
                if (newCard.ManaCost == 0)
                {
                    var emptySlotIndex = hand.Cards
                                         .Select((card, index) => new { Index = index, Card = card })
                                         .Where(c => c.Card == null)
                                         .First().Index;

                    hand.Cards[emptySlotIndex] = newCard;

                    dudCard = new { Index = emptySlotIndex, Card = newCard };
                }
            }

            var enemyHealth = enemy.Health;

            game.Attack(dudCard.Index);

            Assert.AreEqual(enemy.Health, enemyHealth);
        }
        public void PlayerBHandShouldBeOverloadWhenHandIsFull()
        {
            var game   = HearthStoneGame.CreateGame();
            var player = game.PlayerB;
            var deck   = player.Deck;
            var hand   = player.Hand;

            game.EndPlayerTurn();
            game.EndPlayerTurn();
            game.AcquireCardFromDeck();
            game.EndPlayerTurn();

            while (hand.EmptySlotCount > 0)
            {
                game.AcquireCardFromDeck();
                game.EndPlayerTurn();

                game.AcquireCardFromDeck();
                game.EndPlayerTurn();
            }

            var handCardsCount = hand.Cards.Count(c => c != null);
            var deckCount      = deck.Count;
            var totalCount     = handCardsCount + deckCount;

            game.AcquireCardFromDeck();

            var newHandCardsCount = hand.Cards.Count(c => c != null);
            var newDeckCount      = deck.Count;
            var newTotalCount     = newHandCardsCount + newDeckCount;

            Assert.AreEqual(newTotalCount, totalCount - 1);
        }
        public void CardManaCostShouldGreaterOrEqualZero()
        {
            var game = HearthStoneGame.CreateGame();
            var card = game.PlayerA.Deck.GetNextCard();

            Assert.IsTrue(card.ManaCost >= 0);
        }
        public void InitialDeckBCardCountShouldBe17()
        {
            var game = HearthStoneGame.CreateGame();
            var deck = game.PlayerB.Deck;

            Assert.AreEqual(deck.Count, 17);
        }
        public void InitialPlayerBHandEmptySlotShouldBe2()
        {
            var game = HearthStoneGame.CreateGame();
            var hand = game.PlayerB.Hand;

            Assert.AreEqual(hand.EmptySlotCount, 2);
        }
        public void CardShouldNotBeNull()
        {
            var game = HearthStoneGame.CreateGame();
            var card = game.PlayerA.Deck.GetNextCard();

            Assert.IsNotNull(card);
        }
        public void InitialPlayerBHandSizeShouldBe5()
        {
            var game = HearthStoneGame.CreateGame();
            var hand = game.PlayerB.Hand;

            Assert.AreEqual(hand.Cards.Length, 5);
        }
        public void InitialPlayerBHandCardsShouldNotBeNull()
        {
            var game  = HearthStoneGame.CreateGame();
            var cards = game.PlayerB.Hand.Cards;

            Assert.IsNotNull(cards);
        }
        public void PlayerBShouldHaveSpecificManaCostDamageCards()
        {
            var manaCosts = new List <int>(new int[] { 0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 8 });
            var game      = HearthStoneGame.CreateGame();
            var player    = game.PlayerB;
            var hand      = player.Hand;
            var deck      = player.Deck;

            foreach (var handCard in hand.Cards)
            {
                if (handCard != null)
                {
                    Assert.IsTrue(manaCosts.Contains(handCard.ManaCost));
                    manaCosts.Remove(handCard.ManaCost);
                }
            }

            var deckCount = deck.Count;

            for (int i = 0; i < deckCount; i++)
            {
                var deckCard = deck.GetNextCard();
                Assert.IsNotNull(deckCard);
                Assert.IsTrue(manaCosts.Contains(deckCard.ManaCost));
                manaCosts.Remove(deckCard.ManaCost);
            }

            Assert.AreEqual(manaCosts.Count, 0);
        }
        public void InitialPlayerBHandShouldHave3Cards()
        {
            var game      = HearthStoneGame.CreateGame();
            var cards     = game.PlayerB.Hand.Cards;
            var cardCount = cards.Count(c => c != null);

            Assert.AreEqual(cardCount, 3);
        }
        public void PlayerATurnManaShouldBeEqualToPlayerManaSlotEveryTurn()
        {
            var game   = HearthStoneGame.CreateGame();
            var player = game.PlayerA;

            for (int i = 0; i < 20; i++)
            {
                game.EndPlayerTurn();
                game.EndPlayerTurn();
                Assert.AreEqual(player.TurnMana, player.ManaSlot);
            }
        }
Esempio n. 14
0
        public GamePanel()
        {
            InitializeComponent();

            Game = HearthStoneGame.CreateGame();

            Game.GameOvered += Game_GameOvered;

            playerA.Player = Game.PlayerA;
            playerB.Player = Game.PlayerB;

            RenderView();
        }
        public void DeckBSouldGiveNotNullInitialCountCardsAndOthersShouldBeNull()
        {
            var game  = HearthStoneGame.CreateGame();
            var deck  = game.PlayerB.Deck;
            var count = deck.Count;

            for (int i = 0; i < count; i++)
            {
                var card = deck.GetNextCard();
                Assert.IsNotNull(card);
            }
            var nullCard = deck.GetNextCard();

            Assert.IsNull(nullCard);
        }
        public void PlayerCanAttackAsHeCanAfford()
        {
            var game   = HearthStoneGame.CreateGame();
            var player = game.PlayerA;
            var enemy  = game.PlayerB;

            bool successAttackTested        = false;
            bool insufficientManaCostTested = false;

            while (!game.GameOver && !successAttackTested && !insufficientManaCostTested)
            {
                var hand = player.Hand;
                var deck = player.Deck;

                var cards = hand.Cards
                            .Select((card, index) => new { Index = index, Card = card })
                            .Where(c => c.Card != null)
                            .ToList();
                foreach (var card in cards)
                {
                    var manaCost     = card.Card.ManaCost;
                    var turnMana     = player.TurnMana;
                    var enemyHealth  = enemy.Health;
                    var attackResult = game.Attack(card.Index);

                    if (manaCost <= turnMana)
                    {
                        var resultIsExpected = attackResult == AttackResult.Success || attackResult == AttackResult.SuccessGameEnd;
                        Assert.IsTrue(resultIsExpected);
                        Assert.AreEqual(player.TurnMana, turnMana - manaCost);
                        Assert.AreEqual(enemy.Health, enemyHealth - manaCost);
                        successAttackTested = true;
                    }
                    else
                    {
                        Assert.AreEqual(attackResult, AttackResult.InsufficientMana);
                        insufficientManaCostTested = true;
                    }
                }

                game.EndPlayerTurn();

                var playerTemp = player;
                player = enemy;
                enemy  = playerTemp;
            }
        }
        public void PlayerBManaSlotShouldBeMaximum10()
        {
            var game   = HearthStoneGame.CreateGame();
            var player = game.PlayerB;

            game.EndPlayerTurn();
            game.EndPlayerTurn();

            for (int i = 0; i < 20; i++)
            {
                game.AcquireCardFromDeck();
                game.EndPlayerTurn();
                game.AcquireCardFromDeck();
                game.EndPlayerTurn();
            }

            Assert.AreEqual(player.ManaSlot, 10);
        }
        public void PlayerAHealthShouldBleedOutWhenDeckIsEmpty()
        {
            var game   = HearthStoneGame.CreateGame();
            var player = game.PlayerA;
            var deck   = player.Deck;
            var count  = deck.Count;

            for (int i = 0; i < count; i++)
            {
                deck.GetNextCard();
            }

            game.EndPlayerTurn();
            game.EndPlayerTurn();

            var health = player.Health;

            game.AcquireCardFromDeck();
            Assert.AreEqual(player.Health, health - 1);
        }
        public void PlayerBManaSlotShouldIncrementBy1EveryTurn()
        {
            var game   = HearthStoneGame.CreateGame();
            var player = game.PlayerB;

            game.EndPlayerTurn();
            game.EndPlayerTurn();

            var manaSlot = player.ManaSlot;

            for (int i = 0; i < 5; i++)
            {
                game.AcquireCardFromDeck();
                game.EndPlayerTurn();
                game.AcquireCardFromDeck();
                game.EndPlayerTurn();

                Assert.AreEqual(manaSlot + 1, player.ManaSlot);
                manaSlot = player.ManaSlot;
            }
        }
        public void CreatedGameShouldNotBeNull()
        {
            var game = HearthStoneGame.CreateGame();

            Assert.IsNotNull(game);
        }
        public void InitialPlayerBHelathShouldBe30()
        {
            var game = HearthStoneGame.CreateGame();

            Assert.AreEqual(game.PlayerB.Health, 30);
        }
        public void InitialPlayerBManaSlotShouldBe1()
        {
            var game = HearthStoneGame.CreateGame();

            Assert.AreEqual(game.PlayerB.ManaSlot, 1);
        }
        public void PlayerBShouldNotBeNull()
        {
            var game = HearthStoneGame.CreateGame();

            Assert.IsNotNull(game.PlayerB);
        }