1 |
#(c): Matti Katila |
#(c): Matti Katila |
2 |
|
|
3 |
|
from org.fenfire.vocab import PP, SPATIAL |
4 |
from org.fenfire.modules.pp import * |
from org.fenfire.modules.pp import * |
5 |
from org.fenfire.util import URN5Namespace |
from org.fenfire.util import URN5Namespace |
6 |
from com.hp.hpl.mesa.rdf import jena |
from com.hp.hpl.mesa.rdf import jena |
7 |
from com.hp.hpl.mesa.rdf.jena.vocabulary import RDF |
from com.hp.hpl.mesa.rdf.jena.vocabulary import RDF |
8 |
|
|
9 |
def setUp(): |
def setUp(): |
10 |
global model, ppact, PP |
global model, ppact |
11 |
model = jena.mem.ModelMem() |
model = jena.mem.ModelMem() |
12 |
ppact = PPActionsImpl(model) |
ppact = PPActionsImpl(model) |
|
PP = PPVocab() |
|
13 |
|
|
14 |
def testNewPaper(): |
def testNewPaper(): |
15 |
paper = ppact.newPaper() |
paper = ppact.newPaper() |
16 |
assert paper != '' |
assert paper != '' |
17 |
|
|
18 |
slctr = jena.common.SelectorImpl(None, RDF.type, PP.PaperType) |
slctr = jena.common.SelectorImpl(None, RDF.type, PP.paperType) |
19 |
iter = model.listStatements(slctr) |
iter = model.listStatements(slctr) |
20 |
assert iter.hasNext() == 1 |
assert iter.hasNext() == 1 |
21 |
stmt = iter.next() |
stmt = iter.next() |
23 |
assert stmt.getSubject().toString() == paper |
assert stmt.getSubject().toString() == paper |
24 |
|
|
25 |
# XXX does not check creation time |
# XXX does not check creation time |
|
|
|
|
def testNewNote(): |
|
|
newNoteCheck() |
|
26 |
|
|
27 |
paper = URN5Namespace.instance.generateId() |
def checkIter(slctr): |
|
paperRes = jena.common.ResourceImpl(paper) |
|
|
note = ppact.newNote(paper, 123, 456, 'This is a new note') |
|
|
noteRes = jena.common.ResourceImpl(note) |
|
|
|
|
|
# note1 -. |
|
|
# >-> lintoReal data -> data |
|
|
# note2 -' |
|
|
|
|
|
# check link to real data |
|
|
slctr = jena.common.SelectorImpl(noteRes, PP.LinkToContentRef, None) |
|
28 |
iter = model.listStatements(slctr) |
iter = model.listStatements(slctr) |
29 |
assert iter.hasNext() == 1 |
assert iter.hasNext() == 1 |
30 |
stmt = iter.next() |
stmt = iter.next() |
31 |
assert iter.hasNext() == 0 |
assert iter.hasNext() == 0 |
32 |
assert stmt.getSubject().toString() == note |
return stmt |
33 |
|
|
34 |
datalink = stmt.getObject() |
def testNewNote(): |
|
|
|
|
# check data |
|
|
slctr = jena.common.SelectorImpl(datalink, PP.Data, None) |
|
|
iter = model.listStatements(slctr) |
|
|
assert iter.hasNext() == 1 |
|
|
stmt = iter.next() |
|
|
assert iter.hasNext() == 0 |
|
|
assert stmt.getObject().toString() == 'This is a new note' |
|
|
|
|
|
# check type of data |
|
|
slctr = jena.common.SelectorImpl(datalink, RDF.type, None) |
|
|
iter = model.listStatements(slctr) |
|
|
assert iter.hasNext() == 1 |
|
|
stmt = iter.next() |
|
|
assert iter.hasNext() == 0 |
|
|
assert stmt.getSubject() == datalink |
|
|
assert stmt.getObject() == PP.DataType |
|
|
|
|
|
|
|
|
def testCloneNote(): |
|
|
newNoteCheck() |
|
|
|
|
|
paper = URN5Namespace.instance.generateId() |
|
|
orig = ppact.newNote(paper, 123, 456, 'This is the original note') |
|
|
origRes = jena.common.ResourceImpl(orig) |
|
|
clone = ppact.cloneNote(paper, orig, 123, 456, 'This is a new clone') |
|
|
cloneRes = jena.common.ResourceImpl(clone) |
|
|
|
|
|
# note -. |
|
|
# >-> lintoReal data -> data |
|
|
# clone -' |
|
|
|
|
|
# check link to real data |
|
|
slctr = jena.common.SelectorImpl(cloneRes, PP.LinkToContentRef, None) |
|
|
iter = model.listStatements(slctr) |
|
|
|
|
|
slctr2 = jena.common.SelectorImpl(origRes, PP.LinkToContentRef, None) |
|
|
iter2 = model.listStatements(slctr2) |
|
|
|
|
|
assert iter.hasNext() == 1 |
|
|
assert iter2.hasNext() == 1 |
|
|
|
|
|
stmt = iter.next() |
|
|
stmt2 = iter2.next() |
|
|
|
|
|
assert iter.hasNext() == 0 |
|
|
assert iter2.hasNext() == 0 |
|
|
|
|
|
assert stmt.getObject() == stmt2.getObject() |
|
|
|
|
|
slctr = jena.common.SelectorImpl(stmt.getObject(), PP.Data, None) |
|
|
iter = model.listStatements(slctr) |
|
|
assert iter.hasNext() == 1 |
|
|
stmt = iter.next() |
|
|
assert iter.hasNext() == 0 |
|
|
assert stmt.getObject().toString() == 'This is the original note' |
|
|
|
|
|
def newNoteCheck(): |
|
35 |
paper = URN5Namespace.instance.generateId() |
paper = URN5Namespace.instance.generateId() |
36 |
paperRes = jena.common.ResourceImpl(paper) |
paperRes = jena.common.ResourceImpl(paper) |
37 |
note = ppact.newNote(paper, -123, 456, 'This is a new note') |
note = ppact.newNote(paper, -123, 456, 'This is a new note') |
38 |
noteRes = jena.common.ResourceImpl(note) |
noteRes = jena.common.ResourceImpl(note) |
39 |
|
|
40 |
# type test - NoteType |
# type test - NoteType |
41 |
slctr = jena.common.SelectorImpl(noteRes, RDF.type, PP.NoteType) |
slctr = jena.common.SelectorImpl(noteRes, RDF.type, PP.noteType) |
42 |
iter = model.listStatements(slctr) |
stmt = checkIter(slctr) |
|
assert iter.hasNext() == 1 |
|
|
stmt = iter.next() |
|
|
assert iter.hasNext() == 0 |
|
43 |
assert stmt.getSubject().toString() == note |
assert stmt.getSubject().toString() == note |
44 |
|
|
45 |
# is node on paper? |
# is node on paper? |
46 |
slctr = jena.common.SelectorImpl(paperRes, PP.Contains, noteRes) |
slctr = jena.common.SelectorImpl(paperRes, PP.contains, noteRes) |
47 |
iter = model.listStatements(slctr) |
stmt = checkIter(slctr) |
|
assert iter.hasNext() == 1 |
|
|
stmt = iter.next() |
|
|
assert iter.hasNext() == 0 |
|
48 |
assert stmt.getSubject().toString() == paper |
assert stmt.getSubject().toString() == paper |
49 |
assert stmt.getObject().toString() == note |
assert stmt.getObject().toString() == note |
50 |
|
|
51 |
# x coord ok? |
# x coord ok? |
52 |
slctr = jena.common.SelectorImpl(noteRes, PP.CoordX, None) |
slctr = jena.common.SelectorImpl(noteRes, SPATIAL.coordX, None) |
53 |
iter = model.listStatements(slctr) |
stmt = checkIter(slctr) |
|
assert iter.hasNext() == 1 |
|
|
stmt = iter.next() |
|
|
assert iter.hasNext() == 0 |
|
54 |
assert stmt.getObject().toString() == '-123' |
assert stmt.getObject().toString() == '-123' |
55 |
|
|
56 |
# y coord ok? |
# y coord ok? |
57 |
slctr = jena.common.SelectorImpl(noteRes, PP.CoordY, None) |
slctr = jena.common.SelectorImpl(noteRes, SPATIAL.coordY, None) |
58 |
iter = model.listStatements(slctr) |
stmt = checkIter(slctr) |
|
assert iter.hasNext() == 1 |
|
|
stmt = iter.next() |
|
|
assert iter.hasNext() == 0 |
|
59 |
assert stmt.getObject().toString() == '456' |
assert stmt.getObject().toString() == '456' |
60 |
|
|
61 |
# deth ok? |
# depth ok? |
62 |
slctr = jena.common.SelectorImpl(noteRes, PP.Depth, None) |
slctr = jena.common.SelectorImpl(noteRes, PP.depth, None) |
63 |
iter = model.listStatements(slctr) |
stmt = checkIter(slctr) |
|
assert iter.hasNext() == 1 |
|
|
stmt = iter.next() |
|
|
assert iter.hasNext() == 0 |
|
64 |
assert stmt.getObject().toString() == '10' |
assert stmt.getObject().toString() == '10' |
65 |
|
|
66 |
def testAssoc(): |
def testAssoc(): |
77 |
ppact.assocNotes(noteA, 1, noteB) |
ppact.assocNotes(noteA, 1, noteB) |
78 |
|
|
79 |
# noteA -> ? |
# noteA -> ? |
80 |
slctr = jena.common.SelectorImpl(None, PP.Association, noteARes) |
slctr = jena.common.SelectorImpl(None, PP.association, noteARes) |
81 |
iter = model.listStatements(slctr) |
iter = model.listStatements(slctr) |
82 |
assert iter.hasNext() == 0 |
assert iter.hasNext() == 0 |
83 |
|
|
84 |
slctr = jena.common.SelectorImpl(noteARes, PP.Association, None) |
slctr = jena.common.SelectorImpl(noteARes, PP.association, None) |
85 |
iter = model.listStatements(slctr) |
stmt = checkIter(slctr) |
|
assert iter.hasNext() == 1 |
|
|
stmt = iter.next() |
|
|
assert iter.hasNext() == 0 |
|
86 |
assert stmt.getObject().toString() == noteB |
assert stmt.getObject().toString() == noteB |
87 |
|
|
88 |
# ? <- noteB |
# ? <- noteB |
89 |
slctr = jena.common.SelectorImpl(noteBRes, PP.Association, None) |
slctr = jena.common.SelectorImpl(noteBRes, PP.association, None) |
90 |
iter = model.listStatements(slctr) |
iter = model.listStatements(slctr) |
91 |
assert iter.hasNext() == 0 |
assert iter.hasNext() == 0 |
92 |
|
|
93 |
slctr = jena.common.SelectorImpl(None, PP.Association, noteBRes) |
slctr = jena.common.SelectorImpl(None, PP.association, noteBRes) |
94 |
iter = model.listStatements(slctr) |
stmt = checkIter(slctr) |
|
assert iter.hasNext() == 1 |
|
|
stmt = iter.next() |
|
|
assert iter.hasNext() == 0 |
|
95 |
assert stmt.getSubject().toString() == noteA |
assert stmt.getSubject().toString() == noteA |
96 |
|
|
97 |
|
|
105 |
ppact.assocNotes(noteA, -1, noteB) |
ppact.assocNotes(noteA, -1, noteB) |
106 |
|
|
107 |
# noteA -> ? |
# noteA -> ? |
108 |
slctr = jena.common.SelectorImpl(noteARes, PP.Association, None) |
slctr = jena.common.SelectorImpl(noteARes, PP.association, None) |
109 |
iter = model.listStatements(slctr) |
iter = model.listStatements(slctr) |
110 |
assert iter.hasNext() == 0 |
assert iter.hasNext() == 0 |
111 |
|
|
112 |
slctr = jena.common.SelectorImpl(None, PP.Association, noteARes) |
slctr = jena.common.SelectorImpl(None, PP.association, noteARes) |
113 |
iter = model.listStatements(slctr) |
stmt = checkIter(slctr) |
|
assert iter.hasNext() == 1 |
|
|
stmt = iter.next() |
|
|
assert iter.hasNext() == 0 |
|
114 |
assert stmt.getSubject().toString() == noteB |
assert stmt.getSubject().toString() == noteB |
115 |
|
|
116 |
# ? <- noteB |
# ? <- noteB |
117 |
slctr = jena.common.SelectorImpl(None, PP.Association, noteBRes) |
slctr = jena.common.SelectorImpl(None, PP.association, noteBRes) |
118 |
iter = model.listStatements(slctr) |
iter = model.listStatements(slctr) |
119 |
assert iter.hasNext() == 0 |
assert iter.hasNext() == 0 |
120 |
|
|
121 |
slctr = jena.common.SelectorImpl(noteBRes, PP.Association, None) |
slctr = jena.common.SelectorImpl(noteBRes, PP.association, None) |
122 |
iter = model.listStatements(slctr) |
stmt = checkIter(slctr) |
|
assert iter.hasNext() == 1 |
|
|
stmt = iter.next() |
|
|
assert iter.hasNext() == 0 |
|
123 |
assert stmt.getObject().toString() == noteA |
assert stmt.getObject().toString() == noteA |
124 |
|
|
125 |
|
|
132 |
ppact.insertText(note, 5, 'FOO! ') |
ppact.insertText(note, 5, 'FOO! ') |
133 |
|
|
134 |
# insert test |
# insert test |
135 |
slctr = jena.common.SelectorImpl(noteRes, PP.LinkToContentRef, None) |
#assert stmt.getObject().toString() == 'This FOO! is a test' |
|
iter = model.listStatements(slctr) |
|
|
assert iter.hasNext() == 1 |
|
|
stmt = iter.next() |
|
|
assert iter.hasNext() == 0 |
|
|
|
|
|
slctr = jena.common.SelectorImpl(stmt.getObject(), PP.Data, None) |
|
|
iter = model.listStatements(slctr) |
|
|
assert iter.hasNext() == 1 |
|
|
stmt = iter.next() |
|
|
assert iter.hasNext() == 0 |
|
|
|
|
|
assert stmt.getObject().toString() == 'This FOO! is a test' |
|
136 |
|
|
137 |
#delete test |
#delete test |
138 |
ppact.deleteText(note, 5, 8) |
ppact.deleteText(note, 5, 8) |
139 |
slctr = jena.common.SelectorImpl(noteRes, PP.LinkToContentRef, None) |
#assert stmt.getObject().toString() == 'This ! is a test' |
|
iter = model.listStatements(slctr) |
|
|
assert iter.hasNext() == 1 |
|
|
stmt = iter.next() |
|
|
assert iter.hasNext() == 0 |
|
140 |
|
|
141 |
slctr = jena.common.SelectorImpl(stmt.getObject(), PP.Data, None) |
print 'XXX untested, unimplemented' |
142 |
iter = model.listStatements(slctr) |
|
|
assert iter.hasNext() == 1 |
|
|
stmt = iter.next() |
|
|
assert iter.hasNext() == 0 |
|
|
|
|
|
assert stmt.getObject().toString() == 'This ! is a test' |
|