public void ClearTransitionFactories()
        {
            var graph     = new AdjacencyGraph <CloneableTestVertex, Edge <CloneableTestVertex> >();
            var algorithm = new CloneableVertexGraphExplorerAlgorithm <CloneableTestVertex, Edge <CloneableTestVertex> >(graph);

            var vertex1 = new CloneableTestVertex("1");
            var vertex2 = new CloneableTestVertex("2");
            var vertex3 = new CloneableTestVertex("3");

            var edge11 = new Edge <CloneableTestVertex>(vertex1, vertex1);
            var edge12 = new Edge <CloneableTestVertex>(vertex1, vertex2);
            var edge13 = new Edge <CloneableTestVertex>(vertex1, vertex3);
            var edge23 = new Edge <CloneableTestVertex>(vertex2, vertex3);
            var edge33 = new Edge <CloneableTestVertex>(vertex3, vertex3);

            var factory1 = new TestTransitionFactory <CloneableTestVertex>(new[]
            {
                new TestTransitionFactory <CloneableTestVertex> .VertexEdgesSet(vertex1, new[] { edge11, edge12, edge13 }),
                new TestTransitionFactory <CloneableTestVertex> .VertexEdgesSet(vertex2, new[] { edge23 })
            });

            algorithm.AddTransitionFactory(factory1);

            var factory2 = new TestTransitionFactory <CloneableTestVertex>(vertex3, new[] { edge33 });

            algorithm.AddTransitionFactory(factory2);

            algorithm.ClearTransitionFactories();

            Assert.IsFalse(algorithm.ContainsTransitionFactory(factory1));
            Assert.IsFalse(algorithm.ContainsTransitionFactory(factory2));
        }
        public void ContainsTransitionFactories()
        {
            var graph     = new AdjacencyGraph <CloneableTestVertex, Edge <CloneableTestVertex> >();
            var algorithm = new CloneableVertexGraphExplorerAlgorithm <CloneableTestVertex, Edge <CloneableTestVertex> >(graph);

            var vertex1  = new CloneableTestVertex("1");
            var factory1 = new TestTransitionFactory <CloneableTestVertex>(vertex1, Enumerable.Empty <Edge <CloneableTestVertex> >());

            Assert.IsFalse(algorithm.ContainsTransitionFactory(null));
            Assert.IsFalse(algorithm.ContainsTransitionFactory(factory1));

            algorithm.AddTransitionFactory(factory1);

            Assert.IsFalse(algorithm.ContainsTransitionFactory(null));
            Assert.IsTrue(algorithm.ContainsTransitionFactory(factory1));

            var vertex2  = new CloneableTestVertex("2");
            var factory2 = new TestTransitionFactory <CloneableTestVertex>(vertex2, Enumerable.Empty <Edge <CloneableTestVertex> >());

            algorithm.AddTransitionFactory(factory2);

            Assert.IsFalse(algorithm.ContainsTransitionFactory(null));
            Assert.IsTrue(algorithm.ContainsTransitionFactory(factory1));
            Assert.IsTrue(algorithm.ContainsTransitionFactory(factory2));

            algorithm.RemoveTransitionFactory(factory1);

            Assert.IsFalse(algorithm.ContainsTransitionFactory(null));
            Assert.IsFalse(algorithm.ContainsTransitionFactory(factory1));
            Assert.IsTrue(algorithm.ContainsTransitionFactory(factory2));
        }