loops/tests/test_constraint.py
helmutm f0928adbd8 ResourceConstraint: more on selectmethod and checkmethod
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@122 fd906abe-77d9-0310-91a1-e0d9ade77398
2004-10-01 09:10:37 +00:00

93 lines
2.9 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 testRequireExplicit(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 testRequireParent(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 testRequireCheckmethod(self):
rc1 = self.rc1
rc1.referenceType = 'checkmethod'
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, t1))
def testRequireSelectMethod(self):
rc1 = self.rc1
rc1.referenceType = 'selectmethod'
rc1.referenceKey = 'selectResources'
r1 = self.r1
t1 = self.t1
def method(self, candidates, task):
if task is None: return None
return (r1,)
ResourceConstraint.selectResources = method
self.assertEqual((r1,), rc1.getAllowedResources(task=t1))
self.failUnless(rc1.isResourceAllowed(r1, task=t1))
def test_suite():
return unittest.TestSuite((
# DocTestSuite('loops.tests.doctests'),
unittest.makeSuite(Test),
))
if __name__ == '__main__':
unittest.main(defaultTest='test_suite')