Ejemplo n.º 1
0
        public void ListenClue_HandWithTwoWhiteOneCardsAndClueAboutOne_AddsOneClueToEachCard()
        {
            IGameProvider provider = new GameProvider();
            Game          game     = new Game(provider, 2);

            var player = new Player(game);

            CardInHand firstWhiteOneCard = new CardInHand(player, new Card(Color.White, Rank.One));

            player.AddCard(firstWhiteOneCard);

            CardInHand secondWhiteOneCard = new CardInHand(player, new Card(Color.White, Rank.One));

            player.AddCard(secondWhiteOneCard);

            ClueType clue = new ClueAboutRank(Rank.One);

            //act
            player.ListenClue(
                Clue.Create(clue, new List <CardInHand> {
                firstWhiteOneCard, secondWhiteOneCard
            }));

            // assert
            Assert.AreEqual(1, player.GetCluesAboutCard(firstWhiteOneCard).Count);
            Assert.AreEqual(1, player.GetCluesAboutCard(secondWhiteOneCard).Count);
        }
Ejemplo n.º 2
0
        public void Match_ClueAboutThreeAndBlueTwoCard_ReturnsFalse()
        {
            var blueTwoCard = new Card(Color.Blue, Rank.Two);
            var matcher     = new ClueAndCardMatcher(blueTwoCard);
            var clue        = new ClueAboutRank(Rank.Three);

            Assert.IsFalse(clue.Accept(matcher));
        }
Ejemplo n.º 3
0
        public void Revert_IsValueFive_ReturnsNotIsValueFive()
        {
            ClueType clue = new ClueAboutRank(Rank.Five);

            ClueType revertedClue = clue.Revert();

            ClueType expectedClue = new ClueAboutNotRank(Rank.Five);

            Assert.AreEqual(expectedClue, revertedClue);
        }
Ejemplo n.º 4
0
        public void IsSubtleClue_FireworkWithBlueAndGreenOneAndCluesAboutOne_ReturnsFalse()
        {
            var firework = new FireworkPile(new GameProvider());

            firework.AddCard(new Card(Color.Blue, Rank.One));
            firework.AddCard(new Card(Color.Green, Rank.One));

            var clue = new ClueAboutRank(Rank.One);

            // act
            bool result = clue.IsSubtleClue(firework.GetExpectedCards());

            // assert
            Assert.IsFalse(result);
        }
Ejemplo n.º 5
0
        public void IsSubtleClue_FireworkWithAllOnesExceptRedAndYellowAndCluesAboutOne_ReturnsTrue()
        {
            var firework = new FireworkPile(new GameProvider());

            firework.AddCard(new Card(Color.Blue, Rank.One));
            firework.AddCard(new Card(Color.Green, Rank.One));
            firework.AddCard(new Card(Color.White, Rank.One));

            var clue = new ClueAboutRank(Rank.One);

            // act
            bool result = clue.IsSubtleClue(firework.GetExpectedCards());

            // assert
            Assert.IsTrue(result);
        }
Ejemplo n.º 6
0
        public void PlayCardEstimator_PlayOneRankedCardInDefaultIfPossible_ReturnsOne(int blowCounter)
        {
            // arrange
            var blueOneCard   = new Card(Color.Blue, Rank.One);
            var whiteTwoCard  = new Card(Color.White, Rank.Two);
            var blueThreeCard = new Card(Color.Blue, Rank.Three);

            var gameProvider     = GameProviderFabric.Create(Color.White, Color.Blue);
            var playStrategyStub = InitPlayStrategy(gameProvider);

            playStrategyStub.AddCardInHand(blueOneCard);
            playStrategyStub.AddCardInHand(whiteTwoCard);
            playStrategyStub.AddCardInHand(blueThreeCard);

            var dict = new Dictionary <Card, Probability>
            {
                { blueOneCard, new Probability(0.2) },
                { whiteTwoCard, new Probability(0.3) },
                { blueThreeCard, new Probability(0.4) },
            };

            SetProbabilities(playStrategyStub, dict);

            var boardContext = new BoardContextStub
            {
                ExpectedCards = new[] { new Card(Color.Blue, Rank.One), new Card(Color.White, Rank.Two), },
                BlowCounter   = blowCounter
            };

            var playerContext = PlayerContextFabric.CreateStub(playStrategyStub.Player, playStrategyStub.Hand);

            var clueAboutOneRank = new ClueAboutRank(Rank.One);
            var blueOneInHand    = playStrategyStub.Hand.First(card => card.Card == blueOneCard);

            playerContext.CluesAboutCard[blueOneInHand] = new List <ClueType> {
                clueAboutOneRank
            };

            // act
            var playCardEstimator = new PlayCardEstimator(playStrategyStub);
            var possibleCards     = playCardEstimator.GetPossibleCards(boardContext, playerContext).ToList();

            // assert
            Assert.IsTrue(possibleCards.Count == 1);
            Assert.AreEqual(blueOneCard, possibleCards.First());
        }
Ejemplo n.º 7
0
 public bool Visit(ClueAboutRank clueAboutRank)
 {
     return(clueAboutRank.Rank == Card.Rank);
 }