public void ReachabilitySolverTestZero()
        {
            var arena = new Arena()
             .AddPlayerZeroNode(0)
             .AddPlayerOneNode(1)
             .AddPlayerOneNode(2)
             .AddPlayerZeroNode(3)
             .AddEdge(0, 1)
             .AddEdge(0, 2)
             .AddEdge(1, 1)
             .AddEdge(1, 3)
             .AddEdge(2, 2)
             .AddEdge(2, 3)
             .AddEdge(3, 0);

            var threeSet = new HashSet<int>();
            threeSet.Add(3);

            var solution = new ReachabilitySolver().ComputeWinningRegionZero(new ReachabilityGame(arena, threeSet));

            Assert.IsTrue(solution.getWinningRegion().Count == 1 &&
                solution.getWinningRegion().Contains(3));
            Assert.IsTrue(!solution.getStrategy().HasNextMove(0));
            Assert.IsTrue(!solution.getStrategy().HasNextMove(1));
            Assert.IsTrue(!solution.getStrategy().HasNextMove(2));
            Assert.IsTrue(!solution.getStrategy().HasNextMove(3));
        }
        public void ReachabilitySolverTestZero()
        {
            var arena = new Arena()
                        .AddPlayerZeroNode(0)
                        .AddPlayerOneNode(1)
                        .AddPlayerOneNode(2)
                        .AddPlayerZeroNode(3)
                        .AddEdge(0, 1)
                        .AddEdge(0, 2)
                        .AddEdge(1, 1)
                        .AddEdge(1, 3)
                        .AddEdge(2, 2)
                        .AddEdge(2, 3)
                        .AddEdge(3, 0);

            var threeSet = new HashSet <int>();

            threeSet.Add(3);

            var solution = new ReachabilitySolver().ComputeWinningRegionZero(new ReachabilityGame(arena, threeSet));

            Assert.IsTrue(solution.getWinningRegion().Count == 1 &&
                          solution.getWinningRegion().Contains(3));
            Assert.IsTrue(!solution.getStrategy().HasNextMove(0));
            Assert.IsTrue(!solution.getStrategy().HasNextMove(1));
            Assert.IsTrue(!solution.getStrategy().HasNextMove(2));
            Assert.IsTrue(!solution.getStrategy().HasNextMove(3));
        }