public void ContainsEdge_Throws()
        {
            var data  = new GraphData <TestVertex, Edge <TestVertex> >();
            var graph = new DelegateIncidenceGraph <TestVertex, Edge <TestVertex> >(data.TryGetEdges);

            ContainsEdge_SourceTarget_Throws_Test(graph);
        }
        public void OutEdge()
        {
            var data  = new GraphData <int, Edge <int> >();
            var graph = new DelegateIncidenceGraph <int, Edge <int> >(data.TryGetEdges);

            OutEdge_Test(data, graph);
        }
        public void ContainsVertex_Throws()
        {
            var graph = new DelegateIncidenceGraph <TestVertex, Edge <TestVertex> >(
                GetEmptyGetter <TestVertex, Edge <TestVertex> >());

            ContainsVertex_Throws_Test(graph);
        }
        public void ContainsEdge()
        {
            var data  = new GraphData <int, Edge <int> >();
            var graph = new DelegateIncidenceGraph <int, Edge <int> >(data.TryGetEdges);

            ContainsEdge_SourceTarget_Test(data, graph);
        }
        public void ContainsVertex()
        {
            var data  = new GraphData <int, Edge <int> >();
            var graph = new DelegateIncidenceGraph <int, Edge <int> >(data.TryGetEdges);

            ContainsVertex_Test(data, graph);
        }
        public void TryGetOutEdges_Throws()
        {
            var graph = new DelegateIncidenceGraph <TestVertex, Edge <TestVertex> >(
                GetEmptyGetter <TestVertex, Edge <TestVertex> >());

            TryGetOutEdges_Throws_Test(graph);
        }
        public void TryGetEdges_Throws()
        {
            var data  = new GraphData <TestVertex, Edge <TestVertex> >();
            var graph = new DelegateIncidenceGraph <TestVertex, Edge <TestVertex> >(data.TryGetEdges);

            TryGetEdges_Throws_Test(graph);
        }
        public void Construction()
        {
            var graph = new DelegateIncidenceGraph <int, Edge <int> >(
                GetEmptyGetter <int, Edge <int> >());

            AssertGraphProperties(graph);

            graph = new DelegateIncidenceGraph <int, Edge <int> >(
                GetEmptyGetter <int, Edge <int> >(),
                false);
            AssertGraphProperties(graph, false);

            #region Local function

            void AssertGraphProperties <TVertex, TEdge>(
                DelegateIncidenceGraph <TVertex, TEdge> g,
                bool parallelEdges = true)
                where TEdge : IEdge <TVertex>
            {
                Assert.IsTrue(g.IsDirected);
                Assert.AreEqual(parallelEdges, g.AllowParallelEdges);
            }

            #endregion
        }
        public void OutEdges_Throws()
        {
            var data   = new GraphData <int, Edge <int> >();
            var graph1 = new DelegateIncidenceGraph <int, Edge <int> >(data.TryGetEdges);

            OutEdges_Throws_Test(data, graph1);

            var graph2 = new DelegateIncidenceGraph <EquatableTestVertex, Edge <EquatableTestVertex> >(
                GetEmptyGetter <EquatableTestVertex, Edge <EquatableTestVertex> >());

            OutEdges_NullThrows_Test(graph2);
        }