public void Constructor()
        {
            var formatProvider = new NullVertexTestFormatProvider();
            var graph          = new AdjacencyGraph <int, Edge <int> >();
            var populator      = new MsaglToStringGraphPopulator <int, Edge <int> >(graph);

            AssertPopulatorProperties(populator, graph);

            populator = new MsaglToStringGraphPopulator <int, Edge <int> >(graph, formatProvider: formatProvider);
            AssertPopulatorProperties(populator, graph, provider: formatProvider);

            populator = new MsaglToStringGraphPopulator <int, Edge <int> >(graph, "Format {0}");
            AssertPopulatorProperties(populator, graph, "Format {0}");

            populator = new MsaglToStringGraphPopulator <int, Edge <int> >(graph, "Format2 {0}", formatProvider);
            AssertPopulatorProperties(populator, graph, "Format2 {0}", formatProvider);

            var undirectedGraph = new UndirectedGraph <int, Edge <int> >();

            populator = new MsaglToStringGraphPopulator <int, Edge <int> >(undirectedGraph);
            AssertPopulatorProperties(populator, undirectedGraph);

            #region Local function

            void AssertPopulatorProperties <TVertex, TEdge>(
                MsaglToStringGraphPopulator <TVertex, TEdge> p,
                IEdgeListGraph <TVertex, TEdge> g,
                string f = null,
                IFormatProvider provider = null)
                where TEdge : IEdge <TVertex>
            {
                AssertAlgorithmState(p, g);
                Assert.IsNull(p.MsaglGraph);
                Assert.AreEqual(f ?? "{0}", p.Format);
                if (provider is null)
                {
                    Assert.IsNull(p.FormatProvider);
                }
                else
                {
                    Assert.AreSame(provider, p.FormatProvider);
                }
            }

            #endregion
        }
        public void VertexId()
        {
            var nullFormatProvider = new NullVertexTestFormatProvider();
            var formatProvider     = new VertexTestFormatProvider();
            var graph = new AdjacencyGraph <int, Edge <int> >();

            graph.AddVerticesAndEdgeRange(new[]
            {
                new Edge <int>(1, 2),
                new Edge <int>(2, 3)
            });
            graph.AddVertexRange(new[] { 5, 6 });

            // No special format
            var populator = new MsaglToStringGraphPopulator <int, Edge <int> >(graph);

            populator.Compute();

            // Check vertices has been well formatted
            Assert.IsNull(populator.MsaglGraph.FindNode("0"));
            Assert.IsNotNull(populator.MsaglGraph.FindNode("1"));


            // No special format (2)
            populator = new MsaglToStringGraphPopulator <int, Edge <int> >(graph, formatProvider: nullFormatProvider);
            populator.Compute();

            // Check vertices has been well formatted
            Assert.IsNull(populator.MsaglGraph.FindNode("0"));
            Assert.IsNotNull(populator.MsaglGraph.FindNode("1"));



            // With special format
            populator = new MsaglToStringGraphPopulator <int, Edge <int> >(graph, "MyTestFormat {0} Vertex");
            populator.Compute();

            // Check vertices has been well formatted
            Assert.IsNull(populator.MsaglGraph.FindNode("MyTestFormat 0 Vertex"));
            Assert.IsNotNull(populator.MsaglGraph.FindNode("MyTestFormat 1 Vertex"));


            // With special format (2)
            populator = new MsaglToStringGraphPopulator <int, Edge <int> >(graph, "MyTestFormat {0} Vertex", nullFormatProvider);
            populator.Compute();

            // Check vertices has been well formatted
            Assert.IsNull(populator.MsaglGraph.FindNode("MyTestFormat 0 Vertex"));
            Assert.IsNotNull(populator.MsaglGraph.FindNode("MyTestFormat 1 Vertex"));


            // With special format (3)
            populator = new MsaglToStringGraphPopulator <int, Edge <int> >(graph, formatProvider: formatProvider);
            populator.Compute();

            // Check vertices has been well formatted
            Assert.IsNull(populator.MsaglGraph.FindNode("MySpecialFormatProvider 0"));
            Assert.IsNotNull(populator.MsaglGraph.FindNode("MySpecialFormatProvider 1"));


            // With special format (4)
            populator = new MsaglToStringGraphPopulator <int, Edge <int> >(graph, "MyTestFormat {0} Vertex", formatProvider);
            populator.Compute();

            // Check vertices has been well formatted
            Assert.IsNull(populator.MsaglGraph.FindNode("MyTestFormat MySpecialFormatProvider 0 Vertex"));
            Assert.IsNotNull(populator.MsaglGraph.FindNode("MyTestFormat MySpecialFormatProvider 1 Vertex"));
        }