67 lines
2.2 KiB
Python
Executable file
67 lines
2.2 KiB
Python
Executable file
# $Id$
|
|
|
|
import unittest, doctest
|
|
from zope.app.testing import ztapi
|
|
from zope.interface.verify import verifyClass
|
|
from zope.interface import implements
|
|
from zope.intid.interfaces import IIntIds
|
|
|
|
from cybertools.relation.interfaces import IDyadicRelation, ITriadicRelation
|
|
from cybertools.relation.interfaces import IRelation, IPredicate
|
|
from cybertools.relation import Relation, DyadicRelation, TriadicRelation
|
|
from cybertools.relation.interfaces import IRelationRegistry
|
|
|
|
|
|
class IntIdsStub(object):
|
|
"""A testing stub (mock utility) for IntIds."""
|
|
implements(IIntIds)
|
|
|
|
def __init__(self):
|
|
self.objs = []
|
|
|
|
def getObject(self, uid):
|
|
return self.objs[uid]
|
|
|
|
def register(self, ob):
|
|
if ob not in self.objs:
|
|
self.objs.append(ob)
|
|
return self.objs.index(ob)
|
|
|
|
getId = register
|
|
queryId = getId
|
|
|
|
def unregister(self, ob):
|
|
id = self.getId(ob)
|
|
self.objs[id] = None
|
|
|
|
def __iter__(self):
|
|
return iter(xrange(len(self.objs)))
|
|
|
|
|
|
class TestRelation(unittest.TestCase):
|
|
"Basic tests for the relation package."
|
|
|
|
def testInterfaces(self):
|
|
verifyClass(IPredicate, Relation)
|
|
verifyClass(IRelation, Relation)
|
|
self.assert_(IDyadicRelation.providedBy(DyadicRelation(None, None)),
|
|
'Interface IDyadicRelation is not implemented by class DyadicRelation.')
|
|
verifyClass(IDyadicRelation, DyadicRelation)
|
|
self.assert_(ITriadicRelation.providedBy(TriadicRelation(None, None, None)),
|
|
'Interface ITriadicRelation is not implemented by class TriadicRelation.')
|
|
verifyClass(ITriadicRelation, TriadicRelation)
|
|
# avoid dependency on import:
|
|
from cybertools.relation.registry import RelationRegistry
|
|
self.assert_(IRelationRegistry.providedBy(RelationRegistry()),
|
|
'Interface IRelationRegistry is not implemented by class RelationRegistry.')
|
|
verifyClass(IRelationRegistry, RelationRegistry)
|
|
|
|
|
|
def test_suite():
|
|
return unittest.TestSuite((
|
|
unittest.makeSuite(TestRelation),
|
|
doctest.DocFileSuite('README.txt'),
|
|
))
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main(defaultTest='test_suite')
|