Esempio n. 1
0
 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
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }