[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