Exemplo n.º 1
0
        public int AddEdgeRange <TVertex, TEdge>(
            [PexAssumeUnderTest] AdjacencyGraph <TVertex, TEdge> target,
            TEdge[] edges
            )
            where TEdge : IEdge <TVertex>
        {
            // TODO: add assertions to method AdjacencyGraphTVertexTEdgeTest.AddEdgeRange(AdjacencyGraph`2<!!0,!!1>, !!1[])
            int result = target.AddEdgeRange((IEnumerable <TEdge>)edges);

            return(result);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Converts a set of vertices into an adjacency graph,
        /// using an edge factory.
        /// </summary>
        /// <typeparam name="TVertex">The type of the vertex.</typeparam>
        /// <typeparam name="TEdge">The type of the edge.</typeparam>
        /// <param name="vertices">The vertices.</param>
        /// <param name="outEdgesFactory">The out edges factory.</param>
        /// <param name="allowParallelEdges">if set to <c>true</c>, the graph allows parallel edges.</param>
        /// <returns></returns>
        public static AdjacencyGraph <TVertex, TEdge> ToAdjacencyGraph <TVertex, TEdge>
            (this IEnumerable <TVertex> vertices,
            Func <TVertex, IEnumerable <TEdge> > outEdgesFactory,
            bool allowParallelEdges
            )
            where TEdge : IEdge <TVertex>
        {
            Contract.Requires(vertices != null);
            Contract.Requires(outEdgesFactory != null);
            Contract.Requires(EnumerableContract.ElementsNotNull(vertices));

            var g = new AdjacencyGraph <TVertex, TEdge>(allowParallelEdges);

            g.AddVertexRange(vertices);
            foreach (var vertex in g.Vertices)
            {
                g.AddEdgeRange(outEdgesFactory(vertex));
            }

            return(g);
        }