1 |
# Tests which all ObservableGraph implementations must pass |
# Tests which all ObservableGraph implementations must pass |
2 |
|
|
3 |
|
from __future__ import nested_scopes |
4 |
|
|
5 |
import org |
import org |
6 |
from org.fenfire.swamp import Nodes |
from org.fenfire.swamp import Nodes, NodeFunction, CachedNodeFunction |
7 |
|
|
8 |
_uriMaker = org.fenfire.util.URN5Namespace() |
_uriMaker = org.fenfire.util.URN5Namespace() |
9 |
_node = [Nodes.get(_uriMaker.generateId()) for i in range(0,20)] |
_node = [Nodes.get(_uriMaker.generateId()) for i in range(0,20)] |
55 |
assert o1.t == 2 |
assert o1.t == 2 |
56 |
assert o2.t == 2 |
assert o2.t == 2 |
57 |
|
|
58 |
|
def test_ObservableGraph_Func(): |
59 |
|
node = _node |
60 |
|
class Func(NodeFunction): |
61 |
|
def f(self, g, x): |
62 |
|
self.calls += 1 |
63 |
|
literal = g.find1_11X(x, node[0]) |
64 |
|
print "F: Got literal",literal |
65 |
|
if literal == None: return None |
66 |
|
return literal.getTextString() |
67 |
|
|
68 |
|
of = Func() |
69 |
|
of.calls = 0 |
70 |
|
cf = CachedNodeFunction(3, graph, of) |
71 |
|
|
72 |
|
def doit(f): |
73 |
|
print "F now:",f |
74 |
|
assert f.f(graph, node[1]) == None |
75 |
|
assert f.f(graph, node[2]) == None |
76 |
|
assert f.f(graph, node[3]) == None |
77 |
|
assert f.f(graph, node[4]) == None |
78 |
|
|
79 |
|
graph.set1_11X(node[4], node[0], Nodes.getStringLiteral("X")) |
80 |
|
|
81 |
|
assert f.f(graph, node[4]) == "X" |
82 |
|
assert f.f(graph, node[1]) == None |
83 |
|
|
84 |
|
graph.set1_11X(node[4], node[0], Nodes.getStringLiteral("Y")) |
85 |
|
graph.set1_11X(node[1], node[0], Nodes.getStringLiteral("Z")) |
86 |
|
graph.set1_11X(node[3], node[0], Nodes.getStringLiteral("Q")) |
87 |
|
|
88 |
|
assert f.f(graph, node[4]) == "Y" |
89 |
|
assert f.f(graph, node[1]) == "Z" |
90 |
|
assert f.f(graph, node[2]) == None |
91 |
|
assert f.f(graph, node[3]) == "Q" |
92 |
|
|
93 |
|
graph.rm_11A(node[3], node[0]) |
94 |
|
|
95 |
|
assert f.f(graph, node[4]) == "Y" |
96 |
|
assert f.f(graph, node[1]) == "Z" |
97 |
|
assert f.f(graph, node[2]) == None |
98 |
|
assert f.f(graph, node[3]) == None |
99 |
|
|
100 |
|
graph.rm_11A(node[4], node[0]) |
101 |
|
graph.rm_11A(node[1], node[0]) |
102 |
|
|
103 |
|
assert f.f(graph, node[1]) == None |
104 |
|
assert f.f(graph, node[2]) == None |
105 |
|
assert f.f(graph, node[3]) == None |
106 |
|
assert f.f(graph, node[4]) == None |
107 |
|
|
108 |
|
doit(of) |
109 |
|
assert of.calls == 18 |
110 |
|
of.calls = 0 |
111 |
|
doit(cf) |
112 |
|
assert of.calls < 16 |
113 |
|
|