11@eval module $ (gensym ())
22using Graphs:
3+ a_star,
34 center,
5+ connected_components,
46 diameter,
57 edges,
68 has_vertex,
79 is_connected,
10+ is_directed,
811 is_tree,
912 ne,
13+ neighbors,
1014 nv,
1115 radius,
1216 random_regular_graph,
1317 rem_vertex!,
1418 vertices
1519using Metis: Metis
16- using NamedGraphs: NamedEdge, NamedGraph
20+ using NamedGraphs: NamedEdge, NamedGraph, NamedGraphs
1721using NamedGraphs. GraphsExtensions:
1822 add_edges!,
1923 add_vertices!,
@@ -31,10 +35,11 @@ using NamedGraphs.NamedGraphGenerators:
3135using NamedGraphs. OrderedDictionaries: OrderedDictionary
3236using NamedGraphs. PartitionedGraphs:
3337 PartitionEdge,
34- PartitionedGraph,
3538 PartitionVertex,
39+ PartitionedGraph,
40+ PartitionsGraphView,
3641 boundary_partitionedges,
37- partitioned_graph ,
42+ partitions_graph ,
3843 partitionedge,
3944 partitionedges,
4045 partitionvertex,
@@ -51,20 +56,27 @@ using Test: @test, @testset
5156 # Partition it column-wise (into a 1D chain)
5257 partitions = [[(i, j) for j in 1 : ny] for i in 1 : nx]
5358 pg = PartitionedGraph (g, partitions)
54- @test vertextype (partitioned_graph (pg)) == Int64
59+ @test vertextype (partitions_graph (pg)) == Int64
5560 @test vertextype (unpartitioned_graph (pg)) == vertextype (g)
5661 @test isa (partitionvertices (pg), OrderedDictionary{Int64,PartitionVertex{Int64}})
5762 @test isa (partitionedges (pg), Vector{PartitionEdge{Int64,NamedEdge{Int64}}})
58- @test is_tree (partitioned_graph (pg))
63+ @test is_tree (partitions_graph (pg))
5964 @test nv (pg) == nx * ny
60- @test nv (partitioned_graph (pg)) == nx
65+ @test nv (partitions_graph (pg)) == nx
6166 pg_c = copy (pg)
6267 @test pg_c == pg
6368
69+ # PartionsGraphView test
70+ pgv = PartitionsGraphView (pg)
71+ @test vertices (pgv) == parent .(partitionvertices (pg))
72+ @test edges (pgv) == parent .(partitionedges (pg))
73+ @test is_tree (pgv) == true
74+ @test neighbors (pgv, 1 ) == [2 ]
75+
6476 # Same partitioning but with a dictionary constructor
6577 partition_dict = Dictionary ([first (partition) for partition in partitions], partitions)
6678 pg = PartitionedGraph (g, partition_dict)
67- @test vertextype (partitioned_graph (pg)) == vertextype (g)
79+ @test vertextype (partitions_graph (pg)) == vertextype (g)
6880 @test vertextype (unpartitioned_graph (pg)) == vertextype (g)
6981 @test isa (
7082 partitionvertices (pg),
@@ -74,19 +86,19 @@ using Test: @test, @testset
7486 partitionedges (pg),
7587 Vector{PartitionEdge{Tuple{Int64,Int64},NamedEdge{Tuple{Int64,Int64}}}},
7688 )
77- @test is_tree (partitioned_graph (pg))
89+ @test is_tree (partitions_graph (pg))
7890 @test nv (pg) == nx * ny
79- @test nv (partitioned_graph (pg)) == nx
91+ @test nv (partitions_graph (pg)) == nx
8092 pg_c = copy (pg)
8193 @test pg_c == pg
8294
8395 # Partition the whole thing into just 1 vertex
8496 pg = PartitionedGraph ([i for i in 1 : nx])
85- @test unpartitioned_graph (pg) == partitioned_graph (pg)
97+ @test unpartitioned_graph (pg) == partitions_graph (pg)
8698 @test nv (pg) == nx
87- @test nv (partitioned_graph (pg)) == nx
99+ @test nv (partitions_graph (pg)) == nx
88100 @test ne (pg) == 0
89- @test ne (partitioned_graph (pg)) == 0
101+ @test ne (partitions_graph (pg)) == 0
90102 pg_c = copy (pg)
91103 @test pg_c == pg
92104end
@@ -132,22 +144,22 @@ end
132144
133145 # Strip the middle column from pg via the partitioned graph vertex, and make a new pg
134146 rem_vertex! (pg, pv)
135- @test ! is_connected (unpartitioned_graph (pg)) && ! is_connected (partitioned_graph (pg))
136- @test parent (pv) ∉ vertices (partitioned_graph (pg))
147+ @test ! is_connected (unpartitioned_graph (pg)) && ! is_connected (partitions_graph (pg))
148+ @test parent (pv) ∉ vertices (partitions_graph (pg))
137149 @test ! has_vertex (pg, pv)
138150 @test nv (pg) == (nx - 1 ) * ny
139- @test nv (partitioned_graph (pg)) == nx - 1
140- @test ! is_tree (partitioned_graph (pg))
151+ @test nv (partitions_graph (pg)) == nx - 1
152+ @test ! is_tree (partitions_graph (pg))
141153
142154 # Add the column back to the in place graph
143155 add_vertices! (pg, v_set, pv)
144156 add_edges! (pg, edges_involving_v_set)
145- @test is_connected (pg. graph) && is_path_graph (partitioned_graph (pg))
146- @test parent (pv) ∈ vertices (partitioned_graph (pg))
157+ @test is_connected (pg. graph) && is_path_graph (partitions_graph (pg))
158+ @test parent (pv) ∈ vertices (partitions_graph (pg))
147159 @test has_vertex (pg, pv)
148- @test is_tree (partitioned_graph (pg))
160+ @test is_tree (partitions_graph (pg))
149161 @test nv (pg) == nx * ny
150- @test nv (partitioned_graph (pg)) == nx
162+ @test nv (partitions_graph (pg)) == nx
151163end
152164
153165@testset " Test Partitioned Graph Subgraph Functionality" begin
167179 pg_2 = subgraph (pg, subgraph_vertices)
168180 @test pg_1 == pg_2
169181 @test nv (pg_1) == length (subgraph_vertices)
170- @test nv (partitioned_graph (pg_1)) == length (subgraph_partitioned_vertices)
182+ @test nv (partitions_graph (pg_1)) == length (subgraph_partitioned_vertices)
171183
172184 subgraph_partitioned_vertex = 3
173185 subgraph_vertices = partitions[subgraph_partitioned_vertex]
190202 pg = PartitionedGraph (g, [vertices (g)])
191203 @test f (pg) == f (unpartitioned_graph (pg))
192204 @test nv (pg) == nv (g)
193- @test nv (partitioned_graph (pg)) == 1
205+ @test nv (partitions_graph (pg)) == 1
194206 @test ne (pg) == ne (g)
195- @test ne (partitioned_graph (pg)) == 0
207+ @test ne (partitions_graph (pg)) == 0
196208 end
197209 end
198210end
209221 for backend in backends
210222 pg = PartitionedGraph (g; npartitions, backend= " metis" )
211223 @test pg isa PartitionedGraph
212- @test nv (partitioned_graph (pg)) == npartitions
224+ @test nv (partitions_graph (pg)) == npartitions
213225 end
214226end
215227end
0 commit comments