private static void RunAugmentationAndCheck(
            [NotNull] IMutableBidirectionalGraph <string, Edge <string> > graph)
        {
            int vertexCount = graph.VertexCount;
            int edgeCount   = graph.EdgeCount;
            int vertexId    = graph.VertexCount + 1;

            string[] noInEdgesVertices  = graph.Vertices.Where(graph.IsInEdgesEmpty).ToArray();
            string[] noOutEdgesVertices = graph.Vertices.Where(graph.IsOutEdgesEmpty).ToArray();

            using (var augmentor = new MultiSourceSinkGraphAugmentorAlgorithm <string, Edge <string> >(
                       graph,
                       () => (vertexId++).ToString(),
                       (s, t) => new Edge <string>(s, t)))
            {
                bool added = false;
                augmentor.EdgeAdded += edge => { added = true; };

                augmentor.Compute();
                Assert.IsTrue(added);
                VerifyVertexCount(graph, augmentor, vertexCount);
                VerifySourceConnector(graph, augmentor, noInEdgesVertices);
                VerifySinkConnector(graph, augmentor, noOutEdgesVertices);
            }

            Assert.AreEqual(graph.VertexCount, vertexCount);
            Assert.AreEqual(graph.EdgeCount, edgeCount);
        }