コード例 #1
0
        public void IncrementAndDecrementResultInSameState()
        {
            MyGreatEngine engine1 = new MyGreatEngine(new GUI());
            PrivateObject obj1    = new PrivateObject(engine1);

            byte[,] expectedBoard = (byte[, ])obj1.GetFieldOrProperty("board");
            byte[,] expectedCons  = (byte[, ])obj1.GetFieldOrProperty("considered");
            var expectedHash = obj1.GetFieldOrProperty("currentHash");

            MyGreatEngine engine2 = new MyGreatEngine(new GUI());
            PrivateObject obj2    = new PrivateObject(engine2);

            obj2.Invoke("incrementBoard", new object[] { new Square(6, 7), true });
            obj2.Invoke("decrementBoard", new object[] { new Square(6, 7) });

            byte[,] resultBoard = (byte[, ])obj2.GetFieldOrProperty("board");
            byte[,] resultCons  = (byte[, ])obj2.GetFieldOrProperty("considered");
            var resultHash = obj2.GetFieldOrProperty("currentHash");

            for (int i = 0; i < 12; i++)
            {
                for (int j = 0; j < 12; j++)
                {
                    Assert.AreEqual(expectedBoard[i, j], resultBoard[i, j]);
                    Assert.AreEqual(expectedCons[i, j], resultCons[i, j]);
                }
            }
            Assert.AreEqual(expectedHash, resultHash);
        }
コード例 #2
0
        public void MoveGenerationTest()
        {
            MyGreatEngine engine = new MyGreatEngine(new GUI());
            PrivateObject obj    = new PrivateObject(engine);

            obj.Invoke("incrementBoard", new object[] { new Square(4, 5), true });

            var expected = new List <Square> {
                new Square(2, 3),
                new Square(3, 3),
                new Square(4, 3),
                new Square(5, 3),
                new Square(6, 3),
                new Square(2, 4),
                new Square(3, 4),
                new Square(4, 4),
                new Square(5, 4),
                new Square(6, 4),
                new Square(2, 6),
                new Square(3, 6),
                new Square(4, 6),
                new Square(5, 6),
                new Square(6, 6),
                new Square(2, 7),
                new Square(3, 7),
                new Square(4, 7),
                new Square(5, 7),
                new Square(6, 7),
                new Square(2, 5),
                new Square(3, 5),
                new Square(5, 5),
                new Square(6, 5)
            };

            var actual1 = new List <Square>();

            var gen = (IEnumerable <Square>)obj.Invoke("GenerateMoves", new object[] { });

            foreach (Square item in gen)
            {
                actual1.Add(item);
            }

            CollectionAssert.AreEquivalent(expected, actual1);

            //--------- now the shuffled one which should in addition always return its argument first

            expected.Add(new Square(15, 15));

            var actual2 = new List <Square>();

            var genShuffle = (IEnumerable <Square>)obj.Invoke("GenerateShuffledMoves", new object[] { new Square(15, 15) });

            foreach (Square item in genShuffle)
            {
                actual2.Add(item);
            }


            CollectionAssert.AreEquivalent(expected, actual2);
        }