public void TestGenerateMediumGraphSpace()
        {
            List <Tuple <int, int> > connections = new ();

            connections.AddRange(SeriesGenerator.PairSeries(0, 5, true));
            connections.AddRange(SeriesGenerator.PairSeries(6, 11, true));
            connections.Add(new Tuple <int, int>(5, 11));
            connections.Add(new Tuple <int, int>(2, 8));

            Graph connectionGraph = GraphBuilder.BuildGraph("Connected Rings Graph (o=o)", 12, connections);

            string content = YamlGraphStorage.SaveGraph(connectionGraph);

            FileUtilities.WriteFile("graph_map_medium.yaml", "./", content);

            // test save and load in the same order
            Graph g = YamlGraphStorage.LoadGraph(content);

            for (int i = 0; i < g.Entities.Count; i++)
            {
                Assert.AreEqual($"Location {i+1}", g.Entities[i].Name);
            }
            Layer?wfcNeighborLayer = g.GetLayer("WfcNeighborLayer");

            Assert.NotNull(wfcNeighborLayer, "Expected to find the WfcNeighborLayer!");
        }
        public void TestGenerateComplexGraphSpace()
        {
            Graph connectionGraph = new Graph("Pokemon Region Graph");

            // Add Nodes
            for (int i = 0; i < 43; i++)
            {
                Entity entity = new($"Location {i}", connectionGraph);
                connectionGraph.Entities.Add(entity);
            }

            // Add WfcNeighbor Layer
            Layer neighborLayer = new("WfcNeighborLayer");

            connectionGraph.AddLayer(neighborLayer);

            List <Tuple <int, int> > connections = new ();

            connections.AddRange(SeriesGenerator.PairSeries(0, 31, true));
            //"victory road"
            connections.Add(new(2, 32));
            connections.AddRange(SeriesGenerator.PairSeries(32, 35));
            //"bills house"
            connections.Add(new(10, 36));
            connections.AddRange(SeriesGenerator.PairSeries(36, 38));
            //"saffron" - "cerulean"
            connections.AddRange(SeriesGenerator.PairWise(new[] { 10, 39, 20 }));
            //"saffron" - "lavender"
            connections.AddRange(SeriesGenerator.PairWise(new[] { 20, 40, 14 }));
            //"Fuschia" - "verm/lavender"
            connections.AddRange(SeriesGenerator.PairWise(new[] { 26, 41, 42, 16 }));

            foreach (var(from, to) in connections)
            {
                Assert.AreEqual($"Location {from}", connectionGraph.Entities[from].Name);
                neighborLayer.AddRelation(
                    connectionGraph.Entities[from], connectionGraph.Entities[to],
                    $"Connection from {from} to {to}");
            }

            string content = YamlGraphStorage.SaveGraph(connectionGraph);

            FileUtilities.WriteFile("graph_pokemon_map.yaml", "./", content);

            // test save and load in the same order
            Graph g = YamlGraphStorage.LoadGraph(content);

            for (int i = 0; i < g.Entities.Count; i++)
            {
                Assert.AreEqual($"Location {i}", g.Entities[i].Name);
            }
            Layer?wfcNeighborLayer = g.GetLayer("WfcNeighborLayer");

            Assert.NotNull(wfcNeighborLayer, "Expected to find the WfcNeighborLayer!");
        }