protected static void TryGetEdges_Throws_Test <TEdge>( [NotNull] IIncidenceGraph <TestVertex, TEdge> graph) where TEdge : IEdge <TestVertex> { // ReSharper disable AssignNullToNotNullAttribute Assert.Throws <ArgumentNullException>(() => graph.TryGetEdges(null, new TestVertex("v2"), out _)); Assert.Throws <ArgumentNullException>(() => graph.TryGetEdges(new TestVertex("v1"), null, out _)); Assert.Throws <ArgumentNullException>(() => graph.TryGetEdges(null, null, out _)); // ReSharper restore AssignNullToNotNullAttribute }
protected static void TryGetEdges_Test( [NotNull] GraphData <int, Edge <int> > data, [NotNull] IIncidenceGraph <int, Edge <int> > graph) { data.CheckCalls(0); data.ShouldReturnValue = false; Assert.IsFalse(graph.TryGetEdges(0, 1, out _)); data.CheckCalls(1); data.ShouldReturnValue = true; Assert.IsTrue(graph.TryGetEdges(1, 2, out IEnumerable <Edge <int> > edges)); CollectionAssert.IsEmpty(edges); data.CheckCalls(1); data.ShouldReturnEdges = new[] { new Edge <int>(1, 2), new Edge <int>(1, 2) }; Assert.IsTrue(graph.TryGetEdges(1, 2, out edges)); CollectionAssert.AreEqual(data.ShouldReturnEdges, edges); data.CheckCalls(1); }
protected static void TryGetEdges_Test( [NotNull] IIncidenceGraph <int, Edge <int> > graph, [NotNull, InstantHandle] Action <IEnumerable <Edge <int> > > addVerticesAndEdgeRange) { var edge1 = new Edge <int>(1, 2); var edge2 = new Edge <int>(1, 2); var edge3 = new Edge <int>(1, 3); var edge4 = new Edge <int>(2, 2); var edge5 = new Edge <int>(2, 4); var edge6 = new Edge <int>(3, 1); addVerticesAndEdgeRange(new[] { edge1, edge2, edge3, edge4, edge5, edge6 }); Assert.IsFalse(graph.TryGetEdges(0, 10, out _)); Assert.IsFalse(graph.TryGetEdges(0, 1, out _)); Assert.IsTrue(graph.TryGetEdges(2, 2, out IEnumerable <Edge <int> > gotEdges)); CollectionAssert.AreEqual(new[] { edge4 }, gotEdges); Assert.IsTrue(graph.TryGetEdges(2, 4, out gotEdges)); CollectionAssert.AreEqual(new[] { edge5 }, gotEdges); Assert.IsTrue(graph.TryGetEdges(1, 2, out gotEdges)); CollectionAssert.AreEqual(new[] { edge1, edge2 }, gotEdges); Assert.IsTrue(graph.TryGetEdges(2, 1, out gotEdges)); CollectionAssert.IsEmpty(gotEdges); }
protected static void TryGetEdges_ImmutableGraph_ReversedTest( [NotNull] IMutableVertexAndEdgeSet <int, Edge <int> > wrappedGraph, [NotNull, InstantHandle] Func <IIncidenceGraph <int, SReversedEdge <int, Edge <int> > > > createGraph) { var edge1 = new Edge <int>(1, 2); var edge2 = new Edge <int>(1, 2); var edge3 = new Edge <int>(1, 3); var edge4 = new Edge <int>(2, 2); var edge5 = new Edge <int>(2, 4); var edge6 = new Edge <int>(3, 1); wrappedGraph.AddVerticesAndEdgeRange(new[] { edge1, edge2, edge3, edge4, edge5, edge6 }); IIncidenceGraph <int, SReversedEdge <int, Edge <int> > > graph = createGraph(); Assert.IsFalse(graph.TryGetEdges(0, 10, out _)); Assert.IsFalse(graph.TryGetEdges(0, 1, out _)); Assert.IsTrue(graph.TryGetEdges(2, 2, out IEnumerable <SReversedEdge <int, Edge <int> > > gotEdges)); AssertSameReversedEdges(new[] { edge4 }, gotEdges); Assert.IsTrue(graph.TryGetEdges(4, 2, out gotEdges)); AssertSameReversedEdges(new[] { edge5 }, gotEdges); Assert.IsTrue(graph.TryGetEdges(2, 1, out gotEdges)); AssertSameReversedEdges(new[] { edge1, edge2 }, gotEdges); Assert.IsTrue(graph.TryGetEdges(1, 2, out gotEdges)); CollectionAssert.IsEmpty(gotEdges); }
protected static void TryGetEdges_ImmutableGraph_Test( IMutableVertexAndEdgeSet <int, Edge <int> > wrappedGraph, Func <IIncidenceGraph <int, Edge <int> > > createGraph) { var edge1 = new Edge <int>(1, 2); var edge2 = new Edge <int>(1, 2); var edge3 = new Edge <int>(1, 3); var edge4 = new Edge <int>(2, 2); var edge5 = new Edge <int>(2, 4); var edge6 = new Edge <int>(3, 1); wrappedGraph.AddVerticesAndEdgeRange(new[] { edge1, edge2, edge3, edge4, edge5, edge6 }); IIncidenceGraph <int, Edge <int> > graph = createGraph(); Assert.IsFalse(graph.TryGetEdges(0, 10, out _)); Assert.IsFalse(graph.TryGetEdges(0, 1, out _)); Assert.IsTrue(graph.TryGetEdges(2, 2, out IEnumerable <Edge <int> > gotEdges)); CollectionAssert.AreEqual(new[] { edge4 }, gotEdges); Assert.IsTrue(graph.TryGetEdges(2, 4, out gotEdges)); CollectionAssert.AreEqual(new[] { edge5 }, gotEdges); Assert.IsTrue(graph.TryGetEdges(1, 2, out gotEdges)); CollectionAssert.AreEqual(new[] { edge1, edge2 }, gotEdges); Assert.IsTrue(graph.TryGetEdges(2, 1, out gotEdges)); CollectionAssert.IsEmpty(gotEdges); }