예제 #1
0
        public void TestTransitionState()
        {
            int[]         board     = { 1, 2, 3, 4, 0, 5, 6, 7, 8 };
            SlidingPuzzle puzzle    = new SlidingPuzzle(board);
            Queue <int[]> expectedQ = new Queue <int[]>();

            SlidingPuzzleAction[] actions = new SlidingPuzzleAction[4];
            actions[0] = new SlidingPuzzleAction(4, 4 - 1);
            actions[1] = new SlidingPuzzleAction(4, 4 + 1);
            actions[2] = new SlidingPuzzleAction(4, 4 - 3);
            actions[3] = new SlidingPuzzleAction(4, 4 + 3);
            expectedQ.Enqueue(new int[] { 1, 2, 3, 0, 4, 5, 6, 7, 8 });
            expectedQ.Enqueue(new int[] { 1, 2, 3, 4, 5, 0, 6, 7, 8 });
            expectedQ.Enqueue(new int[] { 1, 0, 3, 4, 2, 5, 6, 7, 8 });
            expectedQ.Enqueue(new int[] { 1, 2, 3, 4, 7, 5, 6, 0, 8 });


            for (int i = 0; i < 4; i++)
            {
                System.Console.WriteLine("Testing TransitionState(" +
                                         string.Format("SlidingPuzzleAction {0}",
                                                       actions[i].ToString()));
                string actual   = puzzle.TransitionState(actions[i]);
                string expected = "{" + string.Join(",",
                                                    expectedQ.Dequeue()) + "}";

                Assert.Equal(actual, expected);
            }
        }