def main(): from test_more import eq, is_deeply v1 = Vector(1.2, 3.4) v2 = Vector(5.6, 7.8) is_deeply(v1, [1.2, 3.4]) is_deeply(v1 + v2, [6.8, 11.2]) is_deeply(v1 - v2, [1.2 - 5.6, 3.4 - 7.8]) is_deeply(v1 * 2, [2.4, 6.8]) is_deeply(2 * v1, [2.4, 6.8]) is_deeply(v1 / 2, [0.6, 1.7]) eq(abs(v1), math.sqrt(1.2**2 + 3.4**2)) eq(v1[0], 1.2) eq(v1[1], 3.4)
ok(g.has_vertex(3)) ok(g.has_vertex(4)) ok(not g.has_vertex(5)) ok(not g.has_vertex(0)) g.add_edge(1, 2) g.add_edge(1, 2) g.add_edge(2, 3) g.add_edge(3, 4) ok(g.has_edge(1, 2)) ok(g.has_edge(2, 3)) ok(not g.has_edge(2, 1)) ok(not g.has_edge(1, 3)) ok(not g.has_edge(4, 1)) eq(len(g.vertices()), 4) eq(len(g.successors(1)), 1) eq(len(g.predecessors(1)), 0) eq(len(g.neighbors(1)), 1) eq(len(g.neighbors(2)), 2) eq(len(g.edges()), 4) eq(len(g.unique_edges()), 3) eq(len(g.edges_from(1)), 2) eq(len(g.edges_to(1)), 0) eq(len(g.edges_at(1)), 2) eq(len(g.edges_from(2)), 1) eq(len(g.edges_to(2)), 2) eq(len(g.edges_at(2)), 3) eq(g.degree(1), 2)
#!/usr/bin/env python3 from test_more import ok, eq from graph_tools import Graph g = Graph(directed=True) g.add_vertices(1, 2, 3) g.add_edge(1, 2) g.add_edge(1, 2) g.add_edge(2, 3) eq(len(g.neighbors(1)), 1) eq(len(g.neighbors(2)), 2) eq(len(g.neighbors(3)), 1) g.delete_vertex(2) eq(len(g.neighbors(1)), 0) eq(len(g.neighbors(3)), 0) g = Graph(directed=False) g.add_vertices(1, 2, 3) g.add_edge(1, 2) g.add_edge(2, 3) g.delete_vertex(1) eq(len(g.vertices()), 2) eq(len(g.neighbors(2)), 1) eq(len(g.neighbors(3)), 1)
#!/usr/bin/env python3 from test_more import ok, eq from graph_tools import Graph g = Graph(directed=True) eq(len(g.get_multiedge_ids(1, 2)), 0) g.add_edge(1, 2) g.add_edge(2, 1) ok(g.has_edge(1, 2)) ok(g.has_edge(2, 1)) eq(len(g.get_multiedge_ids(1, 2)), 1) eq(len(g.get_multiedge_ids(2, 1)), 1) eq(len(g.neighbors(1)), 1) eq(len(g.neighbors(2)), 1) g.add_edge(1, 2) ok(g.has_edge(1, 2)) ok(g.has_edge(2, 1)) eq(len(g.get_multiedge_ids(1, 2)), 2) eq(len(g.get_multiedge_ids(2, 1)), 1) eq(len(g.neighbors(1)), 1) eq(len(g.neighbors(2)), 1)
#!/usr/bin/env python3 from test_more import ok, eq from graph_tools import Graph g = Graph(directed=True, multiedged=True) g = g.create_graph('tree', 10) ok(g) eq(len(g.vertices()), 10) eq(len(g.edges()), 10 - 1) g = Graph(directed=True, multiedged=True) g = g.create_graph('tree', 100) ok(g) eq(len(g.vertices()), 100) eq(len(g.edges()), 100 - 1) g = Graph(directed=False, multiedged=True) g = g.create_graph('tree', 10) ok(g) eq(len(g.vertices()), 10) eq(len(g.edges()), 10 - 1) ok(g.is_connected())
g.add_vertices(1, 2, 3, 4) ok(g.has_vertex(1)) ok(g.has_vertex(2)) ok(g.has_vertex(3)) ok(g.has_vertex(4)) ok(not g.has_vertex(5)) ok(not g.has_vertex(0)) g.add_edge(1, 2) g.add_edge(1, 2) g.add_edge(2, 3) g.add_edge(3, 4) ok(g.has_edge(1, 2)) ok(g.has_edge(2, 3)) ok(g.has_edge(2, 1)) ok(not g.has_edge(1, 3)) ok(not g.has_edge(4, 1)) eq(len(g.vertices()), 4) eq(len(g.neighbors(1)), 1) eq(len(g.neighbors(2)), 2) eq(len(g.edges()), 4) eq(len(g.unique_edges()), 3) eq(len(g.edges_at(1)), 2) eq(len(g.edges_at(2)), 3) eq(g.degree(1), 2) eq(g.degree(2), 3)
from test_more import ok, eq from graph_tools import Graph g = Graph(directed=True, multiedged=True) g.add_edge(1, 2) g.add_edge(2, 3) g.add_edge(3, 1) g.set_vertex_attribute(1, 'foo', 123) g.set_edge_attribute_by_id(1, 2, 0, 'bar', 456) T = g.copy_graph() ok(T.directed()) ok(T.multiedged()) ok(T.has_edge(1, 2)) ok(not T.has_edge(2, 1)) eq(T.get_vertex_attribute(1, 'foo'), 123) eq(T.get_edge_attribute_by_id(1, 2, 0, 'bar'), 456) g = Graph(directed=False, multiedged=True) g.add_edge(1, 2) g.add_edge(2, 3) g.add_edge(3, 1) g.set_vertex_attribute(1, 'foo', 123) g.set_edge_attribute_by_id(1, 2, 0, 'bar', 456) T = g.copy_graph() ok(T.undirected()) ok(T.multiedged()) ok(T.has_edge(1, 2)) ok(T.has_edge(2, 1)) eq(T.get_vertex_attribute(1, 'foo'), 123) eq(T.get_edge_attribute_by_id(1, 2, 0, 'bar'), 456)
#!/usr/bin/env python3 from test_more import ok, eq from graph_tools import Graph g = Graph(directed=False, multiedged=True) g = g.create_graph('barandom', 10, 20, 2) ok(g) eq(len(g.vertices()), 10) ok(g.is_connected()) g = Graph(directed=False, multiedged=True) g = g.create_graph('barandom', 100, 200, 2) ok(g) eq(len(g.vertices()), 100) ok(g.is_connected())
#!/usr/bin/env python3 import re from test_more import ok, eq from graph_tools import Graph g = Graph(directed=True, multiedged=True) buf = """digraph sample { 1; 2; 1 -> 2; } """.splitlines() g.import_graph('dot', buf) eq(len(g.vertices()), 2) eq(len(g.edges()), 1) ok(g.is_directed()) ok(g.has_edge(1, 2)) g = Graph(directed=True, multiedged=True) buf = """// comment here digraph sample { 1; /* another comment here */ 2; 4; 1 -> 2; 1 -> 4; } """.splitlines()
#!/usr/bin/env python3 from test_more import ok, eq from graph_tools import Graph g = Graph(directed=False, multiedged=True) g = g.create_graph('unknown') ok(not g) g = Graph(directed=True, multiedged=True) g = g.create_graph('random', 4, 10) ok(g) eq(len(g.vertices()), 4) eq(len(g.edges()), 10) ok(g.is_connected()) g = Graph(directed=True, multiedged=True) g = g.create_graph('random', 40, 100) ok(g) eq(len(g.vertices()), 40) eq(len(g.edges()), 100) ok(g.is_connected()) g = Graph(directed=True, multiedged=True) g = g.create_graph('random', 4, 10) ok(g) eq(len(g.vertices()), 4) eq(len(g.edges()), 10)
#!/usr/bin/env python3 from test_more import ok, eq from graph_tools import Graph g = Graph(directed=True) g.add_vertices(1, 2, 3) g.add_edge(1, 2) g.add_edge(1, 2) g.add_edge(2, 3) name, val, val2 = 'foo', 'bar', 'buzz' g.set_graph_attribute(name, val) eq(g.get_graph_attribute(name), val) g.set_vertex_attribute(1, name, val) eq(g.get_vertex_attribute(1, name), val) g.set_edge_attribute_by_id(1, 2, 0, name, val) eq(g.get_edge_attribute_by_id(1, 2, 0, name), val) g.set_edge_attribute_by_id(1, 2, 1, name, val2) eq(g.get_edge_attribute_by_id(1, 2, 1, name), val2) g.set_edge_weight_by_id(1, 2, 0, val) eq(g.get_edge_weight_by_id(1, 2, 0), val) g.set_edge_weight_by_id(1, 2, 1, val2) eq(g.get_edge_weight_by_id(1, 2, 1), val2)
#!/usr/bin/env python3 from test_more import ok, eq from graph_tools import Graph g = Graph(directed=False) ok(g) g.add_vertices(1, 2, 3, 4) h = g.complete_graph() ok(h.is_connected()) eq(len(h.vertices()), 4) eq(len(h.edges()), 6) eq(h.vertex_degree(1), 3)
#!/usr/bin/env python3 from test_more import ok, eq from graph_tools import Graph g = Graph(directed=True, multiedged=True) g = g.create_graph('ring', 10, 1) ok(g) eq(len(g.vertices()), 10) eq(len(g.edges()), 10) for v in range(1, 11): eq(g.in_degree(v), 1) eq(g.out_degree(v), 1) g = Graph(directed=False, multiedged=True) g = g.create_graph('ring', 10, 1) ok(g) eq(len(g.vertices()), 10) eq(len(g.edges()), 10) for v in range(1, 11): eq(g.degree(v), 2) ok(g.is_connected())
#!/usr/bin/env python3 from test_more import ok, eq from graph_tools import Graph g = Graph(directed=False, multiedged=True) g = g.create_graph('barabasi', 10, 2, 2) ok(g) eq(len(g.vertices()), 10) eq(len(g.edges()), 2 * (2 - 1) / 2 + (10 - 2) * 2) ok(g.is_connected()) g = Graph(directed=False, multiedged=True) g = g.create_graph('barabasi', 100, 3, 4) ok(g) eq(len(g.vertices()), 100) eq(len(g.edges()), 3 * (3 - 1) / 2 + (100 - 3) * 4) ok(g.is_connected()) g = Graph(directed=False, multiedged=True) g = g.create_graph('ba', 10, 2, 2) ok(g) eq(len(g.vertices()), 10) eq(len(g.edges()), 2 * (2 - 1) / 2 + (10 - 2) * 2) ok(g.is_connected())
#!/usr/bin/env python3 import re from test_more import ok, eq from graph_tools import Graph g = Graph(directed=False, multiedged=True) g.add_vertex(1) astr = g.export_graph('dot') ok(astr) astr = re.sub(r'^//.*\n', '', astr, flags=re.M) eq(astr, """graph export_dot { node [color=gray90,style=filled]; "1"; } """) g = Graph(directed=False, multiedged=True) g.add_edge(1, 2) astr = g.export_graph('dot') ok(astr) astr = re.sub(r'^//.*\n', '', astr, flags=re.M) eq( astr, """graph export_dot { node [color=gray90,style=filled]; "1"; "2"; "1" -- "2"; } """)