Exemple #1
0
        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));
        }
Exemple #3
0
        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);
        }
Exemple #5
0
        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));
        }
Exemple #6
0
        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));
        }
Exemple #7
0
        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));
        }