loops/tests/test_constraint.py
helmutm cf291c3417 ResourceConstraint: implementation of referenceType method
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@121 fd906abe-77d9-0310-91a1-e0d9ade77398
2004-09-30 16:38:38 +00:00

87 lines
2.8 KiB
Python
Executable file

# $Id$
import unittest
#from zope.testing.doctestunit import DocTestSuite
from zope.interface.verify import verifyClass
from zope.app.container.interfaces import IContained
from zope.app.folder import Folder
from loops.task import Task
from loops.resource import Resource
from loops.constraint import ResourceConstraint
from loops.interfaces import IResourceConstraint
class Test(unittest.TestCase):
"Test methods of the ResourceConstraint class."
def setUp(self):
#placelessSetUp()
self.f1 = Folder()
self.f1.__name__ = u'f1'
self.r1 = Resource()
self.f1['rsc1'] = self.r1
self.t1 = Task()
self.f1['tsk1'] = self.t1
self.rc1 = ResourceConstraint()
def tearDown(self):
pass
# the tests...
def testInterface(self):
self.failUnless(IResourceConstraint.providedBy(self.rc1),
'Interface IResourceConstraint is not implemented by class ResourceConstraint.')
verifyClass(IResourceConstraint, ResourceConstraint)
def testSelectExplicit(self):
rc1 = self.rc1
r1 = self.r1
self.assertEqual(False, rc1.isResourceAllowed(r1))
self.assertEqual((), rc1.getAllowedResources())
rc1.referenceValues = ([r1])
self.assertEqual(True, rc1.isResourceAllowed(r1))
self.assertEqual((r1,), rc1.getAllowedResources())
def testSelectParent(self):
rc1 = self.rc1
r1 = self.r1
t2 = Task()
t2.allocateResource(r1)
rc1.referenceType = 'parent'
rc1.referenceKey = 'getAllocatedResources'
rc1.referenceValues = ([t2])
self.assertEqual(True, rc1.isResourceAllowed(r1))
self.assertEqual((r1,), rc1.getAllowedResources())
rc1.referenceType = 'parent'
rc1.referenceKey = 'getAllocatedResources'
def testRequireMethod(self):
rc1 = self.rc1
rc1.constraintType = 'require'
rc1.referenceType = 'method'
rc1.referenceKey = 'isAllowedForTesting'
r1 = self.r1
t1 = self.t1
self.failIf(rc1.isResourceAllowed(r1))
Resource.isAllowedForTesting = lambda self: True
self.failUnless(rc1.isResourceAllowed(r1))
Resource.isAllowedForTesting = lambda self: False
self.failIf(rc1.isResourceAllowed(r1))
def method(self, task='dummy'):
if task == 'dummy': return None # need task keyword parameter
return task == t1
Resource.isAllowedForTesting = method
self.failUnless(rc1.isResourceAllowed(r1, t1))
self.failIf(rc1.isResourceAllowed(r1, Task()))
def test_suite():
return unittest.TestSuite((
# DocTestSuite('loops.tests.doctests'),
unittest.makeSuite(Test),
))
if __name__ == '__main__':
unittest.main(defaultTest='test_suite')