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)); }
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 OutEdge_Throws() { var graph1 = new TransitionFactoryImplicitGraph <CloneableTestVertex, Edge <CloneableTestVertex> >(); OutEdge_NullThrows_Test(graph1); var graph2 = new TransitionFactoryImplicitGraph <CloneableTestVertex, Edge <CloneableTestVertex> >(); var vertex1 = new CloneableTestVertex("1"); var vertex2 = new CloneableTestVertex("2"); // ReSharper disable ReturnValueOfPureMethodIsNotUsed Assert.Throws <VertexNotFoundException>(() => graph2.OutEdge(vertex1, 0)); var factory1 = new TestTransitionFactory <CloneableTestVertex>( vertex1, Enumerable.Empty <Edge <CloneableTestVertex> >()); graph2.AddTransitionFactory(factory1); graph2.AddTransitionFactory( new TestTransitionFactory <CloneableTestVertex>(vertex2, Enumerable.Empty <Edge <CloneableTestVertex> >())); AssertIndexOutOfRange(() => graph2.OutEdge(vertex1, 0)); graph2.RemoveTransitionFactory(factory1); graph2.AddTransitionFactory( new TestTransitionFactory <CloneableTestVertex>(vertex1, new[] { new Edge <CloneableTestVertex>(vertex1, vertex2) })); AssertIndexOutOfRange(() => graph2.OutEdge(vertex1, 5)); // ReSharper restore ReturnValueOfPureMethodIsNotUsed }
public void ContainsTransitionFactories() { var graph = new TransitionFactoryImplicitGraph <CloneableTestVertex, Edge <CloneableTestVertex> >(); var vertex1 = new CloneableTestVertex("1"); var factory1 = new TestTransitionFactory <CloneableTestVertex>(vertex1, Enumerable.Empty <Edge <CloneableTestVertex> >()); Assert.IsFalse(graph.ContainsTransitionFactory(null)); Assert.IsFalse(graph.ContainsTransitionFactory(factory1)); graph.AddTransitionFactory(factory1); Assert.IsFalse(graph.ContainsTransitionFactory(null)); Assert.IsTrue(graph.ContainsTransitionFactory(factory1)); var vertex2 = new CloneableTestVertex("2"); var factory2 = new TestTransitionFactory <CloneableTestVertex>(vertex2, Enumerable.Empty <Edge <CloneableTestVertex> >()); graph.AddTransitionFactory(factory2); Assert.IsFalse(graph.ContainsTransitionFactory(null)); Assert.IsTrue(graph.ContainsTransitionFactory(factory1)); Assert.IsTrue(graph.ContainsTransitionFactory(factory2)); graph.RemoveTransitionFactory(factory1); Assert.IsFalse(graph.ContainsTransitionFactory(null)); Assert.IsFalse(graph.ContainsTransitionFactory(factory1)); Assert.IsTrue(graph.ContainsTransitionFactory(factory2)); }
public void RemoveTransitionFactories() { var graph = new TransitionFactoryImplicitGraph <CloneableTestVertex, Edge <CloneableTestVertex> >(); Assert.IsFalse(graph.RemoveTransitionFactory(null)); var vertex1 = new CloneableTestVertex("1"); var vertex2 = new CloneableTestVertex("2"); var vertex3 = new CloneableTestVertex("3"); var factory1 = new TestTransitionFactory <CloneableTestVertex>(vertex1, Enumerable.Empty <Edge <CloneableTestVertex> >()); var factory2 = new TestTransitionFactory <CloneableTestVertex>(vertex2, Enumerable.Empty <Edge <CloneableTestVertex> >()); var factory3 = new TestTransitionFactory <CloneableTestVertex>(vertex3, Enumerable.Empty <Edge <CloneableTestVertex> >()); graph.AddTransitionFactories(new[] { factory1, factory2 }); Assert.IsFalse(graph.ContainsTransitionFactory(null)); Assert.IsTrue(graph.ContainsTransitionFactory(factory1)); Assert.IsTrue(graph.ContainsTransitionFactory(factory2)); Assert.IsFalse(graph.RemoveTransitionFactory(factory3)); Assert.IsTrue(graph.RemoveTransitionFactory(factory1)); Assert.IsFalse(graph.RemoveTransitionFactory(factory1)); Assert.IsTrue(graph.RemoveTransitionFactory(factory2)); var factory4 = new TestTransitionFactory <CloneableTestVertex>( vertex1, new[] { new Edge <CloneableTestVertex>(vertex1, vertex2), new Edge <CloneableTestVertex>(vertex1, vertex3) }); graph.AddTransitionFactory(factory4); Assert.IsTrue(graph.ContainsTransitionFactory(factory4)); // ReSharper disable once ReturnValueOfPureMethodIsNotUsed graph.OutEdges(vertex1); // Force exploration from vertex1 Assert.IsTrue(graph.RemoveTransitionFactory(factory4)); }
public void AddTransitionFactories() { var graph = new TransitionFactoryImplicitGraph <CloneableTestVertex, Edge <CloneableTestVertex> >(); var vertex1 = new CloneableTestVertex("1"); var vertex2 = new CloneableTestVertex("2"); var factory1 = new TestTransitionFactory <CloneableTestVertex>(vertex1, Enumerable.Empty <Edge <CloneableTestVertex> >()); var factory2 = new TestTransitionFactory <CloneableTestVertex>(vertex2, Enumerable.Empty <Edge <CloneableTestVertex> >()); graph.AddTransitionFactories(new[] { factory1, factory2 }); Assert.IsTrue(graph.ContainsTransitionFactory(factory1)); Assert.IsTrue(graph.ContainsTransitionFactory(factory2)); var vertex3 = new CloneableTestVertex("3"); var factory3 = new TestTransitionFactory <CloneableTestVertex>(vertex3, Enumerable.Empty <Edge <CloneableTestVertex> >()); graph.AddTransitionFactory(factory3); Assert.IsTrue(graph.ContainsTransitionFactory(factory1)); Assert.IsTrue(graph.ContainsTransitionFactory(factory2)); Assert.IsTrue(graph.ContainsTransitionFactory(factory3)); }
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 }