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); }
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)); }
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); }
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); }
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); }
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()); }
public bool Visit(ClueAboutRank clueAboutRank) { return(clueAboutRank.Rank == Card.Rank); }