public void Encode_TwoRedFourCard_ReturnsMatrixWithZerosAndTwo() { // arrange var deckMatrixProvider = new FakeGameProvider() { Colors = new List <Color>() { Color.Yellow, Color.Red }, Ranks = new List <Rank>() { Rank.One, Rank.Two, Rank.Three, Rank.Four }, }; List <Card> list = new List <Card> { new Card(Rank.Four, Color.Red), new Card(Rank.Four, Color.Red), }; CardsToMatrixConverter converter = new CardsToMatrixConverter(deckMatrixProvider); // act Matrix result = converter.Encode(list); // assert Matrix expected = deckMatrixProvider.CreateEmptyMatrix(); expected[new Card(Rank.Four, Color.Red)] = 2; TestHelper.AreMatrixEqual(expected, result, deckMatrixProvider); }
public void Encode_WhiteOneCard_ReturnsMatrixWithOne() { // arrange var deckMatrixProvider = new FakeGameProvider { Colors = new List <Color> { Color.Yellow, Color.White }, Ranks = new List <Rank> { Rank.One, Rank.Two, Rank.Three } }; List <Card> list = new List <Card> { new Card(Rank.One, Color.White) }; CardsToMatrixConverter converter = new CardsToMatrixConverter(deckMatrixProvider); // act Matrix result = converter.Encode(list); Matrix expected = deckMatrixProvider.CreateEmptyMatrix(); expected[new Card(Color.White, Rank.One)] = 1; TestHelper.AreMatrixEqual(expected, result, deckMatrixProvider); }
public void Decode_MatrixWithOne1AndMany0_ReturnsListWithOneElement() { var deckMatrixProvider = new FakeGameProvider { Colors = new List <Color> { Color.Blue, Color.Green, Color.Red }, Ranks = new List <Rank> { Rank.One, Rank.Two, Rank.Three }, }; Matrix input = deckMatrixProvider.CreateEmptyMatrix(); input[new Card(Color.Green, Rank.Three)] = 1; CardsToMatrixConverter converter = new CardsToMatrixConverter(deckMatrixProvider); IReadOnlyList <Card> actual = converter.Decode(input); Assert.AreEqual(1, actual.Count); Card greenThree = new Card(Rank.Three, Color.Green); Assert.AreEqual(greenThree, actual[0]); }
public void GetCardsWhateverToPlay_EmptyPiles_ReturnsAllUniqueCards() { IGameProvider gameProvider = GameProviderFabric.Create(new List <Color> { Color.White, Color.Red }); var fireworkPile = new FireworkPile(gameProvider); var discardPile = new DiscardPile(gameProvider); var pileAnalyzer = new PilesAnalyzer(gameProvider); // act IReadOnlyList <Card> actual = pileAnalyzer.GetCardsWhateverToPlay(fireworkPile, discardPile); // assert var actualMatrix = new CardsToMatrixConverter(gameProvider).Encode(actual); var expectedMatrix = gameProvider.CreateEmptyMatrix(); expectedMatrix[Rank.One, Color.White] = 1; expectedMatrix[Rank.One, Color.Red] = 1; expectedMatrix[Rank.Two, Color.White] = 1; expectedMatrix[Rank.Two, Color.Red] = 1; expectedMatrix[Rank.Three, Color.White] = 1; expectedMatrix[Rank.Three, Color.Red] = 1; expectedMatrix[Rank.Four, Color.White] = 1; expectedMatrix[Rank.Four, Color.Red] = 1; expectedMatrix[Rank.Five, Color.White] = 1; expectedMatrix[Rank.Five, Color.Red] = 1; TestHelper.AreMatrixEqual(expectedMatrix, actualMatrix, gameProvider); }
public void Decode_ZeroMatrix_ReturnsEmptyList() { var deckMatrixProvider = new FakeGameProvider { Colors = new List <Color> { Color.Blue, Color.Red, Color.Green }, Ranks = new List <Rank> { Rank.One, Rank.Two, Rank.Three } }; Matrix zeroMatrix = deckMatrixProvider.CreateEmptyMatrix(); CardsToMatrixConverter converter = new CardsToMatrixConverter(deckMatrixProvider); IReadOnlyList <Card> actual = converter.Decode(zeroMatrix); Assert.IsEmpty(actual); }
public void Encode_ZeroCards_ReturnsZeroMatrix() { var deckMatrixProvider = new FakeGameProvider { Colors = new List <Color> { Color.Blue, Color.Green, Color.Red }, Ranks = new List <Rank> { Rank.One, Rank.Two, Rank.Three, } }; Matrix emptyMatrix = deckMatrixProvider.CreateEmptyMatrix(); CardsToMatrixConverter converter = new CardsToMatrixConverter(deckMatrixProvider); Matrix result = converter.Encode(new List <Card>()); TestHelper.AreMatrixEqual(emptyMatrix, result, deckMatrixProvider); }