Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
#!/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)
Ejemplo n.º 4
0
#!/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)
Ejemplo n.º 5
0
#!/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())
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
#!/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())
Ejemplo n.º 9
0
#!/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()
Ejemplo n.º 10
0
#!/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)
Ejemplo n.º 11
0
#!/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)
Ejemplo n.º 12
0
#!/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)
Ejemplo n.º 13
0
#!/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())
Ejemplo n.º 14
0
#!/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())
Ejemplo n.º 15
0
#!/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";
}
""")