public static void MatchingAllCards()
        {
            var randomGrid = GameGridModel.GenerateRandomGrid();

            randomGrid.ResetCardStates();
            Assert.IsTrue(randomGrid.cards.Count % 2 == 0);

            int cycles = randomGrid.cards.Count / 2;

            for (int i = 0; i < cycles; i++)
            {
                Card selectedCard = randomGrid.cards.Find(x => (x.state != ECardState.Eliminated));
                Assert.IsNotNull(selectedCard);
                List <Card> match = randomGrid.cards.FindAll(x => (x.content == selectedCard.content));
                Assert.IsTrue(match != null && match.Count == 2);
                match[0].state = ECardState.FaceUp;
                match[1].state = ECardState.FaceUp;
                GameGridModel.UpdateGameGrid(randomGrid);
                Assert.IsTrue(match[0].state == ECardState.Eliminated);
                Assert.IsTrue(match[1].state == ECardState.Eliminated);
            }

            for (int i = 0; i < randomGrid.cards.Count; i++)
            {
                Assert.IsTrue(randomGrid.cards[i].state == ECardState.Eliminated);
            }
        }
        public static void SingleCardStaysFaceUp()
        {
            var randomGrid = GameGridModel.GenerateRandomGrid();

            randomGrid.ResetCardStates();
            Card selectedCard = randomGrid.cards[0];

            selectedCard.state = ECardState.FaceUp;
            GameGridModel.UpdateGameGrid(randomGrid);
            Assert.IsTrue(selectedCard.state == ECardState.FaceUp);
        }
        public static void NonMatchingCardsFlipDown()
        {
            var randomGrid = GameGridModel.GenerateRandomGrid();

            randomGrid.ResetCardStates();
            Card selectedCard    = randomGrid.cards[0];
            Card nonMatchingCard = randomGrid.cards.Find(x => (x.content != selectedCard.content));

            selectedCard.state    = ECardState.FaceUp;
            nonMatchingCard.state = ECardState.FaceUp;
            GameGridModel.UpdateGameGrid(randomGrid);

            Assert.IsTrue(selectedCard.state == ECardState.FaceDown);
            Assert.IsTrue(nonMatchingCard.state == ECardState.FaceDown);
        }
        public static void MatchingCardsEliminated()
        {
            var randomGrid = GameGridModel.GenerateRandomGrid();

            randomGrid.ResetCardStates();
            Card        selectedCard  = randomGrid.cards[0];
            List <Card> matchingCards = randomGrid.cards.FindAll(x => (x.content == selectedCard.content));

            for (int i = 0; i < matchingCards.Count; i++)
            {
                matchingCards[i].state = ECardState.FaceUp;
            }

            GameGridModel.UpdateGameGrid(randomGrid);

            for (int i = 0; i < matchingCards.Count; i++)
            {
                Assert.IsTrue(matchingCards[i].state == ECardState.Eliminated);
            }
        }