public void _05_Processor_Calculates_Transitions_Correclty()
        {
            var map = new SlidingPuzzleMap(
                "1111;" +
                "10W1;" +
                "101;" +
                "101;" +
                "111");
            var processor = new SlidingPuzzleProcessor(map);
            var initState = new SlidingPuzzleState(new Vector2Int(1, 3));

            var result = processor.ProcessWithTransitions(initState, new Vector2Int(0, -1));

            Assert.That(result.Transitions.Length, Is.EqualTo(1), $"Transitions Size Incorrect");
            Assert.That(result.Transitions[0],
                        Is.EqualTo(new Transition(initState.PlayerCoords, new Vector2Int(1, 1))),
                        $"Transition list is incorrect");
        }
        public void _04_Processor_Move_Correctly_Resolved(int[] start, int[] dir, int[] expected, bool expectedWin)
        {
            var map = new SlidingPuzzleMap(
                "1111;" +
                "1001;" +
                "1011;" +
                "1W1;" +
                "111");
            var processor = new SlidingPuzzleProcessor(map);
            var initState = new SlidingPuzzleState(new Vector2Int(start[0], start[1]));

            var result = processor.Process(initState, new Vector2Int(dir[0], dir[1]));

            Assert.That(result.PlayerCoords, Is.EqualTo(new Vector2Int(expected[0], expected[1])), "Player is in incorrect position");
            if (expectedWin)
            {
                Assert.That(result.Type, Is.EqualTo(SlidingPuzzleState.StateType.Win), "Move is not registered as winning");
            }
            else
            {
                Assert.That(result.Type, Is.EqualTo(SlidingPuzzleState.StateType.Idle), "Move is registered as winning");
            }
        }