public void ContainsVertex() { var graph = new TransitionFactoryImplicitGraph <CloneableTestVertex, Edge <CloneableTestVertex> >(); var vertex1 = new CloneableTestVertex("1"); var vertex2 = new CloneableTestVertex("2"); var otherVertex1 = new CloneableTestVertex("1"); var vertex3 = new CloneableTestVertex("3"); var vertex4 = new CloneableTestVertex("4"); var edge34 = new Edge <CloneableTestVertex>(vertex3, vertex4); Assert.IsFalse(graph.ContainsVertex(vertex1)); Assert.IsFalse(graph.ContainsVertex(vertex2)); Assert.IsFalse(graph.ContainsVertex(otherVertex1)); Assert.IsFalse(graph.ContainsVertex(vertex3)); Assert.IsFalse(graph.ContainsVertex(vertex4)); var factory1 = new TestTransitionFactory <CloneableTestVertex>(vertex1, Enumerable.Empty <Edge <CloneableTestVertex> >()); graph.AddTransitionFactory(factory1); Assert.IsFalse(graph.ContainsVertex(vertex1)); // Not explored yet Assert.IsFalse(graph.ContainsVertex(vertex2)); Assert.IsFalse(graph.ContainsVertex(otherVertex1)); Assert.IsFalse(graph.ContainsVertex(vertex3)); Assert.IsFalse(graph.ContainsVertex(vertex4)); // ReSharper disable once ReturnValueOfPureMethodIsNotUsed graph.OutEdges(vertex1); Assert.IsTrue(graph.ContainsVertex(vertex1)); Assert.IsFalse(graph.ContainsVertex(vertex2)); Assert.IsFalse(graph.ContainsVertex(otherVertex1)); Assert.IsFalse(graph.ContainsVertex(vertex3)); Assert.IsFalse(graph.ContainsVertex(vertex4)); var factory2 = new TestTransitionFactory <CloneableTestVertex>(vertex2, Enumerable.Empty <Edge <CloneableTestVertex> >()); graph.AddTransitionFactory(factory2); Assert.IsTrue(graph.ContainsVertex(vertex1)); Assert.IsFalse(graph.ContainsVertex(vertex2)); // Not explored yet Assert.IsFalse(graph.ContainsVertex(otherVertex1)); Assert.IsFalse(graph.ContainsVertex(vertex3)); Assert.IsFalse(graph.ContainsVertex(vertex4)); // ReSharper disable once ReturnValueOfPureMethodIsNotUsed graph.OutEdges(vertex2); Assert.IsTrue(graph.ContainsVertex(vertex1)); Assert.IsTrue(graph.ContainsVertex(vertex2)); Assert.IsFalse(graph.ContainsVertex(otherVertex1)); Assert.IsFalse(graph.ContainsVertex(vertex3)); Assert.IsFalse(graph.ContainsVertex(vertex4)); var factoryOther1 = new TestTransitionFactory <CloneableTestVertex>(otherVertex1, Enumerable.Empty <Edge <CloneableTestVertex> >()); graph.AddTransitionFactory(factoryOther1); Assert.IsTrue(graph.ContainsVertex(vertex1)); Assert.IsTrue(graph.ContainsVertex(vertex2)); Assert.IsFalse(graph.ContainsVertex(otherVertex1)); // Not explored yet Assert.IsFalse(graph.ContainsVertex(vertex3)); Assert.IsFalse(graph.ContainsVertex(vertex4)); // ReSharper disable once ReturnValueOfPureMethodIsNotUsed graph.OutEdges(otherVertex1); Assert.IsTrue(graph.ContainsVertex(vertex1)); Assert.IsTrue(graph.ContainsVertex(vertex2)); Assert.IsTrue(graph.ContainsVertex(otherVertex1)); Assert.IsFalse(graph.ContainsVertex(vertex3)); Assert.IsFalse(graph.ContainsVertex(vertex4)); var factory3 = new TestTransitionFactory <CloneableTestVertex>(vertex3, new[] { edge34 }); graph.AddTransitionFactory(factory3); Assert.IsTrue(graph.ContainsVertex(vertex1)); Assert.IsTrue(graph.ContainsVertex(vertex2)); Assert.IsTrue(graph.ContainsVertex(otherVertex1)); Assert.IsFalse(graph.ContainsVertex(vertex3)); // Not explored yet Assert.IsFalse(graph.ContainsVertex(vertex4)); // ReSharper disable once ReturnValueOfPureMethodIsNotUsed graph.OutEdges(vertex3); Assert.IsTrue(graph.ContainsVertex(vertex1)); Assert.IsTrue(graph.ContainsVertex(vertex2)); Assert.IsTrue(graph.ContainsVertex(otherVertex1)); Assert.IsTrue(graph.ContainsVertex(vertex3)); Assert.IsTrue(graph.ContainsVertex(vertex4)); // Discovered when requesting vertex3 }