///|
fn main raise {
let builder = @g.FlatBuilder::new([], Directed)
for name in ["a", "b", "c"] {
builder.add_node(name)
}
builder.add_edge("a", "b")
builder.add_edge("a", "b")
builder.add_edge("b", "c")
let doc = builder.finish()
let renamed = doc.relabel_nodes(0, [("a", "b"), ("b", "a")])
let sample = renamed.flat_graph(@g.GraphAddress::root(0)).edge_subgraph([1])
assert_eq(sample.graphs()[0].edges.length(), 1)
assert_eq(sample.graphs()[0].nodes.length(), 2)
assert_true(@g.parse(@g.serialize(sample)).equivalent(sample))
println(
"Atomic ID swaps preserve references; edge sampling keeps parallel edges individually and round-trips GraphML",
)
}