[Checkins] SVN: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/ Clean out module-scope imports in unit tests.
Tres Seaver
cvs-admin at zope.org
Fri Apr 20 14:32:14 UTC 2012
Log message for revision 125201:
Clean out module-scope imports in unit tests.
Changed:
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/__init__.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_accessors.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_boolfield.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_choice.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_containerfield.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_date.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_datetime.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_decimalfield.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_dictfield.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_docs.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_dotted_name.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_equality.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_field.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_fieldproperty.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_floatfield.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_interfacefield.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_intfield.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_iterablefield.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_listfield.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_objectfield.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_schema.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_setfield.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_states.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_strfield.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_timedelta.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_tuplefield.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_vocabulary.py
-=-
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/__init__.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/__init__.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/__init__.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -32,9 +32,12 @@
r"InvalidDottedName: \1"),
(re.compile(r"zope.schema.interfaces.InvalidDottedName:"),
r"InvalidDottedName:"),
- (re.compile(r"zope.schema._bootstrapinterfaces.ConstraintNotSatisfied: '([^']*)'"),
+ (re.compile(
+ r"zope.schema._bootstrapinterfaces.ConstraintNotSatisfied: '([^']*)'"
+ ),
r"ConstraintNotSatisfied: \1"),
- (re.compile(r"zope.schema._bootstrapinterfaces.ConstraintNotSatisfied:"),
+ (re.compile(
+ r"zope.schema._bootstrapinterfaces.ConstraintNotSatisfied:"),
r"ConstraintNotSatisfied:"),
(re.compile(r"zope.schema._bootstrapinterfaces.WrongType:"),
r"WrongType:"),
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_accessors.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_accessors.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_accessors.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -14,23 +14,25 @@
"""Test Interface accessor methods.
"""
import unittest
-from zope.interface import Interface, implementer
-from six import u
-from zope.schema import Text, accessors
-from zope.schema.interfaces import IText
-from zope.schema.accessors import FieldReadAccessor, FieldWriteAccessor
-from zope.interface.verify import verifyClass, verifyObject
-from zope.interface import document
-from zope.interface.interfaces import IMethod
+
class Test(unittest.TestCase):
def test(self):
+ from six import u
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.interface.interfaces import IMethod
+ from zope.interface.verify import verifyClass
+ from zope.interface.verify import verifyObject
+ from zope.schema import Text
+ from zope.schema.accessors import accessors
+ from zope.schema.accessors import FieldReadAccessor
+ from zope.schema.accessors import FieldWriteAccessor
+ from zope.schema.interfaces import IText
field = Text(title=u("Foo thing"))
-
class I(Interface):
-
getFoo, setFoo = accessors(field)
@implementer(I)
@@ -88,16 +90,20 @@
self.assertEqual(instance.set, 1)
def test_doc(self):
+ from six import u
+ from zope.interface import Interface
+ from zope.interface.document import asStructuredText
+ from zope.schema import Text
+ from zope.schema.accessors import accessors
field = Text(title=u("Foo thing"))
-
class I(Interface):
getFoo, setFoo = accessors(field)
def bar(): pass
x = Text()
- d = document.asStructuredText(I)
+ d = asStructuredText(I)
self.assertEqual(d,
"I\n"
"\n"
@@ -117,9 +123,9 @@
def test_suite():
- suite = unittest.TestSuite()
- suite.addTest(unittest.makeSuite(Test))
- return suite
+ return unittest.TestSuite((
+ unittest.makeSuite(Test),
+ ))
if __name__ == '__main__':
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_boolfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_boolfield.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_boolfield.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,30 +13,30 @@
##############################################################################
"""Boolean field tests
"""
-from unittest import main, makeSuite
+import unittest
-from six import u
-from zope.schema import Bool
-from zope.schema.interfaces import RequiredMissing, IBool, IFromUnicode
from zope.schema.tests.test_field import FieldTestBase
-import zope.interface.adapter
-import zope.interface
class BoolTest(FieldTestBase):
"""Test the Bool Field."""
- _Field_Factory = Bool
+ def _getTargetClass(self):
+ from zope.schema import Bool
+ return Bool
def testValidate(self):
- field = Bool(title=u('Bool field'), description=u(''),
+ from six import u
+ field = self._makeOne(title=u('Bool field'), description=u(''),
readonly=False, required=False)
field.validate(None)
field.validate(True)
field.validate(False)
def testValidateRequired(self):
- field = Bool(title=u('Bool field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import RequiredMissing
+ field = self._makeOne(title=u('Bool field'), description=u(''),
readonly=False, required=True)
field.validate(True)
field.validate(False)
@@ -44,7 +44,12 @@
self.assertRaises(RequiredMissing, field.validate, None)
def testIBoolIsMoreImportantThanIFromUnicode(self):
- registry = zope.interface.adapter.AdapterRegistry()
+ from six import u
+ from zope.interface import Interface
+ from zope.interface.adapter import AdapterRegistry
+ from zope.schema.interfaces import IBool
+ from zope.schema.interfaces import IFromUnicode
+ registry = AdapterRegistry()
def adapt_bool(context):
return 'bool'
@@ -52,20 +57,19 @@
def adapt_from_unicode(context):
return 'unicode'
- class IAdaptTo(zope.interface.Interface):
+ class IAdaptTo(Interface):
pass
registry.register((IBool,), IAdaptTo, u(''), adapt_bool)
registry.register((IFromUnicode,), IAdaptTo, u(''), adapt_from_unicode)
- field = Bool(title=u('Bool field'), description=u(''),
+ field = self._makeOne(title=u('Bool field'), description=u(''),
readonly=False, required=True)
self.assertEqual('bool', registry.queryAdapter(field, IAdaptTo))
def test_suite():
- return makeSuite(BoolTest)
-
-if __name__ == '__main__':
- main(defaultTest='test_suite')
+ return unittest.TestSuite((
+ unittest.makeSuite(BoolTest),
+ ))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_choice.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_choice.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_choice.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -15,122 +15,141 @@
"""
import unittest
-from six import u
-from zope.interface import implementer
-from zope.schema import vocabulary
-from zope.schema import Choice
-from zope.schema.interfaces import ConstraintNotSatisfied
-from zope.schema.interfaces import ValidationError
-from zope.schema.interfaces import InvalidValue, NotAContainer, NotUnique
-from zope.schema.interfaces import IContextSourceBinder
-from zope.schema.tests.test_vocabulary import SampleVocabulary, DummyRegistry
+class _Base(unittest.TestCase):
+ def _getTargetClass(self):
+ from zope.schema import Choice
+ return Choice
-class Value_ChoiceFieldTests(unittest.TestCase):
+ def _makeOne(self, *args, **kw):
+ return self._getTargetClass()(*args, **kw)
+
+
+class Value_ChoiceFieldTests(_Base):
"""Tests of the Choice Field using values."""
def test_create_vocabulary(self):
- choice = Choice(values=[1, 3])
+ choice = self._makeOne(values=[1, 3])
self.assertEqual([term.value for term in choice.vocabulary], [1, 3])
def test_validate_int(self):
- choice = Choice(values=[1, 3])
+ from zope.schema.interfaces import ConstraintNotSatisfied
+ choice = self._makeOne(values=[1, 3])
choice.validate(1)
choice.validate(3)
self.assertRaises(ConstraintNotSatisfied, choice.validate, 4)
def test_validate_string(self):
- choice = Choice(values=['a', 'c'])
+ from six import u
+ from zope.schema.interfaces import ConstraintNotSatisfied
+ choice = self._makeOne(values=['a', 'c'])
choice.validate('a')
choice.validate('c')
choice.validate(u('c'))
self.assertRaises(ConstraintNotSatisfied, choice.validate, 'd')
def test_validate_tuple(self):
- choice = Choice(values=[(1, 2), (5, 6)])
+ from zope.schema.interfaces import ConstraintNotSatisfied
+ choice = self._makeOne(values=[(1, 2), (5, 6)])
choice.validate((1, 2))
choice.validate((5, 6))
self.assertRaises(ConstraintNotSatisfied, choice.validate, [5, 6])
self.assertRaises(ConstraintNotSatisfied, choice.validate, ())
def test_validate_mixed(self):
- choice = Choice(values=[1, 'b', (0.2,)])
+ from zope.schema.interfaces import ConstraintNotSatisfied
+ choice = self._makeOne(values=[1, 'b', (0.2,)])
choice.validate(1)
choice.validate('b')
choice.validate((0.2,))
self.assertRaises(ConstraintNotSatisfied, choice.validate, '1')
self.assertRaises(ConstraintNotSatisfied, choice.validate, 0.2)
-class Vocabulary_ChoiceFieldTests(unittest.TestCase):
+
+class Vocabulary_ChoiceFieldTests(_Base):
"""Tests of the Choice Field using vocabularies."""
def setUp(self):
- vocabulary._clear()
+ from zope.schema.vocabulary import _clear
+ _clear()
def tearDown(self):
- vocabulary._clear()
+ from zope.schema.vocabulary import _clear
+ _clear()
- def check_preconstructed(self, cls, okval, badval):
- v = SampleVocabulary()
- field = cls(vocabulary=v)
+ def _getTargetClass(self):
+ from zope.schema import Choice
+ return Choice
+
+ def _makeOne(self, *args, **kw):
+ return self._getTargetClass()(*args, **kw)
+
+ def test_preconstructed_vocabulary(self):
+ from zope.schema.interfaces import ValidationError
+ from zope.schema.tests.test_vocabulary import _makeSampleVocabulary
+ v = _makeSampleVocabulary()
+ field = self._makeOne(vocabulary=v)
self.assertTrue(field.vocabulary is v)
self.assertTrue(field.vocabularyName is None)
bound = field.bind(None)
self.assertTrue(bound.vocabulary is v)
self.assertTrue(bound.vocabularyName is None)
- bound.default = okval
- self.assertEqual(bound.default, okval)
- self.assertRaises(ValidationError, setattr, bound, "default", badval)
+ bound.default = 1
+ self.assertEqual(bound.default, 1)
+ self.assertRaises(ValidationError, setattr, bound, "default", 42)
- def test_preconstructed_vocabulary(self):
- self.check_preconstructed(Choice, 1, 42)
-
- def check_constructed(self, cls, okval, badval):
- vocabulary.setVocabularyRegistry(DummyRegistry())
- field = cls(vocabulary="vocab")
+ def test_constructed_vocabulary(self):
+ from zope.schema.interfaces import ValidationError
+ from zope.schema.vocabulary import setVocabularyRegistry
+ from zope.schema.tests.test_vocabulary import _makeDummyRegistry
+ setVocabularyRegistry(_makeDummyRegistry())
+ field = self._makeOne(vocabulary="vocab")
self.assertTrue(field.vocabulary is None)
self.assertEqual(field.vocabularyName, "vocab")
o = object()
bound = field.bind(o)
- self.assertTrue(isinstance(bound.vocabulary, SampleVocabulary))
- bound.default = okval
- self.assertEqual(bound.default, okval)
- self.assertRaises(ValidationError, setattr, bound, "default", badval)
+ bound.default = 1
+ self.assertEqual(bound.default, 1)
+ self.assertRaises(ValidationError, setattr, bound, "default", 42)
- def test_constructed_vocabulary(self):
- self.check_constructed(Choice, 1, 42)
-
def test_create_vocabulary(self):
- vocabulary.setVocabularyRegistry(DummyRegistry())
- field = Choice(vocabulary="vocab")
+ from zope.schema.vocabulary import setVocabularyRegistry
+ from zope.schema.tests.test_vocabulary import _makeDummyRegistry
+ setVocabularyRegistry(_makeDummyRegistry())
+ field = self._makeOne(vocabulary="vocab")
o = object()
bound = field.bind(o)
self.assertEqual([term.value for term in bound.vocabulary],
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
def test_undefined_vocabulary(self):
- choice = Choice(vocabulary="unknown")
+ choice = self._makeOne(vocabulary="unknown")
self.assertRaises(ValueError, choice.validate, "value")
- at implementer(IContextSourceBinder)
-class SampleContextSourceBinder(object):
- def __call__(self, context):
- return SampleVocabulary()
-
-class ContextSourceBinder_ChoiceFieldTests(unittest.TestCase):
+class ContextSourceBinder_ChoiceFieldTests(_Base):
"""Tests of the Choice Field using IContextSourceBinder as source."""
def setUp(self):
- vocabulary._clear()
+ from zope.schema.vocabulary import _clear
+ _clear()
def tearDown(self):
- vocabulary._clear()
+ from zope.schema.vocabulary import _clear
+ _clear()
def test_validate_source(self):
+ from zope.interface import implementer
+ from zope.schema.interfaces import IContextSourceBinder
+ from zope.schema.interfaces import ConstraintNotSatisfied
+ from zope.schema.tests.test_vocabulary import _makeSampleVocabulary
+ @implementer(IContextSourceBinder)
+ class SampleContextSourceBinder(object):
+ def __call__(self, context):
+ return _makeSampleVocabulary()
s = SampleContextSourceBinder()
- choice = Choice(source=s)
+ choice = self._makeOne(source=s)
# raises not iterable with unbound field
self.assertRaises(TypeError, choice.validate, 1)
o = object()
@@ -141,11 +160,8 @@
def test_suite():
- suite = unittest.TestSuite()
- suite.addTest(unittest.makeSuite(Vocabulary_ChoiceFieldTests))
- suite.addTest(unittest.makeSuite(Value_ChoiceFieldTests))
- suite.addTest(unittest.makeSuite(ContextSourceBinder_ChoiceFieldTests))
- return suite
-
-if __name__ == "__main__":
- unittest.main(defaultTest="test_suite")
+ return unittest.TestSuite((
+ unittest.makeSuite(Vocabulary_ChoiceFieldTests),
+ unittest.makeSuite(Value_ChoiceFieldTests),
+ unittest.makeSuite(ContextSourceBinder_ChoiceFieldTests),
+ ))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_containerfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_containerfield.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_containerfield.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,25 +13,26 @@
##############################################################################
"""Container field tests
"""
-from six import PY3, u
-if not PY3:
- from UserDict import UserDict
-else:
- #python3
- from collections import UserDict
-from unittest import main, makeSuite
-from zope.schema import Container
-from zope.schema.interfaces import RequiredMissing, NotAContainer
+import unittest
+
from zope.schema.tests.test_field import FieldTestBase
class ContainerTest(FieldTestBase):
"""Test the Container Field."""
- _Field_Factory = Container
+ def _getTargetClass(self):
+ from zope.schema import Container
+ return Container
def testValidate(self):
- field = self._Field_Factory(title=u('test field'), description=u(''),
- readonly=False, required=False)
+ try:
+ from UserDict import UserDict
+ except ImportError: #pragma NO COVER python3
+ from collections import UserDict
+ from six import u
+ from zope.schema.interfaces import NotAContainer
+ field = self._makeOne(title=u('test field'), description=u(''),
+ readonly=False, required=False)
field.validate(None)
field.validate('')
field.validate('abc')
@@ -43,16 +44,15 @@
self.assertRaises(NotAContainer, field.validate, True)
def testValidateRequired(self):
- field = self._Field_Factory(title=u('test field'), description=u(''),
- readonly=False, required=True)
-
+ from six import u
+ from zope.schema.interfaces import RequiredMissing
+ field = self._makeOne(title=u('test field'), description=u(''),
+ readonly=False, required=True)
field.validate('')
-
self.assertRaises(RequiredMissing, field.validate, None)
def test_suite():
- return makeSuite(ContainerTest)
-
-if __name__ == '__main__':
- main(defaultTest='test_suite')
+ return unittest.TestSuite((
+ unittest.makeSuite(ContainerTest),
+ ))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_date.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_date.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_date.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,43 +13,50 @@
##############################################################################
"""Date field tests
"""
-from unittest import main, makeSuite
+import unittest
-from six import u
-from zope.schema import Date
-from zope.schema.interfaces import RequiredMissing, InvalidValue, WrongType
-from zope.schema.interfaces import TooSmall, TooBig
from zope.schema.tests.test_field import FieldTestBase
-from datetime import datetime, date
class DateTest(FieldTestBase):
"""Test the Date Field."""
- _Field_Factory = Date
+ def _getTargetClass(self):
+ from zope.schema import Date
+ return Date
def testInterface(self):
from zope.interface.verify import verifyObject
from zope.schema.interfaces import IDate
- verifyObject(IDate, self._Field_Factory())
+ verifyObject(IDate, self._makeOne())
def testValidate(self):
- field = self._Field_Factory(title=u('Date field'), description=u(''),
+ from datetime import datetime
+ from six import u
+ from zope.schema.interfaces import WrongType
+ field = self._makeOne(title=u('Date field'), description=u(''),
readonly=False, required=False)
field.validate(None)
field.validate(datetime.now().date())
self.assertRaises(WrongType, field.validate, datetime.now())
def testValidateRequired(self):
- field = self._Field_Factory(title=u('Date field'), description=u(''),
+ from datetime import datetime
+ from six import u
+ from zope.schema.interfaces import RequiredMissing
+ field = self._makeOne(title=u('Date field'), description=u(''),
readonly=False, required=True)
field.validate(datetime.now().date())
self.assertRaises(RequiredMissing, field.validate, None)
def testValidateMin(self):
+ from datetime import date
+ from datetime import datetime
+ from six import u
+ from zope.schema.interfaces import TooSmall
d1 = date(2000,10,1)
d2 = date(2000,10,2)
- field = self._Field_Factory(title=u('Date field'), description=u(''),
+ field = self._makeOne(title=u('Date field'), description=u(''),
readonly=False, required=False, min=d1)
field.validate(None)
field.validate(d1)
@@ -59,10 +66,13 @@
self.assertRaises(TooSmall, field.validate, date(2000,9,30))
def testValidateMax(self):
+ from datetime import date
+ from six import u
+ from zope.schema.interfaces import TooBig
d1 = date(2000,10,1)
d2 = date(2000,10,2)
d3 = date(2000,10,3)
- field = self._Field_Factory(title=u('Date field'), description=u(''),
+ field = self._makeOne(title=u('Date field'), description=u(''),
readonly=False, required=False, max=d2)
field.validate(None)
field.validate(d1)
@@ -71,13 +81,17 @@
self.assertRaises(TooBig, field.validate, d3)
def testValidateMinAndMax(self):
+ from datetime import date
+ from six import u
+ from zope.schema.interfaces import TooBig
+ from zope.schema.interfaces import TooSmall
d1 = date(2000,10,1)
d2 = date(2000,10,2)
d3 = date(2000,10,3)
d4 = date(2000,10,4)
d5 = date(2000,10,5)
- field = self._Field_Factory(title=u('Date field'), description=u(''),
+ field = self._makeOne(title=u('Date field'), description=u(''),
readonly=False, required=False,
min=d2, max=d4)
field.validate(None)
@@ -90,8 +104,6 @@
def test_suite():
- suite = makeSuite(DateTest)
- return suite
-
-if __name__ == '__main__':
- main(defaultTest='test_suite')
+ return unittest.TestSuite((
+ unittest.makeSuite(DateTest),
+ ))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_datetime.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_datetime.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_datetime.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,37 +13,42 @@
##############################################################################
"""Datetime Field tests
"""
-from unittest import main, makeSuite
+import unittest
-from six import u
-from zope.schema import Datetime
-from zope.schema.interfaces import RequiredMissing, InvalidValue
-from zope.schema.interfaces import TooSmall, TooBig
from zope.schema.tests.test_field import FieldTestBase
-from datetime import datetime
class DatetimeTest(FieldTestBase):
"""Test the Datetime Field."""
- _Field_Factory = Datetime
+ def _getTargetClass(self):
+ from zope.schema import Datetime
+ return Datetime
def testValidate(self):
- field = self._Field_Factory(title=u('Datetime field'), description=u(''),
+ from datetime import datetime
+ from six import u
+ field = self._makeOne(title=u('Datetime field'), description=u(''),
readonly=False, required=False)
field.validate(None)
field.validate(datetime.now())
def testValidateRequired(self):
- field = self._Field_Factory(title=u('Datetime field'), description=u(''),
+ from datetime import datetime
+ from six import u
+ from zope.schema.interfaces import RequiredMissing
+ field = self._makeOne(title=u('Datetime field'), description=u(''),
readonly=False, required=True)
field.validate(datetime.now())
self.assertRaises(RequiredMissing, field.validate, None)
def testValidateMin(self):
+ from datetime import datetime
+ from six import u
+ from zope.schema.interfaces import TooSmall
d1 = datetime(2000,10,1)
d2 = datetime(2000,10,2)
- field = self._Field_Factory(title=u('Datetime field'), description=u(''),
+ field = self._makeOne(title=u('Datetime field'), description=u(''),
readonly=False, required=False, min=d1)
field.validate(None)
field.validate(d1)
@@ -53,10 +58,13 @@
self.assertRaises(TooSmall, field.validate, datetime(2000,9,30))
def testValidateMax(self):
+ from datetime import datetime
+ from six import u
+ from zope.schema.interfaces import TooBig
d1 = datetime(2000,10,1)
d2 = datetime(2000,10,2)
d3 = datetime(2000,10,3)
- field = self._Field_Factory(title=u('Datetime field'), description=u(''),
+ field = self._makeOne(title=u('Datetime field'), description=u(''),
readonly=False, required=False, max=d2)
field.validate(None)
field.validate(d1)
@@ -65,13 +73,17 @@
self.assertRaises(TooBig, field.validate, d3)
def testValidateMinAndMax(self):
+ from datetime import datetime
+ from six import u
+ from zope.schema.interfaces import TooBig
+ from zope.schema.interfaces import TooSmall
d1 = datetime(2000,10,1)
d2 = datetime(2000,10,2)
d3 = datetime(2000,10,3)
d4 = datetime(2000,10,4)
d5 = datetime(2000,10,5)
- field = self._Field_Factory(title=u('Datetime field'), description=u(''),
+ field = self._makeOne(title=u('Datetime field'), description=u(''),
readonly=False, required=False,
min=d2, max=d4)
field.validate(None)
@@ -84,8 +96,6 @@
def test_suite():
- suite = makeSuite(DatetimeTest)
- return suite
-
-if __name__ == '__main__':
- main(defaultTest='test_suite')
+ return unittest.TestSuite((
+ unittest.makeSuite(DatetimeTest),
+ ))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_decimalfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_decimalfield.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_decimalfield.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,22 +13,22 @@
##############################################################################
"""Decimal field tests
"""
-import decimal
+import unittest
-from six import u
-from unittest import main, makeSuite
-from zope.schema import Decimal
-from zope.schema.interfaces import RequiredMissing, InvalidValue
-from zope.schema.interfaces import TooSmall, TooBig
from zope.schema.tests.test_field import FieldTestBase
+
class DecimalTest(FieldTestBase):
"""Test the Decimal Field."""
- _Field_Factory = Decimal
+ def _getTargetClass(self):
+ from zope.schema import Decimal
+ return Decimal
def testValidate(self):
- field = self._Field_Factory(title=u('Decimal field'), description=u(''),
+ import decimal
+ from six import u
+ field = self._makeOne(title=u('Decimal field'), description=u(''),
readonly=False, required=False)
field.validate(None)
field.validate(decimal.Decimal("10.0"))
@@ -36,7 +36,10 @@
field.validate(decimal.Decimal("1000.0003"))
def testValidateRequired(self):
- field = self._Field_Factory(title=u('Decimal field'), description=u(''),
+ import decimal
+ from six import u
+ from zope.schema.interfaces import RequiredMissing
+ field = self._makeOne(title=u('Decimal field'), description=u(''),
readonly=False, required=True)
field.validate(decimal.Decimal("10.0"))
field.validate(decimal.Decimal("0.93"))
@@ -45,7 +48,10 @@
self.assertRaises(RequiredMissing, field.validate, None)
def testValidateMin(self):
- field = self._Field_Factory(title=u('Decimal field'), description=u(''),
+ import decimal
+ from six import u
+ from zope.schema.interfaces import TooSmall
+ field = self._makeOne(title=u('Decimal field'), description=u(''),
readonly=False, required=False,
min=decimal.Decimal("10.5"))
field.validate(None)
@@ -56,7 +62,10 @@
self.assertRaises(TooSmall, field.validate, decimal.Decimal("10.4"))
def testValidateMax(self):
- field = self._Field_Factory(title=u('Decimal field'), description=u(''),
+ import decimal
+ from six import u
+ from zope.schema.interfaces import TooBig
+ field = self._makeOne(title=u('Decimal field'), description=u(''),
readonly=False, required=False,
max=decimal.Decimal("10.5"))
field.validate(None)
@@ -67,7 +76,11 @@
self.assertRaises(TooBig, field.validate, decimal.Decimal("20.7"))
def testValidateMinAndMax(self):
- field = self._Field_Factory(title=u('Decimal field'), description=u(''),
+ import decimal
+ from six import u
+ from zope.schema.interfaces import TooBig
+ from zope.schema.interfaces import TooSmall
+ field = self._makeOne(title=u('Decimal field'), description=u(''),
readonly=False, required=False,
min=decimal.Decimal("-0.6"),
max=decimal.Decimal("10.1"))
@@ -83,8 +96,6 @@
def test_suite():
- suite = makeSuite(DecimalTest)
- return suite
-
-if __name__ == '__main__':
- main(defaultTest='test_suite')
+ return unittest.TestSuite((
+ unittest.makeSuite(DecimalTest),
+ ))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_dictfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_dictfield.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_dictfield.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,21 +13,21 @@
##############################################################################
"""Dictionary field tests
"""
-from unittest import main, makeSuite
+import unittest
-from six import u
-from zope.schema import Dict, Int
-from zope.schema.interfaces import RequiredMissing, WrongContainedType
-from zope.schema.interfaces import TooShort, TooLong
from zope.schema.tests.test_field import FieldTestBase
+
class DictTest(FieldTestBase):
"""Test the Dict Field."""
- _Field_Factory = Dict
+ def _getTargetClass(self):
+ from zope.schema import Dict
+ return Dict
def testValidate(self):
- field = Dict(title=u('Dict field'),
+ from six import u
+ field = self._makeOne(title=u('Dict field'),
description=u(''), readonly=False, required=False)
field.validate(None)
field.validate({})
@@ -35,7 +35,9 @@
field.validate({'a': 1})
def testValidateRequired(self):
- field = Dict(title=u('Dict field'),
+ from six import u
+ from zope.schema.interfaces import RequiredMissing
+ field = self._makeOne(title=u('Dict field'),
description=u(''), readonly=False, required=True)
field.validate({})
field.validate({1: 'foo'})
@@ -44,7 +46,9 @@
self.assertRaises(RequiredMissing, field.validate, None)
def testValidateMinValues(self):
- field = Dict(title=u('Dict field'),
+ from six import u
+ from zope.schema.interfaces import TooShort
+ field = self._makeOne(title=u('Dict field'),
description=u(''), readonly=False, required=False,
min_length=1)
field.validate(None)
@@ -54,7 +58,9 @@
self.assertRaises(TooShort, field.validate, {})
def testValidateMaxValues(self):
- field = Dict(title=u('Dict field'),
+ from six import u
+ from zope.schema.interfaces import TooLong
+ field = self._makeOne(title=u('Dict field'),
description=u(''), readonly=False, required=False,
max_length=1)
field.validate(None)
@@ -65,7 +71,10 @@
self.assertRaises(TooLong, field.validate, {1: 'a', 2: 'b', 3: 'c'})
def testValidateMinValuesAndMaxValues(self):
- field = Dict(title=u('Dict field'),
+ from six import u
+ from zope.schema.interfaces import TooLong
+ from zope.schema.interfaces import TooShort
+ field = self._makeOne(title=u('Dict field'),
description=u(''), readonly=False, required=False,
min_length=1, max_length=2)
field.validate(None)
@@ -76,7 +85,10 @@
self.assertRaises(TooLong, field.validate, {1: 'a', 2: 'b', 3: 'c'})
def testValidateValueType(self):
- field = Dict(title=u('Dict field'),
+ from six import u
+ from zope.schema import Int
+ from zope.schema.interfaces import WrongContainedType
+ field = self._makeOne(title=u('Dict field'),
description=u(''), readonly=False, required=False,
value_type=Int())
field.validate(None)
@@ -88,7 +100,10 @@
self.assertRaises(WrongContainedType, field.validate, {'a': ()} )
def testValidateKeyTypes(self):
- field = Dict(title=u('Dict field'),
+ from six import u
+ from zope.schema import Int
+ from zope.schema.interfaces import WrongContainedType
+ field = self._makeOne(title=u('Dict field'),
description=u(''), readonly=False, required=False,
key_type=Int())
field.validate(None)
@@ -101,7 +116,9 @@
def test_bind_binds_key_and_value_types(self):
- field = self._Field_Factory(
+ from six import u
+ from zope.schema import Int
+ field = self._makeOne(
__name__ = 'x',
title=u('Not required field'), description=u(''),
readonly=False, required=False,
@@ -118,8 +135,8 @@
self.assertEqual(field2.key_type.context, c)
self.assertEqual(field2.value_type.context, c)
+
def test_suite():
- return makeSuite(DictTest)
-
-if __name__ == '__main__':
- main(defaultTest='test_suite')
+ return unittest.TestSuite((
+ unittest.makeSuite(DictTest),
+ ))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_docs.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_docs.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_docs.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,14 +13,14 @@
##############################################################################
"""Tests for the schema package's documentation files
"""
-import doctest
-import re
import unittest
-from zope.testing import renormalizing
-import zope.schema.tests
+def test_suite():
+ import doctest
+ import re
-def test_suite():
+ from zope.testing import renormalizing
+ import zope.schema.tests
checker = renormalizing.RENormalizing([
(re.compile(r"\[\(None, Invalid\('8<=10',\)\)\]"),
r"[(None, <zope.interface.exceptions.Invalid instance at 0x...>)]",)
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_dotted_name.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_dotted_name.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_dotted_name.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,27 +13,29 @@
##############################################################################
"""DottedName field tests
"""
-from unittest import main, makeSuite
+import unittest
-from six import b, u
-from zope.schema import DottedName
from zope.schema.tests.test_field import FieldTestBase
-from zope.schema.interfaces import InvalidDottedName, RequiredMissing
+
class DottedNameTest(FieldTestBase):
"""Test the DottedName Field."""
- _Field_Factory = DottedName
+ def _getTargetClass(self):
+ from zope.schema import DottedName
+ return DottedName
def testValidate(self):
- field = self._Field_Factory(required=False)
+ from zope.schema.interfaces import InvalidDottedName
+ field = self._makeOne(required=False)
field.validate(None)
field.validate('foo.bar')
field.validate('foo.bar0')
field.validate('foo0.bar')
- # We used to incorrectly allow ^: https://bugs.launchpad.net/zope.schema/+bug/191236
+ # We used to incorrectly allow ^:
+ # https://bugs.launchpad.net/zope.schema/+bug/191236
self.assertRaises(InvalidDottedName, field.validate, 'foo.bar^foobar')
self.assertRaises(InvalidDottedName, field.validate, 'foo^foobar.bar')
# dotted names cannot start with digits
@@ -41,17 +43,20 @@
self.assertRaises(InvalidDottedName, field.validate, '0foo.bar')
def testValidateRequired(self):
- field = self._Field_Factory(required=True)
+ from zope.schema.interfaces import RequiredMissing
+ field = self._makeOne(required=True)
field.validate('foo.bar')
self.assertRaises(RequiredMissing, field.validate, None)
def testFromUnicode(self):
- field = self._Field_Factory()
+ from six import u
+ field = self._makeOne()
self.assertEquals(field.fromUnicode(u('foo')), 'foo')
def test_suite():
- suite = makeSuite(DottedNameTest)
- return suite
+ return unittest.TestSuite((
+ unittest.makeSuite(DottedNameTest),
+ ))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_equality.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_equality.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_equality.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,22 +13,26 @@
##############################################################################
"""Field equality tests
"""
-from unittest import TestCase, TestSuite, makeSuite
+import unittest
-from six import u
-from zope.schema import Text, Int
-class FieldEqualityTests(TestCase):
+class FieldEqualityTests(unittest.TestCase):
- equality = [
- 'Text(title=u("Foo"), description=u("Bar"))',
- 'Int(title=u("Foo"), description=u("Bar"))',
+ def test_equality(self):
+
+ from six import u
+ from zope.schema import Int
+ from zope.schema import Text
+
+ equality = [
+ 'Text(title=u("Foo"), description=u("Bar"))',
+ 'Int(title=u("Foo"), description=u("Bar"))',
]
-
- def test_equality(self):
- for text in self.equality:
+ for text in equality:
self.assertEqual(eval(text), eval(text))
+
def test_suite():
- return TestSuite(
- [makeSuite(FieldEqualityTests)])
+ return unittest.TestSuite((
+ unittest.makeSuite(FieldEqualityTests),
+ ))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_field.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_field.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_field.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,25 +13,22 @@
##############################################################################
"""Generic field tests
"""
+import unittest
-import re
-from doctest import DocTestSuite
-from unittest import TestCase, TestSuite, makeSuite
-from six import u, b
-from zope.interface import Interface, provider
-from zope.schema import Field, Text, Int
-from zope.schema.interfaces import IContextAwareDefaultFactory
-from zope.schema.interfaces import ValidationError, RequiredMissing
-from zope.schema.interfaces import ConstraintNotSatisfied, WrongType
-from zope.testing import renormalizing
-import zope.schema.tests
+class FieldTestBase(unittest.TestCase):
-class FieldTestBase(TestCase):
+ def _getTargetClass(self):
+ raise NotImplementedError
+ def _makeOne(self, *args, **kw):
+ return self._getTargetClass()(*args, **kw)
+
def test_bind(self):
- field = self._Field_Factory(
+ from six import u
+ from zope.interface import Interface
+ field = self._makeOne(
__name__ = 'x',
title=u('Not required field'), description=u(''),
readonly=False, required=False)
@@ -46,13 +43,15 @@
field2 = field.bind(c)
self.assertEqual(field2.context, c)
- self.assertEqual(field.queryTaggedValue('a'), field2.queryTaggedValue('a'))
+ self.assertEqual(field.queryTaggedValue('a'),
+ field2.queryTaggedValue('a'))
for n in ('__class__', '__name__', '__doc__', 'title', 'description',
'readonly', 'required', 'interface'):
self.assertEqual(getattr(field2, n), getattr(field, n), n)
def testValidate(self):
- field = self._Field_Factory(
+ from six import u
+ field = self._makeOne(
title=u('Not required field'), description=u(''),
readonly=False, required=False)
field.validate(None)
@@ -62,7 +61,9 @@
field.validate('')
def testValidateRequired(self):
- field = self._Field_Factory(
+ from six import u
+ from zope.schema.interfaces import RequiredMissing
+ field = self._makeOne(
title=u('Required field'), description=u(''),
readonly=False, required=True)
field.validate('foo')
@@ -75,7 +76,9 @@
class CollectionFieldTestBase(FieldTestBase):
def test_bind_binds_value_type(self):
- field = self._Field_Factory(
+ from six import u
+ from zope.schema import Int
+ field = self._makeOne(
__name__ = 'x',
title=u('Not required field'), description=u(''),
readonly=False, required=False,
@@ -93,13 +96,13 @@
class FieldTest(FieldTestBase):
"""Test generic Field."""
- _Field_Factory = Field
+ def _getTargetClass(self):
+ from zope.schema import Field
+ return Field
- def testSillyDefault(self):
- self.assertRaises(ValidationError, Text, default=b(""))
-
def test__doc__(self):
- field = Text(title=u("test fiield"),
+ from six import u
+ field = self._makeOne(title=u("test fiield"),
description=(
u("To make sure that\n"
"doc strings are working correctly\n")
@@ -117,18 +120,21 @@
from zope.interface import Interface
class S1(Interface):
- a = Text()
- b = Text()
+ a = self._makeOne()
+ b = self._makeOne()
self.assertTrue(S1['a'].order < S1['b'].order)
class S2(Interface):
- b = Text()
- a = Text()
+ b = self._makeOne()
+ a = self._makeOne()
self.assertTrue(S2['a'].order > S2['b'].order)
def testConstraint(self):
+ from six import u
+ from zope.schema import Int
+ from zope.schema.interfaces import ConstraintNotSatisfied
def isodd(x):
return x % 2 == 1
@@ -139,6 +145,7 @@
self.assertRaises(ConstraintNotSatisfied, i.validate, 10)
def testSimpleDefaultFactory(self):
+ from zope.schema import Int
field = Int(defaultFactory=lambda: 42)
self.assertEqual(field.default, 42)
@@ -147,6 +154,9 @@
self.assertEqual(field.default, 42)
def testContextAwareDefaultFactory(self):
+ from zope.interface import provider
+ from zope.schema import Int
+ from zope.schema.interfaces import IContextAwareDefaultFactory
@provider(IContextAwareDefaultFactory)
def getAnswerToUniverse(context):
if context is None:
@@ -163,25 +173,33 @@
self.assertEqual(bound.default, 42)
def testBadValueDefaultFactory(self):
+ from zope.schema import Int
+ from zope.schema.interfaces import WrongType
field = Int(defaultFactory=lambda: '42')
self.assertRaises(WrongType, lambda: field.default)
-class FieldDefaultBehaviour(TestCase):
+class FieldDefaultBehaviour(unittest.TestCase):
def test_required_defaults_to_true(self):
+ from zope.schema import Field
+ from six import u
class MyField(Field):
pass
field = MyField(title=u('my'))
self.assertTrue(field.required)
def test_suite():
+ from doctest import DocTestSuite
+ import re
+ from zope.schema.tests import py3_checker
+ from zope.testing import renormalizing
checker = renormalizing.RENormalizing([
(re.compile(r" with base 10: '125.6'"),
r': 125.6')
])
- checker = checker + zope.schema.tests.py3_checker
- return TestSuite((
- makeSuite(FieldTest),
- makeSuite(FieldDefaultBehaviour),
- DocTestSuite("zope.schema._field", checker=zope.schema.tests.py3_checker),
+ checker = checker + py3_checker
+ return unittest.TestSuite((
+ unittest.makeSuite(FieldTest),
+ unittest.makeSuite(FieldDefaultBehaviour),
+ DocTestSuite("zope.schema._field", checker=py3_checker),
DocTestSuite("zope.schema._bootstrapfields",checker=checker),
))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_fieldproperty.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_fieldproperty.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_fieldproperty.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -14,37 +14,48 @@
"""Field Properties tests
"""
-from unittest import TestCase, TestSuite, main, makeSuite
+import unittest
-from six import u, b
-from zope.interface import Interface
-from zope.schema import Float, Text, Bytes
-from zope.schema.interfaces import ValidationError
-from zope.schema.fieldproperty import (FieldProperty,
- FieldPropertyStoredThroughField)
+class Test(unittest.TestCase):
-class I(Interface):
+ def _getSchema(self):
+ from six import b
+ from six import u
+ from zope.interface import Interface
+ from zope.schema import Bytes
+ from zope.schema import Float
+ from zope.schema import Text
- title = Text(description=u("Short summary"), default=u('say something'))
- weight = Float(min=0.0)
- code = Bytes(min_length=6, max_length=6, default=b('xxxxxx'))
- date = Float(title=u('Date'), readonly=True)
+ class Schema(Interface):
+ title = Text(description=u("Short summary"),
+ default=u('say something'))
+ weight = Float(min=0.0)
+ code = Bytes(min_length=6, max_length=6, default=b('xxxxxx'))
+ date = Float(title=u('Date'), readonly=True)
+ return Schema
-class C(object):
+ def _getTargetClass(self):
+ from zope.schema.fieldproperty import FieldProperty
+ schema = self._getSchema()
- title = FieldProperty(I['title'])
- weight = FieldProperty(I['weight'])
- code = FieldProperty(I['code'])
- date = FieldProperty(I['date'])
+ class Klass(object):
+ title = FieldProperty(schema['title'])
+ weight = FieldProperty(schema['weight'])
+ code = FieldProperty(schema['code'])
+ date = FieldProperty(schema['date'])
+ return Klass
-class Test(TestCase):
- klass = C
+ def _makeOne(self):
+ return self._getTargetClass()()
def test_basic(self):
- c = self.klass()
+ from six import b
+ from six import u
+ from zope.schema.interfaces import ValidationError
+ c = self._makeOne()
self.assertEqual(c.title, u('say something'))
self.assertEqual(c.weight, None)
self.assertEqual(c.code, b('xxxxxx'))
@@ -65,30 +76,31 @@
self.assertEqual(c.code, b('abcdef'))
def test_readonly(self):
- c = self.klass()
+ c = self._makeOne()
# The date should be only settable once
c.date = 0.0
# Setting the value a second time should fail.
self.assertRaises(ValueError, setattr, c, 'date', 1.0)
-class D(object):
+class TestStoredThroughField(Test):
- title = FieldPropertyStoredThroughField(I['title'])
- weight = FieldPropertyStoredThroughField(I['weight'])
- code = FieldPropertyStoredThroughField(I['code'])
- date = FieldPropertyStoredThroughField(I['date'])
+ def _getTargetClass(self):
+ schema = self._getSchema()
+ class Klass(object):
+ from zope.schema.fieldproperty import \
+ FieldPropertyStoredThroughField
+ title = FieldPropertyStoredThroughField(schema['title'])
+ weight = FieldPropertyStoredThroughField(schema['weight'])
+ code = FieldPropertyStoredThroughField(schema['code'])
+ date = FieldPropertyStoredThroughField(schema['date'])
-class TestStoredThroughField(Test):
- klass = D
+ return Klass
def test_suite():
- return TestSuite((
- makeSuite(Test),
- makeSuite(TestStoredThroughField),
+ return unittest.TestSuite((
+ unittest.makeSuite(Test),
+ unittest.makeSuite(TestStoredThroughField),
))
-
-if __name__ == '__main__':
- main(defaultTest='test_suite')
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_floatfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_floatfield.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_floatfield.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,21 +13,21 @@
##############################################################################
"""Float field tests
"""
-from unittest import main, makeSuite
+import unittest
-from six import u
-from zope.schema import Float
-from zope.schema.interfaces import RequiredMissing, InvalidValue
-from zope.schema.interfaces import TooSmall, TooBig
from zope.schema.tests.test_field import FieldTestBase
+
class FloatTest(FieldTestBase):
"""Test the Float Field."""
- _Field_Factory = Float
+ def _getTargetClass(self):
+ from zope.schema import Float
+ return Float
def testValidate(self):
- field = self._Field_Factory(title=u('Float field'), description=u(''),
+ from six import u
+ field = self._makeOne(title=u('Float field'), description=u(''),
readonly=False, required=False)
field.validate(None)
field.validate(10.0)
@@ -35,7 +35,9 @@
field.validate(1000.0003)
def testValidateRequired(self):
- field = self._Field_Factory(title=u('Float field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import RequiredMissing
+ field = self._makeOne(title=u('Float field'), description=u(''),
readonly=False, required=True)
field.validate(10.0)
field.validate(0.93)
@@ -44,7 +46,9 @@
self.assertRaises(RequiredMissing, field.validate, None)
def testValidateMin(self):
- field = self._Field_Factory(title=u('Float field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import TooSmall
+ field = self._makeOne(title=u('Float field'), description=u(''),
readonly=False, required=False, min=10.5)
field.validate(None)
field.validate(10.6)
@@ -54,7 +58,9 @@
self.assertRaises(TooSmall, field.validate, 10.4)
def testValidateMax(self):
- field = self._Field_Factory(title=u('Float field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import TooBig
+ field = self._makeOne(title=u('Float field'), description=u(''),
readonly=False, required=False, max=10.5)
field.validate(None)
field.validate(5.3)
@@ -64,7 +70,10 @@
self.assertRaises(TooBig, field.validate, 20.7)
def testValidateMinAndMax(self):
- field = self._Field_Factory(title=u('Float field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import TooBig
+ from zope.schema.interfaces import TooSmall
+ field = self._makeOne(title=u('Float field'), description=u(''),
readonly=False, required=False,
min=-0.6, max=10.1)
field.validate(None)
@@ -79,8 +88,6 @@
def test_suite():
- suite = makeSuite(FloatTest)
- return suite
-
-if __name__ == '__main__':
- main(defaultTest='test_suite')
+ return unittest.TestSuite((
+ unittest.makeSuite(FloatTest),
+ ))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_interfacefield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_interfacefield.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_interfacefield.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,36 +13,39 @@
##############################################################################
"""Interface field tests
"""
-from unittest import main, makeSuite
+import unittest
-from six import u
-from zope.schema import InterfaceField
-from zope.schema.interfaces import RequiredMissing, WrongType
from zope.schema.tests.test_field import FieldTestBase
-from zope.interface import Interface
-class DummyInterface(Interface):
- pass
-
class InterfaceTest(FieldTestBase):
"""Test the Bool Field."""
- _Field_Factory = InterfaceField
+ def _getTargetClass(self):
+ from zope.schema import InterfaceField
+ return InterfaceField
def testValidate(self):
- field = InterfaceField(title=u('Interface field'), description=u(''),
+ from six import u
+ from zope.interface import Interface
+ from zope.schema.interfaces import WrongType
+
+ class DummyInterface(Interface):
+ pass
+
+ field = self._makeOne(title=u('Interface field'), description=u(''),
readonly=False, required=False)
field.validate(DummyInterface)
self.assertRaises(WrongType, field.validate, object())
def testValidateRequired(self):
- field = InterfaceField(title=u('Interface field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import RequiredMissing
+ field = self._makeOne(title=u('Interface field'), description=u(''),
readonly=False, required=True)
self.assertRaises(RequiredMissing, field.validate, None)
def test_suite():
- return makeSuite(InterfaceTest)
-
-if __name__ == '__main__':
- main(defaultTest='test_suite')
+ return unittest.TestSuite((
+ unittest.makeSuite(InterfaceTest),
+ ))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_intfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_intfield.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_intfield.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,21 +13,21 @@
##############################################################################
"""Integer field tests
"""
-from unittest import main, makeSuite
+import unittest
-from six import u
-from zope.schema import Int
-from zope.schema.interfaces import RequiredMissing, InvalidValue
-from zope.schema.interfaces import TooSmall, TooBig
from zope.schema.tests.test_field import FieldTestBase
+
class IntTest(FieldTestBase):
"""Test the Int Field."""
- _Field_Factory = Int
+ def _getTargetClass(self):
+ from zope.schema import Int
+ return Int
def testValidate(self):
- field = self._Field_Factory(title=u('Int field'), description=u(''),
+ from six import u
+ field = self._makeOne(title=u('Int field'), description=u(''),
readonly=False, required=False)
field.validate(None)
field.validate(10)
@@ -35,7 +35,9 @@
field.validate(-1)
def testValidateRequired(self):
- field = self._Field_Factory(title=u('Int field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import RequiredMissing
+ field = self._makeOne(title=u('Int field'), description=u(''),
readonly=False, required=True)
field.validate(10)
field.validate(0)
@@ -44,7 +46,9 @@
self.assertRaises(RequiredMissing, field.validate, None)
def testValidateMin(self):
- field = self._Field_Factory(title=u('Int field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import TooSmall
+ field = self._makeOne(title=u('Int field'), description=u(''),
readonly=False, required=False, min=10)
field.validate(None)
field.validate(10)
@@ -54,7 +58,9 @@
self.assertRaises(TooSmall, field.validate, -10)
def testValidateMax(self):
- field = self._Field_Factory(title=u('Int field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import TooBig
+ field = self._makeOne(title=u('Int field'), description=u(''),
readonly=False, required=False, max=10)
field.validate(None)
field.validate(5)
@@ -65,7 +71,10 @@
self.assertRaises(TooBig, field.validate, 20)
def testValidateMinAndMax(self):
- field = self._Field_Factory(title=u('Int field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import TooBig
+ from zope.schema.interfaces import TooSmall
+ field = self._makeOne(title=u('Int field'), description=u(''),
readonly=False, required=False,
min=0, max=10)
field.validate(None)
@@ -80,8 +89,6 @@
def test_suite():
- suite = makeSuite(IntTest)
- return suite
-
-if __name__ == '__main__':
- main(defaultTest='test_suite')
+ return unittest.TestSuite((
+ unittest.makeSuite(IntTest),
+ ))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_iterablefield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_iterablefield.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_iterablefield.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,26 +13,31 @@
##############################################################################
"""Iterable field tests
"""
-from six import PY3, u
-if not PY3:
- from UserDict import UserDict, IterableUserDict
-else:
- #python3
- from collections import UserDict as IterableUserDict, UserDict
-from unittest import main, makeSuite
-from zope.schema import Iterable
-from zope.schema.interfaces import RequiredMissing
-from zope.schema.interfaces import NotAContainer, NotAnIterator
+import unittest
+
from zope.schema.tests.test_field import FieldTestBase
+
class IterableTest(FieldTestBase):
"""Test the Iterable Field."""
- _Field_Factory = Iterable
+ def _getTargetClass(self):
+ from zope.schema import Iterable
+ return Iterable
def testValidate(self):
- field = self._Field_Factory(title=u('test field'), description=u(''),
- readonly=False, required=False)
+ try:
+ from UserDict import UserDict
+ except ImportError: #pragma NO COVER python3
+ from collections import UserDict
+ IterableUserDict = UserDict
+ else: #pragma NO COVER python2
+ from UserDict import IterableUserDict
+ from six import u
+ from zope.schema.interfaces import NotAContainer
+ from zope.schema.interfaces import NotAnIterator
+ field = self._makeOne(title=u('test field'), description=u(''),
+ readonly=False, required=False)
field.validate(None)
field.validate('')
field.validate('abc')
@@ -45,16 +50,16 @@
self.assertRaises(NotAnIterator, field.validate, UserDict)
def testValidateRequired(self):
- field = self._Field_Factory(title=u('test field'), description=u(''),
- readonly=False, required=True)
-
+ from six import u
+ from zope.schema.interfaces import RequiredMissing
+ field = self._makeOne(title=u('test field'), description=u(''),
+ readonly=False, required=True)
field.validate('')
-
self.assertRaises(RequiredMissing, field.validate, None)
def test_suite():
- return makeSuite(IterableTest)
+ return unittest.TestSuite((
+ unittest.makeSuite(IterableTest),
+ ))
-if __name__ == '__main__':
- main(defaultTest='test_suite')
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_listfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_listfield.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_listfield.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,25 +13,21 @@
##############################################################################
"""List field tests
"""
-from unittest import main, makeSuite
+import unittest
-from six import u
-from zope.interface import implementer
-from zope.schema import Field, List, Int
-from zope.schema.interfaces import IField
-from zope.schema.interfaces import ICollection, ISequence, IList
-from zope.schema.interfaces import NotAContainer, RequiredMissing
-from zope.schema.interfaces import WrongContainedType, WrongType, NotUnique
-from zope.schema.interfaces import TooShort, TooLong
from zope.schema.tests.test_field import CollectionFieldTestBase
+
class ListTest(CollectionFieldTestBase):
"""Test the List Field."""
- _Field_Factory = List
+ def _getTargetClass(self):
+ from zope.schema import List
+ return List
def testValidate(self):
- field = List(title=u('List field'), description=u(''),
+ from six import u
+ field = self._makeOne(title=u('List field'), description=u(''),
readonly=False, required=False)
field.validate(None)
field.validate([])
@@ -39,7 +35,9 @@
field.validate([3,])
def testValidateRequired(self):
- field = List(title=u('List field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import RequiredMissing
+ field = self._makeOne(title=u('List field'), description=u(''),
readonly=False, required=True)
field.validate([])
field.validate([1, 2])
@@ -48,7 +46,9 @@
self.assertRaises(RequiredMissing, field.validate, None)
def testValidateMinValues(self):
- field = List(title=u('List field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import TooShort
+ field = self._makeOne(title=u('List field'), description=u(''),
readonly=False, required=False, min_length=2)
field.validate(None)
field.validate([1, 2])
@@ -58,7 +58,9 @@
self.assertRaises(TooShort, field.validate, [1,])
def testValidateMaxValues(self):
- field = List(title=u('List field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import TooLong
+ field = self._makeOne(title=u('List field'), description=u(''),
readonly=False, required=False, max_length=2)
field.validate(None)
field.validate([])
@@ -68,7 +70,10 @@
self.assertRaises(TooLong, field.validate, [1, 2, 3])
def testValidateMinValuesAndMaxValues(self):
- field = List(title=u('List field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import TooLong
+ from zope.schema.interfaces import TooShort
+ field = self._makeOne(title=u('List field'), description=u(''),
readonly=False, required=False,
min_length=1, max_length=2)
field.validate(None)
@@ -79,7 +84,10 @@
self.assertRaises(TooLong, field.validate, [1, 2, 3])
def testValidateValueTypes(self):
- field = List(title=u('List field'), description=u(''),
+ from six import u
+ from zope.schema import Int
+ from zope.schema.interfaces import WrongContainedType
+ field = self._makeOne(title=u('List field'), description=u(''),
readonly=False, required=False,
value_type=Int())
field.validate(None)
@@ -91,33 +99,41 @@
def testCorrectValueType(self):
# TODO: We should not allow for a None valeu type.
- List(value_type=None)
+ from zope.interface import implementer
+ from zope.schema import Field
+ from zope.schema.interfaces import IField
+ self._makeOne(value_type=None)
# do not allow arbitrary value types
- self.assertRaises(ValueError, List, value_type=object())
- self.assertRaises(ValueError, List, value_type=Field)
+ self.assertRaises(ValueError, self._makeOne, value_type=object())
+ self.assertRaises(ValueError, self._makeOne, value_type=Field)
# however, allow anything that implements IField
- List(value_type=Field())
+ self._makeOne(value_type=Field())
@implementer(IField)
class FakeField(object):
pass
- List(value_type=FakeField())
+ self._makeOne(value_type=FakeField())
def testUnique(self):
- field = self._Field_Factory(title=u('test field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import NotUnique
+ field = self._makeOne(title=u('test field'), description=u(''),
readonly=False, required=True, unique=True)
field.validate([1, 2])
self.assertRaises(NotUnique, field.validate, [1, 2, 1])
def testImplements(self):
- field = List()
+ from zope.schema.interfaces import ICollection
+ from zope.schema.interfaces import IList
+ from zope.schema.interfaces import ISequence
+ field = self._makeOne()
self.assertTrue(IList.providedBy(field))
self.assertTrue(ISequence.providedBy(field))
self.assertTrue(ICollection.providedBy(field))
+
def test_suite():
- return makeSuite(ListTest)
-
-if __name__ == '__main__':
- main(defaultTest='test_suite')
+ return unittest.TestSuite((
+ unittest.makeSuite(ListTest),
+ ))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_objectfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_objectfield.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_objectfield.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -1,6 +1,4 @@
-from zope.schema import List
-##############################################################################
-#
+############################################################################## #
# Copyright (c) 2001, 2002 Zope Foundation and Contributors.
# All Rights Reserved.
#
@@ -14,164 +12,51 @@
##############################################################################
"""This set of tests exercises Object fields.
"""
-from unittest import TestSuite, main, makeSuite
+import unittest
-from six import u
-import zope.event
-from zope.interface import Attribute, Interface, implementer
-from zope.schema import Object, TextLine
-from zope.schema.fieldproperty import FieldProperty
-from zope.schema.interfaces import ValidationError
-from zope.schema.interfaces import RequiredMissing, WrongContainedType
-from zope.schema.interfaces import WrongType, SchemaNotFullyImplemented
from zope.schema.tests.test_field import FieldTestBase
-from zope.schema.interfaces import IBeforeObjectAssignedEvent
from zope.testing.cleanup import CleanUp
-from zope.schema._messageid import _
+class ObjectTest(CleanUp, FieldTestBase):
+ """Test the Object Field."""
-class ITestSchema(Interface):
- """A test schema"""
+ def _getTargetClass(self):
+ from zope.schema import Object
+ return Object
- foo = TextLine(
- title=_("Foo"),
- description=_("Foo description"),
- default=u(""),
- required=True)
+ def _makeOne(self, *args, **kw):
+ from zope.interface import Interface
+ if 'schema' not in kw:
+ kw['schema'] = Interface
+ return super(ObjectTest, self)._makeOne(**kw)
- bar = TextLine(
- title=_("Bar"),
- description=_("Bar description"),
- default=u(""),
- required=False)
+ def _makeSchema(self):
+ from six import u
+ from zope.interface import Attribute
+ from zope.interface import Interface
+ from zope.schema import TextLine
+ from zope.schema._messageid import _
- attribute = Attribute("Test attribute, an attribute can't be validated.")
+ class ITestSchema(Interface):
+ """A test schema"""
+ foo = TextLine(
+ title=_("Foo"),
+ description=_("Foo description"),
+ default=u(""),
+ required=True)
+ bar = TextLine(
+ title=_("Bar"),
+ description=_("Bar description"),
+ default=u(""),
+ required=False)
+ attribute = Attribute(
+ "Test attribute, an attribute can't be validated.")
+ return ITestSchema
- at implementer(ITestSchema)
-class TestClass(object):
-
- _foo = u('')
- _bar = u('')
- _attribute = u('')
-
- def getfoo(self):
- return self._foo
-
- def setfoo(self, value):
- self._foo = value
-
- foo = property(getfoo, setfoo, None, u('foo'))
-
- def getbar(self):
- return self._bar
-
- def setbar(self, value):
- self._bar = value
-
- bar = property(getbar, setbar, None, u('foo'))
-
- def getattribute(self):
- return self._attribute
-
- def setattribute(self, value):
- self._attribute = value
-
- attribute = property(getattribute, setattribute, None, u('attribute'))
-
-
- at implementer(ITestSchema)
-class FieldPropertyTestClass(object):
-
-
- foo = FieldProperty(ITestSchema['foo'])
- bar = FieldProperty(ITestSchema['bar'])
- attribute = FieldProperty(ITestSchema['attribute'])
-
-
- at implementer(ITestSchema)
-class NotFullyImplementedTestClass(object):
-
- foo = FieldProperty(ITestSchema['foo'])
- # bar = FieldProperty(ITestSchema['bar']): bar is not implemented
- # attribute
-
-
-class ISchemaWithObjectFieldAsInterface(Interface):
-
- obj = Object(
- schema=Interface,
- title=_("Object"),
- description=_("object description"),
- required=False)
-
-
- at implementer(ISchemaWithObjectFieldAsInterface)
-class ClassWithObjectFieldAsInterface(object):
-
- _obj = None
-
- def getobj(self):
- return self._obj
-
- def setobj(self, value):
- self._obj = value
-
- obj = property(getobj, setobj, None, u('obj'))
-
-
-class IUnit(Interface):
- """A schema that participate to a cycle"""
-
- boss = Object(
- schema=Interface,
- title=_("Boss"),
- description=_("Boss description"),
- required=False,
- )
-
- members = List(
- value_type=Object(schema=Interface),
- title=_("Member List"),
- description=_("Member list description"),
- required=False,
- )
-
-
-class IPerson(Interface):
- """A schema that participate to a cycle"""
-
- unit = Object(
- schema=IUnit,
- title=_("Unit"),
- description=_("Unit description"),
- required=False,
- )
-
-IUnit['boss'].schema = IPerson
-IUnit['members'].value_type.schema = IPerson
-
-
- at implementer(IUnit)
-class Unit(object):
-
- def __init__(self, person, person_list):
- self.boss = person
- self.members = person_list
-
-
- at implementer(IPerson)
-class Person(object):
-
- def __init__(self, unit):
- self.unit = unit
-
-
-class ObjectTest(CleanUp, FieldTestBase):
- """Test the Object Field."""
-
def getErrors(self, f, *args, **kw):
+ from zope.schema.interfaces import WrongContainedType
try:
f(*args, **kw)
except WrongContainedType as e:
@@ -181,33 +66,78 @@
return []
self.fail('Expected WrongContainedType Error')
- def makeTestObject(self, **kw):
- kw['schema'] = kw.get('schema', Interface)
- return Object(**kw)
+ def makeTestData(self):
+ from six import u
+ from zope.interface import implementer
+ schema = self._makeSchema()
- _Field_Factory = makeTestObject
+ @implementer(schema)
+ class TestClass(object):
+ _foo = u('')
+ _bar = u('')
+ _attribute = u('')
- def makeTestData(self):
+ def getfoo(self):
+ return self._foo
+ def setfoo(self, value):
+ self._foo = value
+ foo = property(getfoo, setfoo, None, u('foo'))
+
+ def getbar(self):
+ return self._bar
+ def setbar(self, value):
+ self._bar = value
+ bar = property(getbar, setbar, None, u('foo'))
+
+ def getattribute(self):
+ return self._attribute
+ def setattribute(self, value):
+ self._attribute = value
+ attribute = property(getattribute, setattribute, None,
+ u('attribute'))
return TestClass()
def makeFieldPropertyTestClass(self):
+ from zope.interface import implementer
+ from zope.schema.fieldproperty import FieldProperty
+ schema = self._makeSchema()
+
+ @implementer(schema)
+ class FieldPropertyTestClass(object):
+ foo = FieldProperty(schema['foo'])
+ bar = FieldProperty(schema['bar'])
+ attribute = FieldProperty(schema['attribute'])
+
return FieldPropertyTestClass()
def makeNotFullyImplementedTestData(self):
+ from zope.interface import implementer
+ from zope.schema.fieldproperty import FieldProperty
+ schema = self._makeSchema()
+
+ @implementer(schema)
+ class NotFullyImplementedTestClass(object):
+ foo = FieldProperty(schema['foo'])
+ # bar = FieldProperty(schema['bar']): bar is not implemented
+ # attribute
+
return NotFullyImplementedTestClass()
def invalidSchemas(self):
return ['foo', 1, 0, {}, [], None]
def validSchemas(self):
- return [Interface, ITestSchema]
+ from zope.interface import Interface
+ return [Interface, self._makeSchema()]
def test_init(self):
+ from zope.schema.interfaces import ValidationError
+ from zope.schema.interfaces import WrongType
for schema in self.validSchemas():
- Object(schema=schema)
+ self._makeOne(schema=schema)
for schema in self.invalidSchemas():
- self.assertRaises(ValidationError, Object, schema=schema)
- self.assertRaises(WrongType, Object, schema=schema)
+ self.assertRaises(ValidationError, self._makeOne, schema=schema)
+ self.assertRaises(WrongType, self._makeOne, schema=schema)
def testValidate(self):
# this test of the base class is not applicable
@@ -218,16 +148,22 @@
pass
def test_validate_required(self):
- field = self._Field_Factory(
+ from six import u
+ from zope.schema.interfaces import RequiredMissing
+ field = self._makeOne(
title=u('Required field'), description=u(''),
readonly=False, required=True)
self.assertRaises(RequiredMissing, field.validate, None)
def test_validate_TestData(self):
- field = self.makeTestObject(schema=ITestSchema, required=False)
+ from zope.schema.interfaces import ValidationError
+ from zope.schema.interfaces import RequiredMissing
+ from zope.schema.interfaces import WrongContainedType
+ schema = self._makeSchema()
+ field = self._makeOne(schema=schema, required=False)
data = self.makeTestData()
field.validate(data)
- field = self.makeTestObject(schema=ITestSchema)
+ field = self._makeOne(schema=schema)
field.validate(data)
data.foo = None
self.assertRaises(ValidationError, field.validate, data)
@@ -236,16 +172,23 @@
self.assertEqual(errors[0], RequiredMissing('foo'))
def test_validate_FieldPropertyTestData(self):
- field = self.makeTestObject(schema=ITestSchema, required=False)
+ from zope.schema.interfaces import ValidationError
+ from zope.schema.interfaces import RequiredMissing
+ schema = self._makeSchema()
+ field = self._makeOne(schema=schema, required=False)
data = self.makeFieldPropertyTestClass()
field.validate(data)
- field = self.makeTestObject(schema=ITestSchema)
+ field = self._makeOne(schema=schema)
field.validate(data)
self.assertRaises(ValidationError, setattr, data, 'foo', None)
self.assertRaises(RequiredMissing, setattr, data, 'foo', None)
def test_validate_NotFullyImplementedTestData(self):
- field = self.makeTestObject(schema=ITestSchema, required=False)
+ from zope.schema.interfaces import SchemaNotFullyImplemented
+ from zope.schema.interfaces import ValidationError
+ from zope.schema.interfaces import WrongContainedType
+ schema = self._makeSchema()
+ field = self._makeOne(schema=schema, required=False)
data = self.makeNotFullyImplementedTestData()
self.assertRaises(ValidationError, field.validate, data)
self.assertRaises(WrongContainedType, field.validate, data)
@@ -253,16 +196,45 @@
self.assertTrue(isinstance(errors[0], SchemaNotFullyImplemented))
def test_validate_with_non_object_value(self):
- field = self.makeTestObject(
- schema=ISchemaWithObjectFieldAsInterface,
- required=False)
+ from six import u
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.schema import Object
+ from zope.schema._messageid import _
+
+ class ISchemaWithObjectFieldAsInterface(Interface):
+ obj = Object(
+ schema=Interface,
+ title=_("Object"),
+ description=_("object description"),
+ required=False)
+
+ @implementer(ISchemaWithObjectFieldAsInterface)
+ class ClassWithObjectFieldAsInterface(object):
+
+ _obj = None
+
+ def getobj(self):
+ return self._obj
+
+ def setobj(self, value):
+ self._obj = value
+
+ obj = property(getobj, setobj, None, u('obj'))
+
+ field = self._makeOne(
+ schema=ISchemaWithObjectFieldAsInterface,
+ required=False)
instance = ClassWithObjectFieldAsInterface()
instance.obj = (1, 1)
field.validate(instance)
def test_beforeAssignEvent(self):
- field = self.makeTestObject(schema=ITestSchema, required=False,
- __name__='object_field')
+ import zope.event
+ from zope.schema.interfaces import IBeforeObjectAssignedEvent
+ schema = self._makeSchema()
+ field = self._makeOne(schema=schema, required=False,
+ __name__='object_field')
data = self.makeTestData()
events = []
@@ -282,9 +254,56 @@
self.assertEqual(context, event.context)
# cycles
+ def _makeCycles(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.schema import Object
+ from zope.schema import List
+ from zope.schema._messageid import _
+ class IUnit(Interface):
+ """A schema that participate to a cycle"""
+ boss = Object(
+ schema=Interface,
+ title=_("Boss"),
+ description=_("Boss description"),
+ required=False,
+ )
+ members = List(
+ value_type=Object(schema=Interface),
+ title=_("Member List"),
+ description=_("Member list description"),
+ required=False,
+ )
+
+ class IPerson(Interface):
+ """A schema that participate to a cycle"""
+ unit = Object(
+ schema=IUnit,
+ title=_("Unit"),
+ description=_("Unit description"),
+ required=False,
+ )
+
+ IUnit['boss'].schema = IPerson
+ IUnit['members'].value_type.schema = IPerson
+
+ @implementer(IUnit)
+ class Unit(object):
+ def __init__(self, person, person_list):
+ self.boss = person
+ self.members = person_list
+
+ @implementer(IPerson)
+ class Person(object):
+ def __init__(self, unit):
+ self.unit = unit
+
+ return IUnit, Person, Unit
+
def test_with_cycles_validate(self):
- field = self.makeTestObject(schema=IUnit)
+ IUnit, Person, Unit = self._makeCycles()
+ field = self._makeOne(schema=IUnit)
person1 = Person(None)
person2 = Person(None)
unit = Unit(person1, [person1, person2])
@@ -293,7 +312,9 @@
field.validate(unit)
def test_with_cycles_object_not_valid(self):
- field = self.makeTestObject(schema=IUnit)
+ from zope.schema.interfaces import WrongContainedType
+ IUnit, Person, Unit = self._makeCycles()
+ field = self._makeOne(schema=IUnit)
data = self.makeTestData()
person1 = Person(None)
person2 = Person(None)
@@ -304,7 +325,9 @@
self.assertRaises(WrongContainedType, field.validate, unit)
def test_with_cycles_collection_not_valid(self):
- field = self.makeTestObject(schema=IUnit)
+ from zope.schema.interfaces import WrongContainedType
+ IUnit, Person, Unit = self._makeCycles()
+ field = self._makeOne(schema=IUnit)
data = self.makeTestData()
person1 = Person(None)
person2 = Person(None)
@@ -316,9 +339,6 @@
def test_suite():
- suite = TestSuite()
- suite.addTest(makeSuite(ObjectTest))
- return suite
-
-if __name__ == '__main__':
- main(defaultTest='test_suite')
+ return unittest.TestSuite((
+ unittest.makeSuite(ObjectTest),
+ ))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_schema.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_schema.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_schema.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,51 +13,59 @@
##############################################################################
"""Schema field tests
"""
-from unittest import TestCase, main, makeSuite
-from six import u, b
-from zope.interface import Interface
-from zope.schema import Bytes
-from zope.schema import getFields, getFieldsInOrder
-from zope.schema import getFieldNames, getFieldNamesInOrder
+import unittest
-class ISchemaTest(Interface):
- title = Bytes(
- title=u("Title"),
- description=u("Title"),
- default=b(""),
- required=True)
- description = Bytes(
- title=u("Description"),
- description=u("Description"),
- default=b(""),
- required=True)
+class SchemaTest(unittest.TestCase):
- spam = Bytes(
- title=u("Spam"),
- description=u("Spam"),
- default=b(""),
- required=True)
+ def _makeSchema(self):
+ from six import b
+ from six import u
+ from zope.interface import Interface
+ from zope.schema import Bytes
-class ISchemaTestSubclass(ISchemaTest):
- foo = Bytes(
- title=u('Foo'),
- description=u('Fooness'),
- default=b(""),
- required=False)
+ class ISchemaTest(Interface):
+ title = Bytes(
+ title=u("Title"),
+ description=u("Title"),
+ default=b(""),
+ required=True)
+ description = Bytes(
+ title=u("Description"),
+ description=u("Description"),
+ default=b(""),
+ required=True)
+ spam = Bytes(
+ title=u("Spam"),
+ description=u("Spam"),
+ default=b(""),
+ required=True)
+ return ISchemaTest
+ def _makeDerivedSchema(self):
+ from six import b
+ from six import u
+ from zope.schema import Bytes
-class SchemaTest(TestCase):
+ class ISchemaTestSubclass(self._makeSchema()):
+ foo = Bytes(
+ title=u('Foo'),
+ description=u('Fooness'),
+ default=b(""),
+ required=False)
+ return ISchemaTestSubclass
def test_getFieldNames(self):
- names = getFieldNames(ISchemaTest)
+ from zope.schema import getFieldNames
+ names = getFieldNames(self._makeSchema())
self.assertEqual(len(names),3)
self.assertTrue('title' in names)
self.assertTrue('description' in names)
self.assertTrue('spam' in names)
def test_getFieldNamesAll(self):
- names = getFieldNames(ISchemaTestSubclass)
+ from zope.schema import getFieldNames
+ names = getFieldNames(self._makeDerivedSchema())
self.assertEqual(len(names),4)
self.assertTrue('title' in names)
self.assertTrue('description' in names)
@@ -65,7 +73,8 @@
self.assertTrue('foo' in names)
def test_getFields(self):
- fields = getFields(ISchemaTest)
+ from zope.schema import getFields
+ fields = getFields(self._makeSchema())
self.assertTrue('title' in fields)
self.assertTrue('description' in fields)
@@ -76,7 +85,8 @@
self.assertEqual(key, value.getName())
def test_getFieldsAll(self):
- fields = getFields(ISchemaTestSubclass)
+ from zope.schema import getFields
+ fields = getFields(self._makeDerivedSchema())
self.assertTrue('title' in fields)
self.assertTrue('description' in fields)
@@ -88,29 +98,33 @@
self.assertEqual(key, value.getName())
def test_getFieldsInOrder(self):
- fields = getFieldsInOrder(ISchemaTest)
+ from zope.schema import getFieldsInOrder
+ fields = getFieldsInOrder(self._makeSchema())
field_names = [name for name, field in fields]
self.assertEqual(field_names, ['title', 'description', 'spam'])
for key, value in fields:
self.assertEqual(key, value.getName())
def test_getFieldsInOrderAll(self):
- fields = getFieldsInOrder(ISchemaTestSubclass)
+ from zope.schema import getFieldsInOrder
+ fields = getFieldsInOrder(self._makeDerivedSchema())
field_names = [name for name, field in fields]
self.assertEqual(field_names, ['title', 'description', 'spam', 'foo'])
for key, value in fields:
self.assertEqual(key, value.getName())
def test_getFieldsNamesInOrder(self):
- names = getFieldNamesInOrder(ISchemaTest)
+ from zope.schema import getFieldNamesInOrder
+ names = getFieldNamesInOrder(self._makeSchema())
self.assertEqual(names, ['title', 'description', 'spam'])
def test_getFieldsNamesInOrderAll(self):
- names = getFieldNamesInOrder(ISchemaTestSubclass)
+ from zope.schema import getFieldNamesInOrder
+ names = getFieldNamesInOrder(self._makeDerivedSchema())
self.assertEqual(names, ['title', 'description', 'spam', 'foo'])
+
def test_suite():
- return makeSuite(SchemaTest)
-
-if __name__ == '__main__':
- main(defaultTest='test_suite')
+ return unittest.TestSuite((
+ unittest.makeSuite(SchemaTest),
+ ))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_setfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_setfield.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_setfield.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,27 +13,22 @@
##############################################################################
"""Set field tests.
"""
-from unittest import TestSuite, main, makeSuite
+import unittest
-from six import u
-from zope.interface import implementer, providedBy
-from zope.schema import Field, Set, Int, FrozenSet
-from zope.schema.interfaces import IField
-from zope.schema.interfaces import (
- ICollection, IUnorderedCollection, ISet, IFrozenSet, IAbstractSet)
-from zope.schema.interfaces import NotAContainer, RequiredMissing
-from zope.schema.interfaces import WrongContainedType, WrongType, NotUnique
-from zope.schema.interfaces import TooShort, TooLong
from zope.schema.tests.test_field import CollectionFieldTestBase
class SetTest(CollectionFieldTestBase):
"""Test the Tuple Field."""
- _Field_Factory = Set
+ def _getTargetClass(self):
+ from zope.schema import Set
+ return Set
def testValidate(self):
- field = Set(title=u('Set field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import WrongType
+ field = self._makeOne(title=u('Set field'), description=u(''),
readonly=False, required=False)
field.validate(None)
field.validate(set())
@@ -51,7 +46,9 @@
self.assertRaises(WrongType, field.validate, frozenset((1, 2, 3)))
def testValidateRequired(self):
- field = Set(title=u('Set field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import RequiredMissing
+ field = self._makeOne(title=u('Set field'), description=u(''),
readonly=False, required=True)
field.validate(set())
field.validate(set((1, 2)))
@@ -63,24 +60,27 @@
self.assertRaises(RequiredMissing, field.validate, None)
def testValidateRequiredAltMissingValue(self):
+ from zope.schema.interfaces import RequiredMissing
missing = object()
- field = Set(required=True, missing_value=missing)
+ field = self._makeOne(required=True, missing_value=missing)
field.validate(set())
field.validate(set())
self.assertRaises(RequiredMissing, field.validate, missing)
def testValidateDefault(self):
- field = Set(required=True)
+ field = self._makeOne(required=True)
field.default = None
def testValidateDefaultAltMissingValue(self):
missing = object()
- field = Set(required=True, missing_value=missing)
+ field = self._makeOne(required=True, missing_value=missing)
field.default = missing
def testValidateMinValues(self):
- field = Set(title=u('Set field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import TooShort
+ field = self._makeOne(title=u('Set field'), description=u(''),
readonly=False, required=False, min_length=2)
field.validate(None)
field.validate(set((1, 2)))
@@ -94,7 +94,9 @@
self.assertRaises(TooShort, field.validate, set((3,)))
def testValidateMaxValues(self):
- field = Set(title=u('Set field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import TooLong
+ field = self._makeOne(title=u('Set field'), description=u(''),
readonly=False, required=False, max_length=2)
field.validate(None)
field.validate(set())
@@ -108,7 +110,10 @@
self.assertRaises(TooLong, field.validate, set((1, 2, 3)))
def testValidateMinValuesAndMaxValues(self):
- field = Set(title=u('Set field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import TooLong
+ from zope.schema.interfaces import TooShort
+ field = self._makeOne(title=u('Set field'), description=u(''),
readonly=False, required=False,
min_length=1, max_length=2)
field.validate(None)
@@ -123,7 +128,10 @@
self.assertRaises(TooLong, field.validate, set((1, 2, 3)))
def testValidateValueTypes(self):
- field = Set(title=u('Set field'), description=u(''),
+ from six import u
+ from zope.schema import Int
+ from zope.schema.interfaces import WrongContainedType
+ field = self._makeOne(title=u('Set field'), description=u(''),
readonly=False, required=False,
value_type=Int())
field.validate(None)
@@ -141,39 +149,51 @@
field.validate, set((3.14159,)))
def testCorrectValueType(self):
+ from zope.interface import implementer
+ from zope.schema import Field
+ from zope.schema.interfaces import IField
# TODO: We should not allow for a None value type.
- Set(value_type=None)
+ self._makeOne(value_type=None)
# do not allow arbitrary value types
- self.assertRaises(ValueError, Set, value_type=object())
- self.assertRaises(ValueError, Set, value_type=Field)
+ self.assertRaises(ValueError, self._makeOne, value_type=object())
+ self.assertRaises(ValueError, self._makeOne, value_type=Field)
# however, allow anything that implements IField
- Set(value_type=Field())
+ self._makeOne(value_type=Field())
@implementer(IField)
class FakeField(object):
pass
- Set(value_type=FakeField())
+ self._makeOne(value_type=FakeField())
def testNoUniqueArgument(self):
- self.assertRaises(TypeError, Set, unique=False)
- self.assertRaises(TypeError, Set, unique=True)
- self.assertTrue(Set().unique)
+ self.assertRaises(TypeError, self._makeOne, unique=False)
+ self.assertRaises(TypeError, self._makeOne, unique=True)
+ self.assertTrue(self._makeOne().unique)
def testImplements(self):
- field = Set()
+ from zope.schema.interfaces import IAbstractSet
+ from zope.schema.interfaces import ICollection
+ from zope.schema.interfaces import ISet
+ from zope.schema.interfaces import IUnorderedCollection
+ field = self._makeOne()
self.assertTrue(ISet.providedBy(field))
self.assertTrue(IUnorderedCollection.providedBy(field))
self.assertTrue(IAbstractSet.providedBy(field))
self.assertTrue(ICollection.providedBy(field))
+
class FrozenSetTest(CollectionFieldTestBase):
"""Test the Tuple Field."""
- _Field_Factory = FrozenSet
+ def _getTargetClass(self):
+ from zope.schema import FrozenSet
+ return FrozenSet
def testValidate(self):
- field = FrozenSet(title=u('Set field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import WrongType
+ field = self._makeOne(title=u('Set field'), description=u(''),
readonly=False, required=False)
field.validate(None)
field.validate(frozenset())
@@ -189,7 +209,9 @@
self.assertRaises(WrongType, field.validate, set((1, 2, 3)))
def testValidateRequired(self):
- field = FrozenSet(title=u('Set field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import RequiredMissing
+ field = self._makeOne(title=u('Set field'), description=u(''),
readonly=False, required=True)
field.validate(frozenset())
field.validate(frozenset((1, 2)))
@@ -198,23 +220,26 @@
self.assertRaises(RequiredMissing, field.validate, None)
def testValidateRequiredAltMissingValue(self):
+ from zope.schema.interfaces import RequiredMissing
missing = object()
- field = FrozenSet(required=True, missing_value=missing)
+ field = self._makeOne(required=True, missing_value=missing)
field.validate(frozenset())
self.assertRaises(RequiredMissing, field.validate, missing)
def testValidateDefault(self):
- field = FrozenSet(required=True)
+ field = self._makeOne(required=True)
field.default = None
def testValidateDefaultAltMissingValue(self):
missing = object()
- field = FrozenSet(required=True, missing_value=missing)
+ field = self._makeOne(required=True, missing_value=missing)
field.default = missing
def testValidateMinValues(self):
- field = FrozenSet(title=u('FrozenSet field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import TooShort
+ field = self._makeOne(title=u('FrozenSet field'), description=u(''),
readonly=False, required=False, min_length=2)
field.validate(None)
field.validate(frozenset((1, 2)))
@@ -224,7 +249,9 @@
self.assertRaises(TooShort, field.validate, frozenset((3,)))
def testValidateMaxValues(self):
- field = FrozenSet(title=u('FrozenSet field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import TooLong
+ field = self._makeOne(title=u('FrozenSet field'), description=u(''),
readonly=False, required=False, max_length=2)
field.validate(None)
field.validate(frozenset())
@@ -234,7 +261,10 @@
self.assertRaises(TooLong, field.validate, frozenset((1, 2, 3)))
def testValidateMinValuesAndMaxValues(self):
- field = FrozenSet(title=u('FrozenSet field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import TooLong
+ from zope.schema.interfaces import TooShort
+ field = self._makeOne(title=u('FrozenSet field'), description=u(''),
readonly=False, required=False,
min_length=1, max_length=2)
field.validate(None)
@@ -245,7 +275,10 @@
self.assertRaises(TooLong, field.validate, frozenset((1, 2, 3)))
def testValidateValueTypes(self):
- field = FrozenSet(title=u('FrozenSet field'), description=u(''),
+ from six import u
+ from zope.schema import Int
+ from zope.schema.interfaces import WrongContainedType
+ field = self._makeOne(title=u('FrozenSet field'), description=u(''),
readonly=False, required=False,
value_type=Int())
field.validate(None)
@@ -257,37 +290,42 @@
field.validate, frozenset((3.14159,)))
def testCorrectValueType(self):
+ from zope.interface import implementer
+ from zope.schema import Field
+ from zope.schema.interfaces import IField
# TODO: We should not allow for a None value type.
- FrozenSet(value_type=None)
+ self._makeOne(value_type=None)
# do not allow arbitrary value types
- self.assertRaises(ValueError, FrozenSet, value_type=object())
- self.assertRaises(ValueError, FrozenSet, value_type=Field)
+ self.assertRaises(ValueError, self._makeOne, value_type=object())
+ self.assertRaises(ValueError, self._makeOne, value_type=Field)
# however, allow anything that implements IField
- FrozenSet(value_type=Field())
+ self._makeOne(value_type=Field())
@implementer(IField)
class FakeField(object):
pass
- FrozenSet(value_type=FakeField())
+ self._makeOne(value_type=FakeField())
def testNoUniqueArgument(self):
- self.assertRaises(TypeError, FrozenSet, unique=False)
- self.assertRaises(TypeError, FrozenSet, unique=True)
- self.assertTrue(FrozenSet().unique)
+ self.assertRaises(TypeError, self._makeOne, unique=False)
+ self.assertRaises(TypeError, self._makeOne, unique=True)
+ self.assertTrue(self._makeOne().unique)
def testImplements(self):
- field = FrozenSet()
+ from zope.schema.interfaces import IAbstractSet
+ from zope.schema.interfaces import ICollection
+ from zope.schema.interfaces import IFrozenSet
+ from zope.schema.interfaces import IUnorderedCollection
+ field = self._makeOne()
self.assertTrue(IFrozenSet.providedBy(field))
self.assertTrue(IAbstractSet.providedBy(field))
self.assertTrue(IUnorderedCollection.providedBy(field))
self.assertTrue(ICollection.providedBy(field))
+
def test_suite():
- suite = TestSuite()
- suite.addTest(makeSuite(SetTest))
- suite.addTest(makeSuite(FrozenSetTest))
- return suite
-
-if __name__ == '__main__':
- main(defaultTest='test_suite')
+ return unittest.TestSuite((
+ unittest.makeSuite(SetTest),
+ unittest.makeSuite(FrozenSetTest),
+ ))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_states.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_states.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_states.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -15,58 +15,65 @@
"""
import unittest
-from six import u
-from zope.interface import Interface
-from zope.interface.verify import verifyObject
-from zope.schema import vocabulary
-from zope.schema import Choice
-from zope.schema.interfaces import IVocabulary
-from zope.schema.tests import states
+class StateSelectionTest(unittest.TestCase):
-
-class IBirthInfo(Interface):
- state1 = Choice(
- title=u('State of Birth'),
- description=u('The state in which you were born.'),
- vocabulary="states",
- default="AL",
- )
- state2 = Choice(
- title=u('State of Birth'),
- description=u('The state in which you were born.'),
- vocabulary="states",
- default="AL",
- )
- state3 = Choice(
- title=u('Favorite State'),
- description=u('The state you like the most.'),
- vocabulary=states.StateVocabulary(),
- )
- state4 = Choice(
- title=u("Name"),
- description=u("The name of your new state"),
- vocabulary="states",
- )
-
-
-class StateSelectionTest(unittest.TestCase):
def setUp(self):
- vocabulary._clear()
- vr = vocabulary.getVocabularyRegistry()
- vr.register("states", states.StateVocabulary)
+ from zope.schema.vocabulary import _clear
+ from zope.schema.vocabulary import getVocabularyRegistry
+ from zope.schema.tests.states import StateVocabulary
+ _clear()
+ vr = getVocabularyRegistry()
+ vr.register("states", StateVocabulary)
def tearDown(self):
- vocabulary._clear()
+ from zope.schema.vocabulary import _clear
+ _clear()
+ def _makeSchema(self):
+ from six import u
+ from zope.interface import Interface
+ from zope.schema import Choice
+ from zope.schema.tests.states import StateVocabulary
+ class IBirthInfo(Interface):
+ state1 = Choice(
+ title=u('State of Birth'),
+ description=u('The state in which you were born.'),
+ vocabulary="states",
+ default="AL",
+ )
+ state2 = Choice(
+ title=u('State of Birth'),
+ description=u('The state in which you were born.'),
+ vocabulary="states",
+ default="AL",
+ )
+ state3 = Choice(
+ title=u('Favorite State'),
+ description=u('The state you like the most.'),
+ vocabulary=StateVocabulary(),
+ )
+ state4 = Choice(
+ title=u("Name"),
+ description=u("The name of your new state"),
+ vocabulary="states",
+ )
+ return IBirthInfo
+
def test_default_presentation(self):
- field = IBirthInfo.getDescriptionFor("state1")
+ from zope.interface.verify import verifyObject
+ from zope.schema.interfaces import IVocabulary
+ schema = self._makeSchema()
+ field = schema.getDescriptionFor("state1")
bound = field.bind(object())
self.assertTrue(verifyObject(IVocabulary, bound.vocabulary))
self.assertEqual(bound.vocabulary.getTerm("VA").title, "Virginia")
def test_contains(self):
- vocab = states.StateVocabulary()
+ from zope.interface.verify import verifyObject
+ from zope.schema.interfaces import IVocabulary
+ from zope.schema.tests.states import StateVocabulary
+ vocab = StateVocabulary()
self.assertTrue(verifyObject(IVocabulary, vocab))
count = 0
L = list(vocab)
@@ -82,7 +89,10 @@
self.assertEqual(L, L2)
def test_prebound_vocabulary(self):
- field = IBirthInfo.getDescriptionFor("state3")
+ from zope.interface.verify import verifyObject
+ from zope.schema.interfaces import IVocabulary
+ schema = self._makeSchema()
+ field = schema.getDescriptionFor("state3")
bound = field.bind(None)
self.assertTrue(bound.vocabularyName is None)
self.assertTrue(verifyObject(IVocabulary, bound.vocabulary))
@@ -90,7 +100,6 @@
def test_suite():
- return unittest.makeSuite(StateSelectionTest)
-
-if __name__ == "__main__":
- unittest.main(defaultTest="test_suite")
+ return unittest.TestSuite((
+ unittest.makeSuite(StateSelectionTest),
+ ))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_strfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_strfield.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_strfield.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,30 +13,30 @@
##############################################################################
"""String field tests
"""
-from unittest import TestSuite, main, makeSuite
-from six import b, u
-from zope.schema import Bytes, BytesLine, Text, TextLine, Password
-from zope.schema.interfaces import ValidationError, WrongType
-from zope.schema.interfaces import RequiredMissing, InvalidValue
-from zope.schema.interfaces import TooShort, TooLong, ConstraintNotSatisfied
+import unittest
+
from zope.schema.tests.test_field import FieldTestBase
+
class StrTest(FieldTestBase):
"""Test the Str Field."""
def testValidate(self):
- field = self._Field_Factory(title=u('Str field'), description=u(''),
+ from six import u
+ field = self._makeOne(title=u('Str field'), description=u(''),
readonly=False, required=False)
field.validate(None)
field.validate(self._convert('foo'))
field.validate(self._convert(''))
def testValidateRequired(self):
-
+ from six import u
+ from zope.schema.interfaces import RequiredMissing
+ from zope.schema.interfaces import TooShort
# Note that if we want to require non-empty strings,
# we need to set the min-length to 1.
- field = self._Field_Factory(
+ field = self._makeOne(
title=u('Str field'), description=u(''),
readonly=False, required=True, min_length=1)
field.validate(self._convert('foo'))
@@ -45,7 +45,9 @@
self.assertRaises(TooShort, field.validate, self._convert(''))
def testValidateMinLength(self):
- field = self._Field_Factory(
+ from six import u
+ from zope.schema.interfaces import TooShort
+ field = self._makeOne(
title=u('Str field'), description=u(''),
readonly=False, required=False, min_length=3)
field.validate(None)
@@ -57,7 +59,9 @@
self.assertRaises(TooShort, field.validate, self._convert('1'))
def testValidateMaxLength(self):
- field = self._Field_Factory(
+ from six import u
+ from zope.schema.interfaces import TooLong
+ field = self._makeOne(
title=u('Str field'), description=u(''),
readonly=False, required=False, max_length=5)
field.validate(None)
@@ -69,7 +73,10 @@
self.assertRaises(TooLong, field.validate, self._convert('999999999'))
def testValidateMinLengthAndMaxLength(self):
- field = self._Field_Factory(
+ from six import u
+ from zope.schema.interfaces import TooLong
+ from zope.schema.interfaces import TooShort
+ field = self._makeOne(
title=u('Str field'), description=u(''),
readonly=False, required=False,
min_length=3, max_length=5)
@@ -88,48 +95,75 @@
class MultiLine(object):
def test_newlines(self):
- field = self._Field_Factory(title=u('Str field'))
+ from six import u
+ field = self._makeOne(title=u('Str field'))
field.validate(self._convert('hello\nworld'))
class BytesTest(StrTest, MultiLine):
- _Field_Factory = Bytes
+ def _getTargetClass(self):
+ from zope.schema import Bytes
+ return Bytes
+
def _convert(self, v):
+ from six import b
return b(v)
def testBadStringType(self):
- field = self._Field_Factory()
+ from six import u
+ from zope.schema.interfaces import ValidationError
+ field = self._makeOne()
self.assertRaises(ValidationError, field.validate, u('hello'))
class TextTest(StrTest, MultiLine):
- _Field_Factory = Text
+
+ def _getTargetClass(self):
+ from zope.schema import Text
+ return Text
+
def _convert(self, v):
+ from six import u
return u(v)
def testBadStringType(self):
- field = self._Field_Factory()
+ from six import b
+ from zope.schema.interfaces import ValidationError
+ field = self._makeOne()
self.assertRaises(ValidationError, field.validate, b('hello'))
+ def testSillyDefault(self):
+ from six import b
+ from zope.schema.interfaces import ValidationError
+ self.assertRaises(ValidationError, self._makeOne, default=b(""))
+
class SingleLine(object):
def test_newlines(self):
- field = self._Field_Factory(title=u('Str field'))
+ from six import u
+ from zope.schema.interfaces import ConstraintNotSatisfied
+ field = self._makeOne(title=u('Str field'))
self.assertRaises(ConstraintNotSatisfied,
field.validate,
self._convert('hello\nworld'))
class PasswordTest(SingleLine, TextTest):
- _Field_Factory = Password
+ def _getTargetClass(self):
+ from zope.schema import Password
+ return Password
+
def test_existingValue(self):
+ from six import u
+ from zope.schema.interfaces import WrongType
class Dummy(object):
password = None
dummy = Dummy()
- field = self._Field_Factory(title=u('Str field'), description=u(''),
- readonly=False, required=True, __name__='password')
+ field = self._makeOne(title=u('Str field'), description=u(''),
+ readonly=False, required=True,
+ __name__='password')
field = field.bind(dummy)
# Using UNCHANGED_PASSWORD is not allowed if no password was set yet
@@ -147,21 +181,26 @@
self.assertEqual(u('test'), dummy.password)
-class LineTest(SingleLine, BytesTest):
- _Field_Factory = BytesLine
+class BytesLineTest(SingleLine, BytesTest):
+ def _getTargetClass(self):
+ from zope.schema import BytesLine
+ return BytesLine
+
+
class TextLineTest(SingleLine, TextTest):
- _Field_Factory = TextLine
+ def _getTargetClass(self):
+ from zope.schema import TextLine
+ return TextLine
+
def test_suite():
- return TestSuite((
- makeSuite(BytesTest),
- makeSuite(TextTest),
- makeSuite(LineTest),
- makeSuite(TextLineTest),
- makeSuite(PasswordTest),
+ return unittest.TestSuite((
+ unittest.makeSuite(BytesTest),
+ unittest.makeSuite(TextTest),
+ unittest.makeSuite(BytesLineTest),
+ unittest.makeSuite(TextLineTest),
+ unittest.makeSuite(PasswordTest),
))
-if __name__ == '__main__':
- main(defaultTest='test_suite')
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_timedelta.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_timedelta.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_timedelta.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,42 +13,50 @@
##############################################################################
"""Timedelta Field tests
"""
-from unittest import main, makeSuite
+import unittest
-from six import u
-from zope.schema import Timedelta
-from zope.schema.interfaces import RequiredMissing, InvalidValue
-from zope.schema.interfaces import TooSmall, TooBig
from zope.schema.tests.test_field import FieldTestBase
-from datetime import timedelta
+
class TimedeltaTest(FieldTestBase):
"""Test the Timedelta Field."""
- _Field_Factory = Timedelta
+ def _getTargetClass(self):
+ from zope.schema import Timedelta
+ return Timedelta
def testInterface(self):
from zope.interface.verify import verifyObject
from zope.schema.interfaces import ITimedelta
- verifyObject(ITimedelta, self._Field_Factory())
+ verifyObject(ITimedelta, self._makeOne())
def testValidate(self):
- field = self._Field_Factory(title=u('Timedelta field'), description=u(''),
+ from datetime import timedelta
+ from six import u
+ field = self._makeOne(title=u('Timedelta field'),
+ description=u(''),
readonly=False, required=False)
field.validate(None)
field.validate(timedelta(minutes=15))
def testValidateRequired(self):
- field = self._Field_Factory(title=u('Timedelta field'), description=u(''),
+ from datetime import timedelta
+ from six import u
+ from zope.schema.interfaces import RequiredMissing
+ field = self._makeOne(title=u('Timedelta field'), description=u(''),
readonly=False, required=True)
field.validate(timedelta(minutes=15))
self.assertRaises(RequiredMissing, field.validate, None)
def testValidateMin(self):
+ from datetime import timedelta
+ from six import u
+ from zope.schema.interfaces import TooSmall
t1 = timedelta(hours=2)
t2 = timedelta(hours=3)
- field = self._Field_Factory(title=u('Timedelta field'), description=u(''),
+ field = self._makeOne(title=u('Timedelta field'),
+ description=u(''),
readonly=False, required=False, min=t1)
field.validate(None)
field.validate(t1)
@@ -57,10 +65,14 @@
self.assertRaises(TooSmall, field.validate, timedelta(hours=1))
def testValidateMax(self):
+ from datetime import timedelta
+ from six import u
+ from zope.schema.interfaces import TooBig
t1 = timedelta(minutes=1)
t2 = timedelta(minutes=2)
t3 = timedelta(minutes=3)
- field = self._Field_Factory(title=u('Timedelta field'), description=u(''),
+ field = self._makeOne(title=u('Timedelta field'),
+ description=u(''),
readonly=False, required=False, max=t2)
field.validate(None)
field.validate(t1)
@@ -69,13 +81,18 @@
self.assertRaises(TooBig, field.validate, t3)
def testValidateMinAndMax(self):
+ from datetime import timedelta
+ from six import u
+ from zope.schema.interfaces import TooBig
+ from zope.schema.interfaces import TooSmall
t1 = timedelta(days=1)
t2 = timedelta(days=2)
t3 = timedelta(days=3)
t4 = timedelta(days=4)
t5 = timedelta(days=5)
- field = self._Field_Factory(title=u('Timedelta field'), description=u(''),
+ field = self._makeOne(title=u('Timedelta field'),
+ description=u(''),
readonly=False, required=False,
min=t2, max=t4)
field.validate(None)
@@ -88,8 +105,6 @@
def test_suite():
- suite = makeSuite(TimedeltaTest)
- return suite
-
-if __name__ == '__main__':
- main(defaultTest='test_suite')
+ return unittest.TestSuite((
+ unittest.makeSuite(TimedeltaTest),
+ ))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_tuplefield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_tuplefield.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_tuplefield.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,25 +13,22 @@
##############################################################################
"""Tuple field tests.
"""
-from unittest import TestSuite, main, makeSuite
+import unittest
-from six import u
-from zope.interface import implementer
-from zope.schema import Field, Tuple, Int
-from zope.schema.interfaces import IField
-from zope.schema.interfaces import ICollection, ISequence, ITuple
-from zope.schema.interfaces import NotAContainer, RequiredMissing
-from zope.schema.interfaces import WrongContainedType, WrongType, NotUnique
-from zope.schema.interfaces import TooShort, TooLong
from zope.schema.tests.test_field import CollectionFieldTestBase
+
class TupleTest(CollectionFieldTestBase):
"""Test the Tuple Field."""
- _Field_Factory = Tuple
+ def _getTargetClass(self):
+ from zope.schema import Tuple
+ return Tuple
def testValidate(self):
- field = Tuple(title=u('Tuple field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import WrongType
+ field = self._makeOne(title=u('Tuple field'), description=u(''),
readonly=False, required=False)
field.validate(None)
field.validate(())
@@ -44,7 +41,9 @@
self.assertRaises(WrongType, field.validate, {})
def testValidateRequired(self):
- field = Tuple(title=u('Tuple field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import RequiredMissing
+ field = self._makeOne(title=u('Tuple field'), description=u(''),
readonly=False, required=True)
field.validate(())
field.validate((1, 2))
@@ -53,7 +52,9 @@
self.assertRaises(RequiredMissing, field.validate, None)
def testValidateMinValues(self):
- field = Tuple(title=u('Tuple field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import TooShort
+ field = self._makeOne(title=u('Tuple field'), description=u(''),
readonly=False, required=False, min_length=2)
field.validate(None)
field.validate((1, 2))
@@ -63,7 +64,9 @@
self.assertRaises(TooShort, field.validate, (1,))
def testValidateMaxValues(self):
- field = Tuple(title=u('Tuple field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import TooLong
+ field = self._makeOne(title=u('Tuple field'), description=u(''),
readonly=False, required=False, max_length=2)
field.validate(None)
field.validate(())
@@ -73,7 +76,10 @@
self.assertRaises(TooLong, field.validate, (1, 2, 3))
def testValidateMinValuesAndMaxValues(self):
- field = Tuple(title=u('Tuple field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import TooLong
+ from zope.schema.interfaces import TooShort
+ field = self._makeOne(title=u('Tuple field'), description=u(''),
readonly=False, required=False,
min_length=1, max_length=2)
field.validate(None)
@@ -84,7 +90,10 @@
self.assertRaises(TooLong, field.validate, (1, 2, 3))
def testValidateValueTypes(self):
- field = Tuple(title=u('Tuple field'), description=u(''),
+ from six import u
+ from zope.schema import Int
+ from zope.schema.interfaces import WrongContainedType
+ field = self._makeOne(title=u('Tuple field'), description=u(''),
readonly=False, required=False,
value_type=Int())
field.validate(None)
@@ -95,36 +104,42 @@
self.assertRaises(WrongContainedType, field.validate, (3.14159,) )
def testCorrectValueType(self):
+ from zope.interface import implementer
+ from zope.schema import Field
+ from zope.schema.interfaces import IField
# allow value_type of None (??? is this OK?)
- Tuple(value_type=None)
+ self._makeOne(value_type=None)
# do not allow arbitrary value types
- self.assertRaises(ValueError, Tuple, value_type=object())
- self.assertRaises(ValueError, Tuple, value_type=Field)
+ self.assertRaises(ValueError, self._makeOne, value_type=object())
+ self.assertRaises(ValueError, self._makeOne, value_type=Field)
# however, allow anything that implements IField
- Tuple(value_type=Field())
+ self._makeOne(value_type=Field())
@implementer(IField)
class FakeField(object):
pass
- Tuple(value_type=FakeField())
+ self._makeOne(value_type=FakeField())
def testUnique(self):
- field = self._Field_Factory(title=u('test field'), description=u(''),
+ from six import u
+ from zope.schema.interfaces import NotUnique
+ field = self._makeOne(title=u('test field'), description=u(''),
readonly=False, required=True, unique=True)
field.validate((1, 2))
self.assertRaises(NotUnique, field.validate, (1, 2, 1))
def testImplements(self):
- field = Tuple()
+ from zope.schema.interfaces import ICollection
+ from zope.schema.interfaces import ISequence
+ from zope.schema.interfaces import ITuple
+ field = self._makeOne()
self.assertTrue(ITuple.providedBy(field))
self.assertTrue(ISequence.providedBy(field))
self.assertTrue(ICollection.providedBy(field))
+
def test_suite():
- suite = TestSuite()
- suite.addTest(makeSuite(TupleTest))
- return suite
-
-if __name__ == '__main__':
- main(defaultTest='test_suite')
+ return unittest.TestSuite((
+ unittest.makeSuite(TupleTest),
+ ))
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_vocabulary.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_vocabulary.py 2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_vocabulary.py 2012-04-20 14:32:10 UTC (rev 125201)
@@ -15,164 +15,135 @@
"""
import unittest
-try:
- from collections import OrderedDict
-except ImportError:
- from ordereddict import OrderedDict
-from zope.interface.verify import verifyObject
-from zope.interface.exceptions import DoesNotImplement
-from zope.interface import Interface, implementer
-from zope.interface.common.mapping import IEnumerableMapping
+class RegistryTests(unittest.TestCase):
+ """Tests of the simple vocabulary and presentation registries."""
-from zope.schema import interfaces
-from zope.schema import vocabulary
-
-
-class DummyRegistry(vocabulary.VocabularyRegistry):
- def get(self, object, name):
- v = SampleVocabulary()
- v.object = object
- v.name = name
- return v
-
-
-class BaseTest(unittest.TestCase):
- # Clear the vocabulary and presentation registries on each side of
- # each test.
-
def setUp(self):
- vocabulary._clear()
+ from zope.schema.vocabulary import _clear
+ _clear()
def tearDown(self):
- vocabulary._clear()
+ from zope.schema.vocabulary import _clear
+ _clear()
-
-class RegistryTests(BaseTest):
- """Tests of the simple vocabulary and presentation registries."""
-
def test_setVocabularyRegistry(self):
- r = DummyRegistry()
- vocabulary.setVocabularyRegistry(r)
- self.assertTrue(vocabulary.getVocabularyRegistry() is r)
+ from zope.schema.vocabulary import setVocabularyRegistry
+ from zope.schema.vocabulary import getVocabularyRegistry
+ r = _makeDummyRegistry()
+ setVocabularyRegistry(r)
+ self.assertTrue(getVocabularyRegistry() is r)
def test_getVocabularyRegistry(self):
- r = vocabulary.getVocabularyRegistry()
- self.assertTrue(interfaces.IVocabularyRegistry.providedBy(r))
+ from zope.schema.interfaces import IVocabularyRegistry
+ from zope.schema.vocabulary import getVocabularyRegistry
+ r = getVocabularyRegistry()
+ self.assertTrue(IVocabularyRegistry.providedBy(r))
# TODO: still need to test the default implementation
-class SampleTerm(object):
- pass
- at implementer(interfaces.IVocabulary)
-class SampleVocabulary(object):
+class SimpleVocabularyTests(unittest.TestCase):
- def __iter__(self):
- return iter([self.getTerm(x) for x in range(0, 10)])
+ def _getTargetClass(self):
+ from zope.schema.vocabulary import SimpleVocabulary
+ return SimpleVocabulary
- def __contains__(self, value):
- return 0 <= value < 10
+ def list_vocab(self):
+ return self._getTargetClass().fromValues([1, 2, 3])
- def __len__(self):
- return 10
+ def items_vocab(self):
+ return self._getTargetClass().fromItems(
+ [('one', 1), ('two', 2), ('three', 3), ('fore!', 4)])
- def getTerm(self, value):
- if value in self:
- t = SampleTerm()
- t.value = value
- t.double = 2 * value
- return t
- raise LookupError("no such value: %r" % value)
-
-
-class SimpleVocabularyTests(unittest.TestCase):
-
- list_vocab = vocabulary.SimpleVocabulary.fromValues([1, 2, 3])
- items_vocab = vocabulary.SimpleVocabulary.fromItems(
- [('one', 1), ('two', 2), ('three', 3), ('fore!', 4)])
-
def test_simple_term(self):
- t = vocabulary.SimpleTerm(1)
- verifyObject(interfaces.ITokenizedTerm, t)
+ from zope.interface.verify import verifyObject
+ from zope.schema.interfaces import ITokenizedTerm
+ from zope.schema.vocabulary import SimpleTerm
+ t = SimpleTerm(1)
+ verifyObject(ITokenizedTerm, t)
self.assertEqual(t.value, 1)
self.assertEqual(t.token, "1")
- t = vocabulary.SimpleTerm(1, "One")
- verifyObject(interfaces.ITokenizedTerm, t)
+ t = SimpleTerm(1, "One")
+ verifyObject(ITokenizedTerm, t)
self.assertEqual(t.value, 1)
self.assertEqual(t.token, "One")
def test_simple_term_title(self):
- t = vocabulary.SimpleTerm(1)
- verifyObject(interfaces.ITokenizedTerm, t)
+ from zope.interface.verify import verifyObject
+ from zope.interface.exceptions import DoesNotImplement
+ from zope.schema.interfaces import ITokenizedTerm
+ from zope.schema.interfaces import ITitledTokenizedTerm
+ from zope.schema.vocabulary import SimpleTerm
+ t = SimpleTerm(1)
+ verifyObject(ITokenizedTerm, t)
self.assertRaises(DoesNotImplement, verifyObject,
- interfaces.ITitledTokenizedTerm, t)
+ ITitledTokenizedTerm, t)
self.assertTrue(t.title is None)
- t = vocabulary.SimpleTerm(1, title="Title")
- verifyObject(interfaces.ITokenizedTerm, t)
- verifyObject(interfaces.ITitledTokenizedTerm, t)
+ t = SimpleTerm(1, title="Title")
+ verifyObject(ITokenizedTerm, t)
+ verifyObject(ITitledTokenizedTerm, t)
self.assertEqual(t.title, "Title")
def test_order(self):
value = 1
- for t in self.list_vocab:
+ for t in self.list_vocab():
self.assertEqual(t.value, value)
value += 1
value = 1
- for t in self.items_vocab:
+ for t in self.items_vocab():
self.assertEqual(t.value, value)
value += 1
def test_implementation(self):
- self.assertTrue(verifyObject(interfaces.IVocabulary, self.list_vocab))
- self.assertTrue(
- verifyObject(interfaces.IVocabularyTokenized, self.list_vocab))
- self.assertTrue(verifyObject(interfaces.IVocabulary, self.items_vocab))
- self.assertTrue(
- verifyObject(interfaces.IVocabularyTokenized, self.items_vocab))
+ from zope.interface.verify import verifyObject
+ from zope.schema.interfaces import IVocabulary
+ from zope.schema.interfaces import IVocabularyTokenized
+ verifyObject(IVocabulary, self.list_vocab())
+ verifyObject(IVocabularyTokenized, self.list_vocab())
+ verifyObject(IVocabulary, self.items_vocab())
+ verifyObject(IVocabularyTokenized, self.items_vocab())
def test_addt_interfaces(self):
+ from zope.interface import Interface
class IStupid(Interface):
pass
- v = vocabulary.SimpleVocabulary.fromValues([1, 2, 3], IStupid)
+ v = self._getTargetClass().fromValues([1, 2, 3], IStupid)
self.assertTrue(IStupid.providedBy(v))
def test_len(self):
- self.assertEqual(len(self.list_vocab), 3)
- self.assertEqual(len(self.items_vocab), 4)
+ self.assertEqual(len(self.list_vocab()), 3)
+ self.assertEqual(len(self.items_vocab()), 4)
def test_contains(self):
- for v in (self.list_vocab, self.items_vocab):
+ for v in (self.list_vocab(), self.items_vocab()):
self.assertTrue(1 in v and 2 in v and 3 in v)
self.assertTrue(5 not in v)
def test_iter_and_get_term(self):
- for v in (self.list_vocab, self.items_vocab):
+ for v in (self.list_vocab(), self.items_vocab()):
for term in v:
self.assertTrue(v.getTerm(term.value) is term)
self.assertTrue(v.getTermByToken(term.token) is term)
def test_nonunique_tokens(self):
- self.assertRaises(
- ValueError, vocabulary.SimpleVocabulary.fromValues,
- [2, '2'])
- self.assertRaises(
- ValueError, vocabulary.SimpleVocabulary.fromItems,
- [(1, 'one'), ('1', 'another one')])
- self.assertRaises(
- ValueError, vocabulary.SimpleVocabulary.fromItems,
- [(0, 'one'), (1, 'one')])
+ klass = self._getTargetClass()
+ self.assertRaises(ValueError, klass.fromValues, [2, '2'])
+ self.assertRaises(ValueError, klass.fromItems,
+ [(1, 'one'), ('1', 'another one')])
+ self.assertRaises(ValueError, klass.fromItems,
+ [(0, 'one'), (1, 'one')])
def test_nonunique_token_message(self):
try:
- vocabulary.SimpleVocabulary.fromValues([2, '2'])
+ self._getTargetClass().fromValues([2, '2'])
except ValueError as e:
self.assertEqual(str(e), "term tokens must be unique: '2'")
def test_nonunique_token_messages(self):
try:
- vocabulary.SimpleVocabulary.fromItems([(0, 'one'), (1, 'one')])
+ self._getTargetClass().fromItems([(0, 'one'), (1, 'one')])
except ValueError as e:
self.assertEqual(str(e), "term values must be unique: 'one'")
@@ -183,7 +154,7 @@
self.token = repr(value)
self.nextvalue = value + 1
- class MyVocabulary(vocabulary.SimpleVocabulary):
+ class MyVocabulary(self._getTargetClass()):
def createTerm(cls, value):
return MyTerm(value)
createTerm = classmethod(createTerm)
@@ -194,62 +165,81 @@
class TreeVocabularyTests(unittest.TestCase):
- region_tree = {
- ('regions', 'Regions'): {
- ('aut', 'Austria'): {
- ('tyr', 'Tyrol'): {
- ('auss', 'Ausserfern'): {},
- }
- },
- ('ger', 'Germany'): {
- ('bav', 'Bavaria'):{}
- },
+
+ def _getTargetClass(self):
+ from zope.schema.vocabulary import TreeVocabulary
+ return TreeVocabulary
+
+ def tree_vocab_2(self):
+ region_tree = {
+ ('regions', 'Regions'): {
+ ('aut', 'Austria'): {
+ ('tyr', 'Tyrol'): {
+ ('auss', 'Ausserfern'): {},
+ }
+ },
+ ('ger', 'Germany'): {
+ ('bav', 'Bavaria'):{}
+ },
+ }
}
- }
- tree_vocab_2 = vocabulary.TreeVocabulary.fromDict(region_tree)
+ return self._getTargetClass().fromDict(region_tree)
- business_tree = {
- ('services', 'services', 'Services'): {
- ('reservations', 'reservations', 'Reservations'): {
- ('res_host', 'res_host', 'Res Host'): {},
- ('res_gui', 'res_gui', 'Res GUI'): {},
+ def business_tree(self):
+ return {
+ ('services', 'services', 'Services'): {
+ ('reservations', 'reservations', 'Reservations'): {
+ ('res_host', 'res_host', 'Res Host'): {},
+ ('res_gui', 'res_gui', 'Res GUI'): {},
+ },
+ ('check_in', 'check_in', 'Check-in'): {
+ ('dcs_host', 'dcs_host', 'DCS Host'): {},
+ },
},
- ('check_in', 'check_in', 'Check-in'): {
- ('dcs_host', 'dcs_host', 'DCS Host'): {},
+ ('infrastructure', 'infrastructure', 'Infrastructure'): {
+ ('communication_network', 'communication_network',
+ 'Communication/Network'): {
+ ('messaging', 'messaging', 'Messaging'): {},
+ },
+ ('data_transaction', 'data_transaction',
+ 'Data/Transaction'): {
+ ('database', 'database', 'Database'): {},
+ },
+ ('security', 'security', 'Security'): {},
},
- },
- ('infrastructure', 'infrastructure', 'Infrastructure'): {
- ('communication_network', 'communication_network', 'Communication/Network'): {
- ('messaging', 'messaging', 'Messaging'): {},
- },
- ('data_transaction', 'data_transaction', 'Data/Transaction'): {
- ('database', 'database', 'Database'): {},
- },
- ('security', 'security', 'Security'): {},
- },
- }
- tree_vocab_3 = vocabulary.TreeVocabulary.fromDict(business_tree)
+ }
+ def tree_vocab_3(self):
+ return self._getTargetClass().fromDict(self.business_tree())
def test_implementation(self):
- for v in [self.tree_vocab_2, self.tree_vocab_3]:
+ from zope.interface.verify import verifyObject
+ from zope.interface.common.mapping import IEnumerableMapping
+ from zope.schema.interfaces import ITreeVocabulary
+ from zope.schema.interfaces import IVocabulary
+ from zope.schema.interfaces import IVocabularyTokenized
+ for v in [self.tree_vocab_2(), self.tree_vocab_3()]:
self.assertTrue(verifyObject(IEnumerableMapping, v))
- self.assertTrue(verifyObject(interfaces.IVocabulary, v))
- self.assertTrue(verifyObject(interfaces.IVocabularyTokenized, v))
- self.assertTrue(verifyObject(interfaces.ITreeVocabulary, v))
+ self.assertTrue(verifyObject(IVocabulary, v))
+ self.assertTrue(verifyObject(IVocabularyTokenized, v))
+ self.assertTrue(verifyObject(ITreeVocabulary, v))
def test_addt_interfaces(self):
+ from zope.interface import Interface
class IStupid(Interface):
pass
- v = vocabulary.TreeVocabulary.fromDict({('one', '1'): {}}, IStupid)
+ v = self._getTargetClass().fromDict({('one', '1'): {}}, IStupid)
self.assertTrue(IStupid.providedBy(v))
def test_ordering(self):
- """The TreeVocabulary makes use of an OrderedDict to store it's
- internal tree representation.
+ #The TreeVocabulary makes use of an OrderedDict to store it's
+ #internal tree representation.
+ #
+ #Check that they keys are indeed oredered.
+ try:
+ from collections import OrderedDict
+ except ImportError: #pragma NO COVER
+ from ordereddict import OrderedDict
- Check that they keys are indeed oredered.
- """
-
d = { (1, 'new_york', 'New York'): {
(2, 'ny_albany', 'Albany'): {},
(3, 'ny_new_york', 'New York'): {},
@@ -263,33 +253,41 @@
(9, 'utah', 'Utah'): {},
}
dict_ = OrderedDict(sorted(d.items(), key=lambda t: t[0]))
- vocab = vocabulary.TreeVocabulary.fromDict(dict_)
+ vocab = self._getTargetClass().fromDict(dict_)
# Test keys
- self.assertEqual([k.token for k in vocab.keys()], ['1', '4', '7', '8', '9'])
+ self.assertEqual([k.token for k in vocab.keys()],
+ ['1', '4', '7', '8', '9'])
# Test __iter__
- self.assertEqual([k.token for k in vocab], ['1', '4', '7', '8', '9'])
+ self.assertEqual([k.token for k in vocab],
+ ['1', '4', '7', '8', '9'])
- self.assertEqual([k.token for k in vocab[[k for k in vocab.keys()][0]].keys()], ['2', '3'])
- self.assertEqual([k.token for k in vocab[[k for k in vocab.keys()][1]].keys()], ['5', '6'])
+ self.assertEqual([k.token for k in vocab[
+ [k for k in vocab.keys()][0]].keys()],
+ ['2', '3'])
+ self.assertEqual([k.token for k in vocab[
+ [k for k in vocab.keys()][1]].keys()],
+ ['5', '6'])
def test_indexes(self):
- """ The TreeVocabulary creates three indexes for quick lookups,
- term_by_value, term_by_value and path_by_value.
- """
+ # TreeVocabulary creates three indexes for quick lookups,
+ # term_by_value, term_by_value and path_by_value.
+ tv2 = self.tree_vocab_2()
self.assertEqual(
- [k for k in self.tree_vocab_2.term_by_value.keys()],
- ['Tyrol', 'Bavaria', 'Regions', 'Austria', 'Germany', 'Ausserfern'])
+ [k for k in tv2.term_by_value.keys()],
+ ['Tyrol', 'Bavaria', 'Regions',
+ 'Austria', 'Germany', 'Ausserfern'])
self.assertEqual(
- [k for k in self.tree_vocab_2.term_by_token.keys()],
+ [k for k in tv2.term_by_token.keys()],
['bav', 'ger', 'auss', 'regions', 'aut', 'tyr'])
self.assertEqual(
- [k for k in self.tree_vocab_2.path_by_value.keys()],
- ['Tyrol', 'Bavaria', 'Regions', 'Austria', 'Germany', 'Ausserfern'])
+ [k for k in tv2.path_by_value.keys()],
+ ['Tyrol', 'Bavaria', 'Regions',
+ 'Austria', 'Germany', 'Ausserfern'])
self.assertEqual(
- [k for k in self.tree_vocab_2.path_by_value.values()],
+ [k for k in tv2.path_by_value.values()],
[
['Regions', 'Austria', 'Tyrol'],
['Regions', 'Germany', 'Bavaria'],
@@ -300,7 +298,7 @@
])
self.assertEqual(
- [k for k in self.tree_vocab_3.term_by_value.keys()],
+ [k for k in self.tree_vocab_3().term_by_value.keys()],
[ 'data_transaction',
'check_in',
'infrastructure',
@@ -316,7 +314,7 @@
])
self.assertEqual(
- [k for k in self.tree_vocab_3.term_by_token.keys()],
+ [k for k in self.tree_vocab_3().term_by_token.keys()],
[ 'data_transaction',
'check_in',
'infrastructure',
@@ -332,7 +330,7 @@
])
self.assertEqual(
- [k for k in self.tree_vocab_3.path_by_value.values()],
+ [k for k in self.tree_vocab_3().path_by_value.values()],
[ ['infrastructure', 'data_transaction'],
['services', 'check_in'],
['infrastructure'],
@@ -348,80 +346,85 @@
])
def test_termpath(self):
+ tv2 = self.tree_vocab_2()
+ tv3 = self.tree_vocab_3()
self.assertEqual(
- self.tree_vocab_2.getTermPath('Bavaria'),
+ tv2.getTermPath('Bavaria'),
['Regions', 'Germany', 'Bavaria'])
self.assertEqual(
- self.tree_vocab_2.getTermPath('Austria'),
+ tv2.getTermPath('Austria'),
['Regions', 'Austria'])
self.assertEqual(
- self.tree_vocab_2.getTermPath('Ausserfern'),
+ tv2.getTermPath('Ausserfern'),
['Regions', 'Austria', 'Tyrol', 'Ausserfern'])
self.assertEqual(
- self.tree_vocab_2.getTermPath('Non-existent'),
+ tv2.getTermPath('Non-existent'),
[])
self.assertEqual(
- self.tree_vocab_3.getTermPath('database'),
+ tv3.getTermPath('database'),
["infrastructure", "data_transaction", "database"])
def test_len(self):
- """ len returns the number of all nodes in the dict
- """
- self.assertEqual(len(self.tree_vocab_2), 1)
- self.assertEqual(len(self.tree_vocab_3), 2)
+ # len returns the number of all nodes in the dict
+ self.assertEqual(len(self.tree_vocab_2()), 1)
+ self.assertEqual(len(self.tree_vocab_3()), 2)
def test_contains(self):
- self.assertTrue('Regions' in self.tree_vocab_2 and
- 'Austria' in self.tree_vocab_2 and
- 'Bavaria' in self.tree_vocab_2)
+ tv2 = self.tree_vocab_2()
+ self.assertTrue('Regions' in tv2 and
+ 'Austria' in tv2 and
+ 'Bavaria' in tv2)
- self.assertTrue('bav' not in self.tree_vocab_2)
- self.assertTrue('foo' not in self.tree_vocab_2)
+ self.assertTrue('bav' not in tv2)
+ self.assertTrue('foo' not in tv2)
- self.assertTrue('database' in self.tree_vocab_3 and
- 'security' in self.tree_vocab_3 and
- 'services' in self.tree_vocab_3)
+ tv3 = self.tree_vocab_3()
+ self.assertTrue('database' in tv3 and
+ 'security' in tv3 and
+ 'services' in tv3)
- self.assertTrue('Services' not in self.tree_vocab_3)
- self.assertTrue('Database' not in self.tree_vocab_3)
+ self.assertTrue('Services' not in tv3)
+ self.assertTrue('Database' not in tv3)
def test_values_and_items(self):
- for v in (self.tree_vocab_2, self.tree_vocab_3):
+ for v in (self.tree_vocab_2(), self.tree_vocab_3()):
for term in v:
- self.assertEqual([i for i in v.values()], [i for i in v._terms.values()])
- self.assertEqual([i for i in v.items()], [i for i in v._terms.items()])
+ self.assertEqual([i for i in v.values()],
+ [i for i in v._terms.values()])
+ self.assertEqual([i for i in v.items()],
+ [i for i in v._terms.items()])
def test_get(self):
- for v in [self.tree_vocab_2, self.tree_vocab_3]:
+ for v in [self.tree_vocab_2(), self.tree_vocab_3()]:
for key, value in v.items():
self.assertEqual(v.get(key), value)
self.assertEqual(v[key], value)
def test_get_term(self):
- for v in (self.tree_vocab_2, self.tree_vocab_3):
+ for v in (self.tree_vocab_2(), self.tree_vocab_3()):
for term in v:
self.assertTrue(v.getTerm(term.value) is term)
self.assertTrue(v.getTermByToken(term.token) is term)
self.assertRaises(LookupError, v.getTerm, 'non-present-value')
- self.assertRaises(LookupError, v.getTermByToken, 'non-present-token')
+ self.assertRaises(LookupError,
+ v.getTermByToken, 'non-present-token')
def test_nonunique_values_and_tokens(self):
- """Since we do term and value lookups, all terms' values and tokens
- must be unique. This rule applies recursively.
- """
+ # Since we do term and value lookups, all terms' values and tokens
+ # must be unique. This rule applies recursively.
self.assertRaises(
- ValueError, vocabulary.TreeVocabulary.fromDict,
+ ValueError, self._getTargetClass().fromDict,
{ ('one', '1'): {},
('two', '1'): {},
})
self.assertRaises(
- ValueError, vocabulary.TreeVocabulary.fromDict,
+ ValueError, self._getTargetClass().fromDict,
{ ('one', '1'): {},
('one', '2'): {},
})
# Even nested tokens must be unique.
self.assertRaises(
- ValueError, vocabulary.TreeVocabulary.fromDict,
+ ValueError, self._getTargetClass().fromDict,
{ ('new_york', 'New York'): {
('albany', 'Albany'): {},
('new_york', 'New York'): {},
@@ -429,27 +432,27 @@
})
# The same applies to nested values.
self.assertRaises(
- ValueError, vocabulary.TreeVocabulary.fromDict,
+ ValueError, self._getTargetClass().fromDict,
{ ('1', 'new_york'): {
('2', 'albany'): {},
('3', 'new_york'): {},
},
})
# The title attribute does however not have to be unique.
- vocabulary.TreeVocabulary.fromDict(
+ self._getTargetClass().fromDict(
{ ('1', 'new_york', 'New York'): {
('2', 'ny_albany', 'Albany'): {},
('3', 'ny_new_york', 'New York'): {},
},
})
- vocabulary.TreeVocabulary.fromDict({
+ self._getTargetClass().fromDict({
('one', '1', 'One'): {},
('two', '2', 'One'): {},
})
def test_nonunique_value_message(self):
try:
- vocabulary.TreeVocabulary.fromDict(
+ self._getTargetClass().fromDict(
{ ('one', '1'): {},
('two', '1'): {},
})
@@ -458,7 +461,7 @@
def test_nonunique_token_message(self):
try:
- vocabulary.TreeVocabulary.fromDict(
+ self._getTargetClass().fromDict(
{ ('one', '1'): {},
('one', '2'): {},
})
@@ -466,10 +469,10 @@
self.assertEqual(str(e), "Term tokens must be unique: 'one'")
def test_recursive_methods(self):
- """Test the _createTermTree and _getPathToTreeNode methods
- """
- tree = vocabulary._createTermTree({}, self.business_tree)
- vocab = vocabulary.TreeVocabulary.fromDict(self.business_tree)
+ #Test the _createTermTree and _getPathToTreeNode methods
+ from zope.schema.vocabulary import _createTermTree
+ tree = _createTermTree({}, self.business_tree())
+ vocab = self._getTargetClass().fromDict(self.business_tree())
term_path = vocab._getPathToTreeNode(tree, "infrastructure")
vocab_path = vocab._getPathToTreeNode(vocab, "infrastructure")
@@ -484,7 +487,8 @@
term_path = vocab._getPathToTreeNode(tree, "database")
vocab_path = vocab._getPathToTreeNode(vocab, "database")
self.assertEqual(term_path, vocab_path)
- self.assertEqual(term_path, ["infrastructure", "data_transaction", "database"])
+ self.assertEqual(term_path,
+ ["infrastructure", "data_transaction", "database"])
term_path = vocab._getPathToTreeNode(tree, "dcs_host")
vocab_path = vocab._getPathToTreeNode(vocab, "dcs_host")
@@ -496,12 +500,50 @@
self.assertEqual(term_path, vocab_path)
self.assertEqual(term_path, [])
-def test_suite():
- suite = unittest.makeSuite(RegistryTests)
- suite.addTest(unittest.makeSuite(SimpleVocabularyTests))
- suite.addTest(unittest.makeSuite(TreeVocabularyTests))
- return suite
+def _makeSampleVocabulary():
+ from zope.interface import implementer
+ from zope.schema.interfaces import IVocabulary
-if __name__ == "__main__":
- unittest.main(defaultTest="test_suite")
+ class SampleTerm(object):
+ pass
+ @implementer(IVocabulary)
+ class SampleVocabulary(object):
+
+ def __iter__(self):
+ return iter([self.getTerm(x) for x in range(0, 10)])
+
+ def __contains__(self, value):
+ return 0 <= value < 10
+
+ def __len__(self):
+ return 10
+
+ def getTerm(self, value):
+ if value in self:
+ t = SampleTerm()
+ t.value = value
+ t.double = 2 * value
+ return t
+ raise LookupError("no such value: %r" % value)
+
+ return SampleVocabulary()
+
+def _makeDummyRegistry():
+ from zope.schema.vocabulary import VocabularyRegistry
+
+ class DummyRegistry(VocabularyRegistry):
+ def get(self, object, name):
+ v = _makeSampleVocabulary()
+ v.object = object
+ v.name = name
+ return v
+ return DummyRegistry()
+
+
+def test_suite():
+ return unittest.TestSuite((
+ unittest.makeSuite(RegistryTests),
+ unittest.makeSuite(SimpleVocabularyTests),
+ unittest.makeSuite(TreeVocabularyTests),
+ ))
More information about the checkins
mailing list