/usr/share/pyshared/async/test/test_graph.py is in python-async 0.6.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | """Channel testing"""
from lib import *
from async.graph import *
import time
import sys
class TestGraph(TestBase):
def test_base(self):
g = Graph()
nn = 10
assert nn > 2, "need at least 3 nodes"
# add unconnected nodes
for i in range(nn):
assert isinstance(g.add_node(Node()), Node)
# END add nodes
assert len(g.nodes) == nn
# delete unconnected nodes
for n in g.nodes[:]:
g.remove_node(n)
# END del nodes
# add a chain of connected nodes
last = None
for i in range(nn):
n = g.add_node(Node(i))
if last:
assert not last.out_nodes
assert not n.in_nodes
assert g.add_edge(last, n) is g
assert last.out_nodes[0] is n
assert n.in_nodes[0] is last
last = n
# END for each node to connect
# try to connect a node with itself
self.failUnlessRaises(ValueError, g.add_edge, last, last)
# try to create a cycle
self.failUnlessRaises(ValueError, g.add_edge, g.nodes[0], g.nodes[-1])
self.failUnlessRaises(ValueError, g.add_edge, g.nodes[-1], g.nodes[0])
# we have undirected edges, readding the same edge, but the other way
# around does not change anything
n1, n2, n3 = g.nodes[0], g.nodes[1], g.nodes[2]
g.add_edge(n1, n2) # already connected
g.add_edge(n2, n1) # same thing
assert len(n1.out_nodes) == 1
assert len(n1.in_nodes) == 0
assert len(n2.in_nodes) == 1
assert len(n2.out_nodes) == 1
# deleting a connected node clears its neighbour connections
assert n3.in_nodes[0] is n2
assert g.remove_node(n2) is g
assert g.remove_node(n2) is g # multi-deletion okay
assert len(g.nodes) == nn - 1
assert len(n3.in_nodes) == 0
assert len(n1.out_nodes) == 0
# check the history from the last node
end = g.nodes[-1]
dfirst_nodes = g.input_inclusive_dfirst_reversed(end)
num_nodes_seen = nn - 2 # deleted second, which leaves first one disconnected
assert len(dfirst_nodes) == num_nodes_seen
assert dfirst_nodes[-1] == end and dfirst_nodes[-2].id == end.id-1
# test cleanup
# its at least kept by its graph
assert sys.getrefcount(end) > 3
del(g)
del(n1); del(n2); del(n3)
del(dfirst_nodes)
del(last)
del(n)
assert sys.getrefcount(end) == 2
|