[Checkins] SVN: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_ Improved assertions for string types.
Tres Seaver
cvs-admin at zope.org
Thu Apr 26 22:27:22 UTC 2012
Log message for revision 125312:
Improved assertions for string types.
Coalesce out-of-module tests.
Changed:
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test__bootstrapfields.py
U zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test__field.py
D zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_strfield.py
-=-
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test__bootstrapfields.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test__bootstrapfields.py 2012-04-26 21:05:55 UTC (rev 125311)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test__bootstrapfields.py 2012-04-26 22:27:19 UTC (rev 125312)
@@ -473,6 +473,42 @@
txt = self._makeOne()
self.assertEqual(txt._type, text_type)
+ def test_validate_wrong_types(self):
+ from zope.schema.interfaces import WrongType
+ from zope.schema._compat import b
+ field = self._makeOne()
+ self.assertRaises(WrongType, field.validate, b(''))
+ self.assertRaises(WrongType, field.validate, 1)
+ self.assertRaises(WrongType, field.validate, 1.0)
+ self.assertRaises(WrongType, field.validate, ())
+ self.assertRaises(WrongType, field.validate, [])
+ self.assertRaises(WrongType, field.validate, {})
+ self.assertRaises(WrongType, field.validate, set())
+ self.assertRaises(WrongType, field.validate, frozenset())
+ self.assertRaises(WrongType, field.validate, object())
+
+ def test_validate_w_invalid_default(self):
+ from zope.schema._compat import b
+ from zope.schema.interfaces import ValidationError
+ self.assertRaises(ValidationError, self._makeOne, default=b(''))
+
+ def test_validate_not_required(self):
+ from zope.schema._compat import u
+ field = self._makeOne(required=False)
+ field.validate(u(''))
+ field.validate(u('abc'))
+ field.validate(u('abc\ndef'))
+ field.validate(None)
+
+ def test_validate_required(self):
+ from zope.schema.interfaces import RequiredMissing
+ from zope.schema._compat import u
+ field = self._makeOne()
+ field.validate(u(''))
+ field.validate(u('abc'))
+ field.validate(u('abc\ndef'))
+ self.assertRaises(RequiredMissing, field.validate, None)
+
def test_fromUnicode_miss(self):
from zope.schema._bootstrapinterfaces import WrongType
from zope.schema._compat import b
@@ -487,6 +523,62 @@
self.assertEqual(txt.fromUnicode(deadbeef), deadbeef)
+class TextLineTests(unittest.TestCase):
+
+ def _getTargetClass(self):
+ from zope.schema._field import TextLine
+ return TextLine
+
+ def _makeOne(self, *args, **kw):
+ return self._getTargetClass()(*args, **kw)
+
+ def test_class_conforms_to_ITextLine(self):
+ from zope.interface.verify import verifyClass
+ from zope.schema.interfaces import ITextLine
+ verifyClass(ITextLine, self._getTargetClass())
+
+ def test_instance_conforms_to_ITextLine(self):
+ from zope.interface.verify import verifyObject
+ from zope.schema.interfaces import ITextLine
+ verifyObject(ITextLine, self._makeOne())
+
+ def test_validate_wrong_types(self):
+ from zope.schema.interfaces import WrongType
+ from zope.schema._compat import b
+ field = self._makeOne()
+ self.assertRaises(WrongType, field.validate, b(''))
+ self.assertRaises(WrongType, field.validate, 1)
+ self.assertRaises(WrongType, field.validate, 1.0)
+ self.assertRaises(WrongType, field.validate, ())
+ self.assertRaises(WrongType, field.validate, [])
+ self.assertRaises(WrongType, field.validate, {})
+ self.assertRaises(WrongType, field.validate, set())
+ self.assertRaises(WrongType, field.validate, frozenset())
+ self.assertRaises(WrongType, field.validate, object())
+
+ def test_validate_not_required(self):
+ from zope.schema._compat import u
+ field = self._makeOne(required=False)
+ field.validate(u(''))
+ field.validate(u('abc'))
+ field.validate(None)
+
+ def test_validate_required(self):
+ from zope.schema.interfaces import RequiredMissing
+ from zope.schema._compat import u
+ field = self._makeOne()
+ field.validate(u(''))
+ field.validate(u('abc'))
+ self.assertRaises(RequiredMissing, field.validate, None)
+
+ def test_constraint(self):
+ from zope.schema._compat import u
+ field = self._makeOne()
+ self.assertEqual(field.constraint(u('')), True)
+ self.assertEqual(field.constraint(u('abc')), True)
+ self.assertEqual(field.constraint(u('abc\ndef')), False)
+
+
class PasswordTests(unittest.TestCase):
def _getTargetClass(self):
@@ -505,6 +597,28 @@
after = dict(inst.__dict__)
self.assertEqual(after, before)
+ def test_set_normal(self):
+ klass = self._getTargetClass()
+ pw = self._makeOne(__name__='password')
+ inst = DummyInst()
+ pw.set(inst, 'PASSWORD')
+ self.assertEqual(inst.password, 'PASSWORD')
+
+ def test_validate_not_required(self):
+ from zope.schema._compat import u
+ field = self._makeOne(required=False)
+ field.validate(u(''))
+ field.validate(u('abc'))
+ field.validate(None)
+
+ def test_validate_required(self):
+ from zope.schema.interfaces import RequiredMissing
+ from zope.schema._compat import u
+ field = self._makeOne()
+ field.validate(u(''))
+ field.validate(u('abc'))
+ self.assertRaises(RequiredMissing, field.validate, None)
+
def test_validate_unchanged_not_already_set(self):
from zope.schema._bootstrapinterfaces import WrongType
klass = self._getTargetClass()
@@ -520,7 +634,14 @@
pw = self._makeOne(__name__= 'password').bind(inst)
pw.validate(klass.UNCHANGED_PASSWORD) # doesn't raise
+ def test_constraint(self):
+ from zope.schema._compat import u
+ field = self._makeOne()
+ self.assertEqual(field.constraint(u('')), True)
+ self.assertEqual(field.constraint(u('abc')), True)
+ self.assertEqual(field.constraint(u('abc\ndef')), False)
+
class BoolTests(unittest.TestCase):
def _getTargetClass(self):
@@ -657,6 +778,7 @@
unittest.makeSuite(OrderableTests),
unittest.makeSuite(MinMaxLenTests),
unittest.makeSuite(TextTests),
+ unittest.makeSuite(TextLineTests),
unittest.makeSuite(PasswordTests),
unittest.makeSuite(BoolTests),
unittest.makeSuite(IntTests),
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-26 21:05:55 UTC (rev 125311)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test__field.py 2012-04-26 22:27:19 UTC (rev 125312)
@@ -47,6 +47,28 @@
self.assertRaises(WrongType, field.validate, frozenset())
self.assertRaises(WrongType, field.validate, object())
+ def test_validate_w_invalid_default(self):
+ from zope.schema._compat import u
+ from zope.schema.interfaces import ValidationError
+ self.assertRaises(ValidationError, self._makeOne, default=u(''))
+
+ def test_validate_not_required(self):
+ from zope.schema._compat import b
+ field = self._makeOne(required=False)
+ field.validate(b(''))
+ field.validate(b('abc'))
+ field.validate(b('abc\ndef'))
+ field.validate(None)
+
+ def test_validate_required(self):
+ from zope.schema.interfaces import RequiredMissing
+ from zope.schema._compat import b
+ field = self._makeOne()
+ field.validate(b(''))
+ field.validate(b('abc'))
+ field.validate(b('abc\ndef'))
+ self.assertRaises(RequiredMissing, field.validate, None)
+
def test_fromUnicode_miss(self):
from zope.schema._compat import u
byt = self._makeOne()
Deleted: 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-26 21:05:55 UTC (rev 125311)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_strfield.py 2012-04-26 22:27:19 UTC (rev 125312)
@@ -1,206 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2001, 2002 Zope Foundation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""String field tests
-"""
-import unittest
-
-from zope.schema.tests.test_field import FieldTestBase
-
-
-class StrTestBase(FieldTestBase):
- """Test the Str Field."""
-
- def testValidate(self):
- from zope.schema._compat 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 zope.schema._compat 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._makeOne(
- title=u('Str field'), description=u(''),
- readonly=False, required=True, min_length=1)
- field.validate(self._convert('foo'))
-
- self.assertRaises(RequiredMissing, field.validate, None)
- self.assertRaises(TooShort, field.validate, self._convert(''))
-
- def testValidateMinLength(self):
- from zope.schema._compat 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)
- field.validate(self._convert('333'))
- field.validate(self._convert('55555'))
-
- self.assertRaises(TooShort, field.validate, self._convert(''))
- self.assertRaises(TooShort, field.validate, self._convert('22'))
- self.assertRaises(TooShort, field.validate, self._convert('1'))
-
- def testValidateMaxLength(self):
- from zope.schema._compat 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)
- field.validate(self._convert(''))
- field.validate(self._convert('333'))
- field.validate(self._convert('55555'))
-
- self.assertRaises(TooLong, field.validate, self._convert('666666'))
- self.assertRaises(TooLong, field.validate, self._convert('999999999'))
-
- def testValidateMinLengthAndMaxLength(self):
- from zope.schema._compat 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)
-
- field.validate(None)
- field.validate(self._convert('333'))
- field.validate(self._convert('4444'))
- field.validate(self._convert('55555'))
-
- self.assertRaises(TooShort, field.validate, self._convert('22'))
- self.assertRaises(TooShort, field.validate, self._convert('22'))
- self.assertRaises(TooLong, field.validate, self._convert('666666'))
- self.assertRaises(TooLong, field.validate, self._convert('999999999'))
-
-
-class MultiLine(object):
-
- def test_newlines(self):
- from zope.schema._compat import u
- field = self._makeOne(title=u('Str field'))
- field.validate(self._convert('hello\nworld'))
-
-
-class BytesTest(unittest.TestCase, StrTestBase, MultiLine):
-
- def _getTargetClass(self):
- from zope.schema import Bytes
- return Bytes
-
- def _convert(self, v):
- from zope.schema._compat import b
- return b(v)
-
- def testBadStringType(self):
- from zope.schema._compat import u
- from zope.schema.interfaces import ValidationError
- field = self._makeOne()
- self.assertRaises(ValidationError, field.validate, u('hello'))
-
-
-class TextTest(unittest.TestCase, StrTestBase, MultiLine):
-
- def _getTargetClass(self):
- from zope.schema import Text
- return Text
-
- def _convert(self, v):
- from zope.schema._compat import u
- return u(v)
-
- def testBadStringType(self):
- from zope.schema._compat import b
- from zope.schema.interfaces import ValidationError
- field = self._makeOne()
- self.assertRaises(ValidationError, field.validate, b('hello'))
-
- def testSillyDefault(self):
- from zope.schema._compat import b
- from zope.schema.interfaces import ValidationError
- self.assertRaises(ValidationError, self._makeOne, default=b(""))
-
-class SingleLine(object):
-
- def test_newlines(self):
- from zope.schema._compat 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):
-
- def _getTargetClass(self):
- from zope.schema import Password
- return Password
-
- def test_existingValue(self):
- from zope.schema._compat import u
- from zope.schema.interfaces import WrongType
- class Dummy(object):
- password = None
- dummy = Dummy()
-
- 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
- self.assertRaises(WrongType, field.validate, field.UNCHANGED_PASSWORD)
-
- dummy.password = 'asdf'
- field.validate(field.UNCHANGED_PASSWORD)
-
- # Using a normal value, the field gets updated
- field.set(dummy, u('test'))
- self.assertEqual(u('test'), dummy.password)
-
- # Using UNCHANGED_PASSWORD the field is not updated.
- field.set(dummy, field.UNCHANGED_PASSWORD)
- self.assertEqual(u('test'), dummy.password)
-
-
-class BytesLineTest(SingleLine, BytesTest):
-
- def _getTargetClass(self):
- from zope.schema import BytesLine
- return BytesLine
-
-
-class TextLineTest(SingleLine, TextTest):
-
- def _getTargetClass(self):
- from zope.schema import TextLine
- return TextLine
-
-
-def test_suite():
- return unittest.TestSuite((
- unittest.makeSuite(BytesTest),
- unittest.makeSuite(TextTest),
- unittest.makeSuite(BytesLineTest),
- unittest.makeSuite(TextLineTest),
- unittest.makeSuite(PasswordTest),
- ))
-
More information about the checkins
mailing list