1 |
#(c): Matti Katila |
#(c): Matti Katila |
2 |
|
|
3 |
from org.fenfire.modules.pp import * |
from org.fenfire.modules.pp import * |
4 |
|
from org.fenfire.util import URN5Namespace |
5 |
from com.hp.hpl.mesa.rdf import jena |
from com.hp.hpl.mesa.rdf import jena |
6 |
|
from com.hp.hpl.mesa.rdf.jena.vocabulary import RDF |
7 |
|
|
8 |
def setUp(): |
def setUp(): |
9 |
global model, ppact |
global model, ppact, PP |
10 |
model = jena.mem.ModelMem() |
model = jena.mem.ModelMem() |
11 |
ppact = PPActionsImpl(model) |
ppact = PPActionsImpl(model) |
12 |
|
PP = PPVocab() |
13 |
|
|
14 |
def testNewPaper(): |
def testNewPaper(): |
15 |
""" |
paper = ppact.newPaper() |
16 |
Create a new pp paper |
assert paper != '' |
17 |
""" |
|
18 |
text = ppact.newPaper() |
slctr = jena.common.SelectorImpl(None, RDF.type, PP.PaperType) |
19 |
assert text != '' |
iter = model.listStatements(slctr) |
20 |
|
assert iter.hasNext() == 1 |
21 |
|
stmt = iter.next() |
22 |
|
assert iter.hasNext() == 0 |
23 |
|
assert stmt.getSubject().toString() == paper |
24 |
|
|
25 |
|
# XXX does not check creation time |
26 |
|
|
27 |
def testNewNote(): |
def testNewNote(): |
28 |
assert 1 == 1 |
newNoteCheck() |
29 |
|
|
30 |
|
paper = URN5Namespace.instance.generateId() |
31 |
|
paperRes = jena.common.ResourceImpl(paper) |
32 |
|
note = ppact.newNote(paper, 123, 456, 'This is a new note') |
33 |
|
noteRes = jena.common.ResourceImpl(note) |
34 |
|
|
35 |
|
# note1 -. |
36 |
|
# >-> lintoReal data -> data |
37 |
|
# note2 -' |
38 |
|
|
39 |
|
# check link to real data |
40 |
|
slctr = jena.common.SelectorImpl(noteRes, PP.LinkToContentRef, None) |
41 |
|
iter = model.listStatements(slctr) |
42 |
|
assert iter.hasNext() == 1 |
43 |
|
stmt = iter.next() |
44 |
|
assert iter.hasNext() == 0 |
45 |
|
assert stmt.getSubject().toString() == note |
46 |
|
|
47 |
|
datalink = stmt.getObject() |
48 |
|
|
49 |
|
# check data |
50 |
|
slctr = jena.common.SelectorImpl(datalink, PP.Data, None) |
51 |
|
iter = model.listStatements(slctr) |
52 |
|
assert iter.hasNext() == 1 |
53 |
|
stmt = iter.next() |
54 |
|
assert iter.hasNext() == 0 |
55 |
|
assert stmt.getObject().toString() == 'This is a new note' |
56 |
|
|
57 |
|
# check type of data |
58 |
|
slctr = jena.common.SelectorImpl(datalink, RDF.type, None) |
59 |
|
iter = model.listStatements(slctr) |
60 |
|
assert iter.hasNext() == 1 |
61 |
|
stmt = iter.next() |
62 |
|
assert iter.hasNext() == 0 |
63 |
|
assert stmt.getSubject() == datalink |
64 |
|
assert stmt.getObject() == PP.DataType |
65 |
|
|
66 |
|
|
67 |
|
def testCloneNote(): |
68 |
|
newNoteCheck() |
69 |
|
|
70 |
|
paper = URN5Namespace.instance.generateId() |
71 |
|
orig = ppact.newNote(paper, 123, 456, 'This is the original note') |
72 |
|
origRes = jena.common.ResourceImpl(orig) |
73 |
|
clone = ppact.cloneNote(paper, orig, 123, 456, 'This is a new clone') |
74 |
|
cloneRes = jena.common.ResourceImpl(clone) |
75 |
|
|
76 |
|
# note -. |
77 |
|
# >-> lintoReal data -> data |
78 |
|
# clone -' |
79 |
|
|
80 |
|
# check link to real data |
81 |
|
slctr = jena.common.SelectorImpl(cloneRes, PP.LinkToContentRef, None) |
82 |
|
iter = model.listStatements(slctr) |
83 |
|
|
84 |
|
slctr2 = jena.common.SelectorImpl(origRes, PP.LinkToContentRef, None) |
85 |
|
iter2 = model.listStatements(slctr2) |
86 |
|
|
87 |
|
assert iter.hasNext() == 1 |
88 |
|
assert iter2.hasNext() == 1 |
89 |
|
|
90 |
|
stmt = iter.next() |
91 |
|
stmt2 = iter2.next() |
92 |
|
|
93 |
|
assert iter.hasNext() == 0 |
94 |
|
assert iter2.hasNext() == 0 |
95 |
|
|
96 |
|
assert stmt.getObject() == stmt2.getObject() |
97 |
|
|
98 |
|
slctr = jena.common.SelectorImpl(stmt.getObject(), PP.Data, None) |
99 |
|
iter = model.listStatements(slctr) |
100 |
|
assert iter.hasNext() == 1 |
101 |
|
stmt = iter.next() |
102 |
|
assert iter.hasNext() == 0 |
103 |
|
assert stmt.getObject().toString() == 'This is the original note' |
104 |
|
|
105 |
|
def newNoteCheck(): |
106 |
|
paper = URN5Namespace.instance.generateId() |
107 |
|
paperRes = jena.common.ResourceImpl(paper) |
108 |
|
note = ppact.newNote(paper, -123, 456, 'This is a new note') |
109 |
|
noteRes = jena.common.ResourceImpl(note) |
110 |
|
|
111 |
|
# type test - NoteType |
112 |
|
slctr = jena.common.SelectorImpl(noteRes, RDF.type, PP.NoteType) |
113 |
|
iter = model.listStatements(slctr) |
114 |
|
assert iter.hasNext() == 1 |
115 |
|
stmt = iter.next() |
116 |
|
assert iter.hasNext() == 0 |
117 |
|
assert stmt.getSubject().toString() == note |
118 |
|
|
119 |
|
# is node on paper? |
120 |
|
slctr = jena.common.SelectorImpl(paperRes, PP.Contains, noteRes) |
121 |
|
iter = model.listStatements(slctr) |
122 |
|
assert iter.hasNext() == 1 |
123 |
|
stmt = iter.next() |
124 |
|
assert iter.hasNext() == 0 |
125 |
|
assert stmt.getSubject().toString() == paper |
126 |
|
assert stmt.getObject().toString() == note |
127 |
|
|
128 |
|
# x coord ok? |
129 |
|
slctr = jena.common.SelectorImpl(noteRes, PP.CoordX, None) |
130 |
|
iter = model.listStatements(slctr) |
131 |
|
assert iter.hasNext() == 1 |
132 |
|
stmt = iter.next() |
133 |
|
assert iter.hasNext() == 0 |
134 |
|
assert stmt.getObject().toString() == '-123' |
135 |
|
|
136 |
|
# y coord ok? |
137 |
|
slctr = jena.common.SelectorImpl(noteRes, PP.CoordY, None) |
138 |
|
iter = model.listStatements(slctr) |
139 |
|
assert iter.hasNext() == 1 |
140 |
|
stmt = iter.next() |
141 |
|
assert iter.hasNext() == 0 |
142 |
|
assert stmt.getObject().toString() == '456' |
143 |
|
|
144 |
|
# deth ok? |
145 |
|
slctr = jena.common.SelectorImpl(noteRes, PP.Depth, None) |
146 |
|
iter = model.listStatements(slctr) |
147 |
|
assert iter.hasNext() == 1 |
148 |
|
stmt = iter.next() |
149 |
|
assert iter.hasNext() == 0 |
150 |
|
assert stmt.getObject().toString() == '10' |
151 |
|
|
152 |
|
def testAssoc(): |
153 |
|
assocPos() |
154 |
|
assocNeg() |
155 |
|
|
156 |
|
def assocPos(): |
157 |
|
paper = URN5Namespace.instance.generateId() |
158 |
|
noteA = ppact.newNote(paper, 12, 45, 'This is A') |
159 |
|
noteARes = jena.common.ResourceImpl(noteA) |
160 |
|
noteB = ppact.newNote(paper, 23, 56, 'This is B') |
161 |
|
noteBRes = jena.common.ResourceImpl(noteB) |
162 |
|
|
163 |
|
ppact.assocNotes(noteA, 1, noteB) |
164 |
|
|
165 |
|
# noteA -> ? |
166 |
|
slctr = jena.common.SelectorImpl(None, PP.Association, noteARes) |
167 |
|
iter = model.listStatements(slctr) |
168 |
|
assert iter.hasNext() == 0 |
169 |
|
|
170 |
|
slctr = jena.common.SelectorImpl(noteARes, PP.Association, None) |
171 |
|
iter = model.listStatements(slctr) |
172 |
|
assert iter.hasNext() == 1 |
173 |
|
stmt = iter.next() |
174 |
|
assert iter.hasNext() == 0 |
175 |
|
assert stmt.getObject().toString() == noteB |
176 |
|
|
177 |
|
# ? <- noteB |
178 |
|
slctr = jena.common.SelectorImpl(noteBRes, PP.Association, None) |
179 |
|
iter = model.listStatements(slctr) |
180 |
|
assert iter.hasNext() == 0 |
181 |
|
|
182 |
|
slctr = jena.common.SelectorImpl(None, PP.Association, noteBRes) |
183 |
|
iter = model.listStatements(slctr) |
184 |
|
assert iter.hasNext() == 1 |
185 |
|
stmt = iter.next() |
186 |
|
assert iter.hasNext() == 0 |
187 |
|
assert stmt.getSubject().toString() == noteA |
188 |
|
|
189 |
|
|
190 |
|
def assocNeg(): |
191 |
|
paper = URN5Namespace.instance.generateId() |
192 |
|
noteA = ppact.newNote(paper, 12, 45, 'This is A') |
193 |
|
noteARes = jena.common.ResourceImpl(noteA) |
194 |
|
noteB = ppact.newNote(paper, 23, 56, 'This is B') |
195 |
|
noteBRes = jena.common.ResourceImpl(noteB) |
196 |
|
|
197 |
|
ppact.assocNotes(noteA, -1, noteB) |
198 |
|
|
199 |
|
# noteA -> ? |
200 |
|
slctr = jena.common.SelectorImpl(noteARes, PP.Association, None) |
201 |
|
iter = model.listStatements(slctr) |
202 |
|
assert iter.hasNext() == 0 |
203 |
|
|
204 |
|
slctr = jena.common.SelectorImpl(None, PP.Association, noteARes) |
205 |
|
iter = model.listStatements(slctr) |
206 |
|
assert iter.hasNext() == 1 |
207 |
|
stmt = iter.next() |
208 |
|
assert iter.hasNext() == 0 |
209 |
|
assert stmt.getSubject().toString() == noteB |
210 |
|
|
211 |
|
# ? <- noteB |
212 |
|
slctr = jena.common.SelectorImpl(None, PP.Association, noteBRes) |
213 |
|
iter = model.listStatements(slctr) |
214 |
|
assert iter.hasNext() == 0 |
215 |
|
|
216 |
|
slctr = jena.common.SelectorImpl(noteBRes, PP.Association, None) |
217 |
|
iter = model.listStatements(slctr) |
218 |
|
assert iter.hasNext() == 1 |
219 |
|
stmt = iter.next() |
220 |
|
assert iter.hasNext() == 0 |
221 |
|
assert stmt.getObject().toString() == noteA |
222 |
|
|
223 |
|
|
224 |
|
def testInsertAndDeleteText(): |
225 |
|
paper = URN5Namespace.instance.generateId() |
226 |
|
note = ppact.newNote(paper, -12, -45, 'This is a test') |
227 |
|
noteRes = jena.common.ResourceImpl(note) |
228 |
|
print note |
229 |
|
|
230 |
|
ppact.insertText(note, 5, 'FOO! ') |
231 |
|
|
232 |
|
# insert test |
233 |
|
slctr = jena.common.SelectorImpl(noteRes, PP.LinkToContentRef, None) |
234 |
|
iter = model.listStatements(slctr) |
235 |
|
assert iter.hasNext() == 1 |
236 |
|
stmt = iter.next() |
237 |
|
assert iter.hasNext() == 0 |
238 |
|
|
239 |
|
slctr = jena.common.SelectorImpl(stmt.getObject(), PP.Data, None) |
240 |
|
iter = model.listStatements(slctr) |
241 |
|
assert iter.hasNext() == 1 |
242 |
|
stmt = iter.next() |
243 |
|
assert iter.hasNext() == 0 |
244 |
|
|
245 |
|
assert stmt.getObject().toString() == 'This FOO! is a test' |
246 |
|
|
247 |
|
#delete test |
248 |
|
ppact.deleteText(note, 5, 8) |
249 |
|
slctr = jena.common.SelectorImpl(noteRes, PP.LinkToContentRef, None) |
250 |
|
iter = model.listStatements(slctr) |
251 |
|
assert iter.hasNext() == 1 |
252 |
|
stmt = iter.next() |
253 |
|
assert iter.hasNext() == 0 |
254 |
|
|
255 |
|
slctr = jena.common.SelectorImpl(stmt.getObject(), PP.Data, None) |
256 |
|
iter = model.listStatements(slctr) |
257 |
|
assert iter.hasNext() == 1 |
258 |
|
stmt = iter.next() |
259 |
|
assert iter.hasNext() == 0 |
260 |
|
|
261 |
|
assert stmt.getObject().toString() == 'This ! is a test' |