public void OutEdges()
        {
            var data  = new GraphData <int, Edge <int> >();
            var graph = new DelegateImplicitGraph <int, Edge <int> >(data.TryGetEdges);

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

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

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

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

            AssertGraphProperties(graph);

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

            #region Local function

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

            #endregion
        }
        public void OutEdge_Throws()
        {
            var graph1 = new DelegateImplicitGraph <TestVertex, Edge <TestVertex> >(
                GetEmptyGetter <TestVertex, Edge <TestVertex> >());

            OutEdge_NullThrows_Test(graph1);

            var data   = new GraphData <int, Edge <int> >();
            var graph2 = new DelegateImplicitGraph <int, Edge <int> >(data.TryGetEdges);

            OutEdge_Throws_Test(data, graph2);
        }