1 |
#(c): Matti Katila |
# to be implemented |
2 |
|
|
|
from org.fenfire.vocab import PP, SPATIAL, ALPH |
|
|
from org.fenfire.modules.pp import * |
|
|
from org.fenfire.impl import ModularSpace, SimpleVStreamTexter |
|
|
from org.fenfire.util import URN5Namespace |
|
|
from org.nongnu.alph import impl |
|
|
from com.hp.hpl.mesa.rdf import jena |
|
|
from com.hp.hpl.mesa.rdf.jena.vocabulary import RDF |
|
|
|
|
|
def setUp(): |
|
|
global model, space, ppact |
|
|
model = jena.mem.ModelMem() |
|
|
space = ModularSpace(SimpleVStreamTexter( |
|
|
impl.FakeSpanMaker(), |
|
|
impl.Enfilade1DImpl.Enfilade1DImplMaker()), |
|
|
model) |
|
|
ppact = PPActionsImpl(space) |
|
|
|
|
|
def checkIter(slctr): |
|
|
iter = model.listStatements(slctr) |
|
|
assert iter.hasNext() == 1 |
|
|
stmt = iter.next() |
|
|
assert iter.hasNext() == 0 |
|
|
return stmt |
|
|
|
|
|
def testNewPaper(): |
|
|
paper = ppact.newPaper() |
|
|
assert paper != '' |
|
|
|
|
|
slctr = jena.common.SelectorImpl(None, RDF.type, PP.paperType) |
|
|
stmt = checkIter(slctr) |
|
|
assert stmt.getSubject().toString() == paper |
|
|
|
|
|
# XXX does not check creation time |
|
|
|
|
|
def testNewNote(): |
|
|
paper = URN5Namespace.instance.generateId() |
|
|
paperRes = jena.common.ResourceImpl(paper) |
|
|
note = ppact.newNote(paper, -123, 456, 'This is a new note') |
|
|
noteRes = jena.common.ResourceImpl(note) |
|
|
|
|
|
# type test - NoteType |
|
|
slctr = jena.common.SelectorImpl(noteRes, RDF.type, PP.noteType) |
|
|
stmt = checkIter(slctr) |
|
|
assert stmt.getSubject().toString() == note |
|
|
|
|
|
# has note any content? |
|
|
slctr = jena.common.SelectorImpl(noteRes, RDF.type, ALPH.cloneType) |
|
|
stmt = checkIter(slctr) |
|
|
assert stmt.getSubject().toString() == note |
|
|
|
|
|
# is node on paper? |
|
|
slctr = jena.common.SelectorImpl(paperRes, PP.contains, noteRes) |
|
|
stmt = checkIter(slctr) |
|
|
assert stmt.getSubject().toString() == paper |
|
|
assert stmt.getObject().toString() == note |
|
|
|
|
|
# x coord ok? |
|
|
slctr = jena.common.SelectorImpl(noteRes, SPATIAL.coordX, None) |
|
|
stmt = checkIter(slctr) |
|
|
assert stmt.getObject().toString() == '-123' |
|
|
|
|
|
# y coord ok? |
|
|
slctr = jena.common.SelectorImpl(noteRes, SPATIAL.coordY, None) |
|
|
stmt = checkIter(slctr) |
|
|
assert stmt.getObject().toString() == '456' |
|
|
|
|
|
# depth ok? |
|
|
slctr = jena.common.SelectorImpl(noteRes, PP.depth, None) |
|
|
stmt = checkIter(slctr) |
|
|
assert stmt.getObject().toString() == '10' |
|
|
|
|
|
def testAssoc(): |
|
|
assocPos() |
|
|
assocNeg() |
|
|
|
|
|
def assocPos(): |
|
|
paper = URN5Namespace.instance.generateId() |
|
|
noteA = ppact.newNote(paper, 12, 45, 'This is A') |
|
|
noteARes = jena.common.ResourceImpl(noteA) |
|
|
noteB = ppact.newNote(paper, 23, 56, 'This is B') |
|
|
noteBRes = jena.common.ResourceImpl(noteB) |
|
|
|
|
|
ppact.assocNotes(noteA, 1, noteB) |
|
|
|
|
|
# noteA -> ? |
|
|
slctr = jena.common.SelectorImpl(None, PP.association, noteARes) |
|
|
iter = model.listStatements(slctr) |
|
|
assert iter.hasNext() == 0 |
|
|
|
|
|
slctr = jena.common.SelectorImpl(noteARes, PP.association, None) |
|
|
stmt = checkIter(slctr) |
|
|
assert stmt.getObject().toString() == noteB |
|
|
|
|
|
# ? <- noteB |
|
|
slctr = jena.common.SelectorImpl(noteBRes, PP.association, None) |
|
|
iter = model.listStatements(slctr) |
|
|
assert iter.hasNext() == 0 |
|
|
|
|
|
slctr = jena.common.SelectorImpl(None, PP.association, noteBRes) |
|
|
stmt = checkIter(slctr) |
|
|
assert stmt.getSubject().toString() == noteA |
|
|
|
|
|
|
|
|
def assocNeg(): |
|
|
paper = URN5Namespace.instance.generateId() |
|
|
noteA = ppact.newNote(paper, 12, 45, 'This is A') |
|
|
noteARes = jena.common.ResourceImpl(noteA) |
|
|
noteB = ppact.newNote(paper, 23, 56, 'This is B') |
|
|
noteBRes = jena.common.ResourceImpl(noteB) |
|
|
|
|
|
ppact.assocNotes(noteA, -1, noteB) |
|
|
|
|
|
# noteA -> ? |
|
|
slctr = jena.common.SelectorImpl(noteARes, PP.association, None) |
|
|
iter = model.listStatements(slctr) |
|
|
assert iter.hasNext() == 0 |
|
|
|
|
|
slctr = jena.common.SelectorImpl(None, PP.association, noteARes) |
|
|
stmt = checkIter(slctr) |
|
|
assert stmt.getSubject().toString() == noteB |
|
|
|
|
|
# ? <- noteB |
|
|
slctr = jena.common.SelectorImpl(None, PP.association, noteBRes) |
|
|
iter = model.listStatements(slctr) |
|
|
assert iter.hasNext() == 0 |
|
|
|
|
|
slctr = jena.common.SelectorImpl(noteBRes, PP.association, None) |
|
|
stmt = checkIter(slctr) |
|
|
assert stmt.getObject().toString() == noteA |
|
|
|
|
|
|
|
|
def testInsertAndDeleteText(): |
|
|
paper = URN5Namespace.instance.generateId() |
|
|
note = ppact.newNote(paper, -12, -45, 'This is a test') |
|
|
noteRes = jena.common.ResourceImpl(note) |
|
|
print note |
|
|
|
|
|
ppact.insertText(note, 5, 'FOO! ') |
|
|
|
|
|
# insert test |
|
|
#assert stmt.getObject().toString() == 'This FOO! is a test' |
|
|
|
|
|
#delete test |
|
|
ppact.deleteText(note, 5, 8) |
|
|
#assert stmt.getObject().toString() == 'This ! is a test' |
|
|
|
|
|
print 'XXX untested, unimplemented' |
|
|
|
|