public void TestShouldGetDiagonalPrize() { //Arrange var test1DiagonalData = _markedSlashDiagonalData; var test2DiagonalData = _markedBackSlashDiagonalData; var testAllDiagonalData = test1DiagonalData.Union(test2DiagonalData).ToList(); var bingo = new Bingo2dPrizeClincher <DemoPrize>(_diagonalPrize); //Act var match1 = bingo.Decide(test1DiagonalData); var match2 = bingo.Decide(test2DiagonalData); var matchAll = bingo.Decide(testAllDiagonalData); //Assert Assert.True(match1.Count == 1); var prize1 = _diagonalPrize[0].Prize; Assert.Collection(match1, m1 => Assert.Equal(prize1, m1)); Assert.True(match1.Count == 1); var prize2 = _diagonalPrize[1].Prize; Assert.Collection(match2, m1 => Assert.Equal(prize2, m1)); Assert.True(matchAll.Count == 2); Assert.Collection(matchAll, m1 => Assert.Equal(prize1, m1), m2 => Assert.Equal(prize2, m2)); }
public void TestAllPrizeLine() { //Arrange var allPrize = _horizontalPrize.Concat(_verticalPrize).Concat(_diagonalPrize).ToList(); var bingo = new Bingo2dPrizeClincher <MyPrize>(allPrize); var markedPoints = new List <MarkPoint2D>().AddMarkPoint2Ds( (0, 0, true), (1, 0, true), (2, 0, true), (3, 0, true), (4, 0, true), (0, 1, true), (1, 1, true), (2, 1, true), (3, 1, true), (4, 1, true), (0, 2, true), (1, 2, true), (2, 2, true), (3, 2, true), (4, 2, true), (0, 3, true), (1, 3, true), (2, 3, true), (3, 3, true), (4, 3, true), (0, 4, true), (1, 4, true), (2, 4, true), (3, 4, true), (4, 4, true) ); //Act var matchedPrizes = bingo.Decide(markedPoints); //Assert Assert.True(matchedPrizes.Count == allPrize.Count); Assert.Collection(matchedPrizes, m => Assert.Equal(allPrize[0].Prize, m), m => Assert.Equal(allPrize[1].Prize, m), m => Assert.Equal(allPrize[2].Prize, m), m => Assert.Equal(allPrize[3].Prize, m), m => Assert.Equal(allPrize[4].Prize, m), m => Assert.Equal(allPrize[5].Prize, m), m => Assert.Equal(allPrize[6].Prize, m), m => Assert.Equal(allPrize[7].Prize, m), m => Assert.Equal(allPrize[8].Prize, m), m => Assert.Equal(allPrize[9].Prize, m), m => Assert.Equal(allPrize[10].Prize, m), m => Assert.Equal(allPrize[11].Prize, m)); }
public void TestNoPrizeLine() { //Arrange var bingo = new Bingo2dPrizeClincher <DemoPrize>(new List <PrizeLine2D <DemoPrize> >()); //Act var matchedPrizes = bingo.Decide(new List <MarkPoint2D>()); //Assert Assert.Empty(matchedPrizes); }
public void TestNoPrizeLine() { //Arrange var bingo = new Bingo2dPrizeClincher <MyPrize>(new List <PrizeLine2D <MyPrize> >()); var markedPoints = new List <MarkPoint2D>().AddMarkPoint2Ds( new MarkPoint2D((0, 0)), new MarkPoint2D((0, 1)), new MarkPoint2D((1, 1)), new MarkPoint2D((2, 1))); //Act var matchedPrizes = bingo.Decide(markedPoints); //Assert Assert.Empty(matchedPrizes); }
public void TestShouldGetVerticalPrize() { //Arrange var test1StColData = _marked1StColData; var test2NdColData = _marked2NdColData; var test3RdColData = _marked3rdColData; var test4ThColData = _marked4thColData; var testAllColData = test1StColData.Union(test2NdColData).Union(test3RdColData).Union(test4ThColData) .ToList(); var bingo = new Bingo2dPrizeClincher(_verticalPrize); //Act var match1 = bingo.Decide(test1StColData); var match2 = bingo.Decide(test2NdColData); var match3 = bingo.Decide(test3RdColData); var match4 = bingo.Decide(test4ThColData); var matchAll = bingo.Decide(testAllColData); //Assert Assert.True(match1.Count == 1); var prize1 = _verticalPrize[0].Prize; Assert.Collection(match1, m1 => Assert.Equal(prize1, m1)); Assert.True(match2.Count == 1); var prize2 = _verticalPrize[1].Prize; Assert.Collection(match2, m1 => Assert.Equal(prize2, m1)); Assert.True(match3.Count == 1); var prize3 = _verticalPrize[2].Prize; Assert.Collection(match3, m1 => Assert.Equal(prize3, m1)); Assert.True(match1.Count == 1); var prize4 = _verticalPrize[3].Prize; Assert.Collection(match4, m1 => Assert.Equal(prize4, m1)); Assert.True(matchAll.Count == 4); Assert.Collection(matchAll, m1 => Assert.Equal(prize1, m1), m2 => Assert.Equal(prize2, m2), m3 => Assert.Equal(prize3, m3), m4 => Assert.Equal(prize4, m4)); }
public void TestShouldGetHorizontalPrize() { //Arrange var test1StRowData = _marked1StRowData; var test2NdRowData = _marked2NdRowData; var test3RdRowData = _marked3RdRowData; var testAllRowData = test1StRowData.Union(test2NdRowData).Union(test3RdRowData).ToList(); var bingo = new Bingo2dPrizeClincher <DemoPrize>(_horizontalPrize); //Act var match1 = bingo.Decide(test1StRowData); var match2 = bingo.Decide(test2NdRowData); var match3 = bingo.Decide(test3RdRowData); var matchAll = bingo.Decide(testAllRowData); //Assert Assert.True(match1.Count == 1); var prize1 = _horizontalPrize[0].Prize; Assert.Collection(match1, m1 => Assert.Equal(prize1, m1)); Assert.True(match2.Count == 1); var prize2 = _horizontalPrize[1].Prize; Assert.Collection(match2, m1 => Assert.Equal(prize2, m1)); Assert.True(match3.Count == 1); var prize3 = _horizontalPrize[2].Prize; Assert.Collection(match3, m1 => Assert.Equal(prize3, m1)); Assert.True(matchAll.Count == 3); Assert.Collection(matchAll, m1 => Assert.Equal(prize1, m1), m2 => Assert.Equal(prize2, m2), m3 => Assert.Equal(prize3, m3)); }
static void Main(string[] args) { Console.WriteLine("\r\nTest Bingo game......"); var prizes = HorizontalPrize.Concat(VerticalPrize).Concat(DiagonalPrize).ToList(); var bingo = new Bingo2dPrizeClincher(prizes); Console.WriteLine("==========="); //actually you can provide only the points that marked true. var demoInput = new List <MarkPoint2D>() .AddMarkPoint2Ds( (0, 0, true), (0, 1, true), (0, 2, true), (0, 3, true), (1, 0, true), (1, 1, true), (1, 2, false), (1, 3, false), (2, 0, true), (2, 1, false), (2, 2, true), (2, 3, false), (3, 0, true), (3, 1, false), (3, 2, false), (3, 3, true) ); var matchedAward = bingo.Decide(demoInput); Console.WriteLine($"Get {matchedAward.Count} prize(s):"); Console.WriteLine(string.Join(", ", matchedAward)); Console.WriteLine("==========="); // designate MarkPoint using string representation: var demoInput2 = new[] { new MarkPoint2D("(0, 0)"), new MarkPoint2D("(1, 1)"), new MarkPoint2D("(2, 2)"), new MarkPoint2D("(3, 3)"), new MarkPoint2D("(0, 1)"), new MarkPoint2D("(0, 2)"), new MarkPoint2D("(0, 3)") }; var matchedAward2 = bingo.Decide(demoInput2).ToList(); Console.WriteLine($"Get {matchedAward2.Count} prize(s):"); Console.WriteLine(string.Join(", ", matchedAward2)); }
public void TestOnlyDiagonalPrizeLine() { //Arrange var allPrizes = _horizontalPrize.Concat(_verticalPrize).Concat(_diagonalPrize).ToArray(); var bingo = new Bingo2dPrizeClincher <MyPrize>(allPrizes); var markedPoints = new MarkPoint2D[] { }.AddMarkPoint2Ds( (0, 0, true), (1, 0, true), (0, 1, false), (1, 1, true), (2, 1, true), (0, 2, false), (1, 2, false), (2, 2, true), (0, 3, false), (1, 3, false), (2, 3, false), (3, 3, true), (0, 4, false), (1, 4, false), (2, 4, false), (3, 4, false), (4, 4, true) ); //Act var matchedPrizes = bingo.Decide(markedPoints); //Assert var myPrizes = matchedPrizes as MyPrize[] ?? matchedPrizes.ToArray(); Assert.True(myPrizes.Length == 1); Assert.Collection(myPrizes, m => Assert.Equal(allPrizes[10].Prize, m)); }