[Zope-Checkins] CVS: Zope3/lib/python/Schema/tests - testBoolField.py:1.1 testDictField.py:1.1 testIntField.py:1.1 testStrField.py:1.1 testField.py:1.5 testFloatField.py:1.2 testListField.py:1.3 testSchema.py:1.6 testTupleField.py:1.3

Martijn Faassen m.faassen@vet.uu.nl
Sun, 14 Jul 2002 14:51:28 -0400


Update of /cvs-repository/Zope3/lib/python/Schema/tests
In directory cvs.zope.org:/tmp/cvs-serv4517/tests

Modified Files:
	testField.py testFloatField.py testListField.py testSchema.py 
	testTupleField.py 
Added Files:
	testBoolField.py testDictField.py testIntField.py 
	testStrField.py 
Log Message:
During the Zope3 sprint in Charleroi, it was decided that the contract
of the validate() method was not to ever convert. It would raise an
exception if validation fails, and otherwise pass silently. We
refactored the code accordingly. This was inadvertently changed by
Stephan back to the original behavior (to assume conversion) in his
recent checkins when he "finished the Schema code".

Unfortunately I do not think we stated this explicitly in the
interface, though checking CVS entry messages or talking to the people
who last worked on the schema would've spared Stephan and now me a lot
of useless work. :(

Whitespace normalization, the only validator which actually seemed to
be doing any conversion (changing its input), belongs in the converter
code, not in the validator code. Where the converter code belongs is
another debate. My opinion is that while which conversions to use is
part of the particular view, many common conversions also make sense to
be part of the schema package.


=== Added File Zope3/lib/python/Schema/tests/testBoolField.py ===
##############################################################################
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (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.
#
##############################################################################
"""
$Id: testBoolField.py,v 1.1 2002/07/14 18:51:27 faassen Exp $
"""
from unittest import TestSuite, main, makeSuite
from Schema import Bool, ErrorNames, ValidationError
from testField import FieldTest
from Schema.Exceptions import ValidationError

class BoolTest(FieldTest):
    """Test the Bool Field."""

    def testValidate(self):
        field = Bool(id="field", title='Bool field', description='',
                        readonly=0, required=0)
        try:
            field.validate(None)
            field.validate(1)
            field.validate(0)
            field.validate(10)
            field.validate(-10)
        except ValidationError, e:
            self.unexpectedValidationError(e)

    def testValidateRequired(self):
        field = Bool(id="field", title='Bool field', description='',
                        readonly=0, required=1)
        try:
            field.validate(1)
            field.validate(0)
        except ValidationError, e:
            self.unexpectedValidationError(e)

        self.assertRaisesErrorNames(ErrorNames.RequiredMissing,
                                    field.validate, None)

    def testAllowedValues(self):
        field = Bool(id="field", title='Bool field', description='',
                        readonly=0, required=0, allowed_values=(0,))
        try:
            field.validate(None)
            field.validate(0)
        except ValidationError, e:
            self.unexpectedValidationError(e)
        
        self.assertRaisesErrorNames(ErrorNames.InvalidValue,
                                    field.validate, 1)


def test_suite():
    return TestSuite((
        makeSuite(BoolTest),
        ))

if __name__ == '__main__':
    main(defaultTest='test_suite')


=== Added File Zope3/lib/python/Schema/tests/testDictField.py ===
##############################################################################
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (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.
#
##############################################################################
"""
$Id: testDictField.py,v 1.1 2002/07/14 18:51:27 faassen Exp $
"""
from unittest import TestSuite, main, makeSuite
from Schema import Dict, Int, Float, ErrorNames
from testField import FieldTest

class DictTest(FieldTest):
    """Test the Dict Field."""

    def testValidate(self):
        field = Dict(id="field", title='Dict field',
                           description='', readonly=0, required=0)
        try:
            field.validate(None)
            field.validate({})
            field.validate({1: 'foo'})
            field.validate({'a': 1})
        except ValidationError, e:
            self.unexpectedValidationError(e)
            
    def testValidateRequired(self):
        field = Dict(id="field", title='Dict field',
                           description='', readonly=0, required=1)
        try:
            field.validate({})
            field.validate({1: 'foo'})
            field.validate({'a': 1})
        except ValidationError, e:
            self.unexpectedValidationError(e)
        self.assertRaisesErrorNames(ErrorNames.RequiredMissing,
                                    field.validate, None)

    def testValidateMinValues(self):
        field = Dict(id="field", title='Dict field',
                           description='', readonly=0, required=0,
                           min_values=1)
        try:
            field.validate(None)
            field.validate({1: 'a'})
            field.validate({1: 'a', 2: 'b'})
        except ValidationError, e:
            self.unexpectedValidationError(e)
        self.assertRaisesErrorNames(ErrorNames.NotEnoughElements,
                                    field.validate, {})

    def testValidateMaxValues(self):
        field = Dict(id="field", title='Dict field',
                           description='', readonly=0, required=0,
                           max_values=1)
        try:
            field.validate(None)
            field.validate({})
            field.validate({1: 'a'})
        except ValidationError, e:
            self.unexpectedValidationError(e)
        self.assertRaisesErrorNames(ErrorNames.TooManyElements,
                                    field.validate, {1: 'a', 2: 'b'})
        self.assertRaisesErrorNames(ErrorNames.TooManyElements,
                                    field.validate, {1: 'a', 2: 'b', 3: 'c'})

    def testValidateMinValuesAndMaxValues(self):
        field = Dict(id="field", title='Dict field',
                           description='', readonly=0, required=0,
                           min_values=1, max_values=2)
        try:
            field.validate(None)
            field.validate({1: 'a'})
            field.validate({1: 'a', 2: 'b'})
        except ValidationError, e:
            self.unexpectedValidationError(e)
        self.assertRaisesErrorNames(ErrorNames.NotEnoughElements,
                                    field.validate, {})
        self.assertRaisesErrorNames(ErrorNames.TooManyElements,
                                    field.validate, {1: 'a', 2: 'b', 3: 'c'})

    def testValidateValueTypes(self):
        field = Dict(id="field", title='Dict field',
                           description='', readonly=0, required=0,
                           value_types=(Int, Float))
        try:
            field.validate(None)
            field.validate({'a': 5.3})
            field.validate({'a': 2, 'b': 2.3})
        except ValidationError, e:
            self.unexpectedValidationError(e)
        self.assertRaisesErrorNames(ErrorNames.WrongContainedType,
                                    field.validate, {1: ''} )
        self.assertRaisesErrorNames(ErrorNames.WrongContainedType,
                                    field.validate, {'a': ()} )

    def testValidateKeyTypes(self):
        field = Dict(id="field", title='Dict field',
                           description='', readonly=0, required=0,
                           key_types=(Int, Float))
        try:
            field.validate(None)
            field.validate({5.3: 'a'})
            field.validate({2: 'a', 2.3: 'b'})
        except ValidationError, e:
            self.unexpectedValidsationError(e)
        self.assertRaisesErrorNames(ErrorNames.WrongContainedType,
                                    field.validate, {'': 1} )
        self.assertRaisesErrorNames(ErrorNames.WrongContainedType,
                                    field.validate, {(): 'a'} )


def test_suite():
    return TestSuite((
        makeSuite(DictTest),
        ))

if __name__ == '__main__':
    main(defaultTest='test_suite')


=== Added File Zope3/lib/python/Schema/tests/testIntField.py ===
##############################################################################
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (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.
#
##############################################################################
"""
$Id: testIntField.py,v 1.1 2002/07/14 18:51:27 faassen Exp $
"""
from unittest import TestSuite, main, makeSuite
from Schema import Int, ErrorNames
from testField import FieldTest
from Schema.Exceptions import ValidationError

class IntTest(FieldTest):
    """Test the Int Field."""

    def testValidate(self):
        field = Int(id="field", title='Int field', description='',
                        readonly=0, required=0)
        try:
            field.validate(None)
            field.validate(10)
            field.validate(0)
            field.validate(-1)
        except ValidationError, e:
            self.unexpectedValidationError(e)
            
    def testValidateRequired(self):
        field = Int(id="field", title='Int field', description='',
                        readonly=0, required=1)
        try:
            field.validate(10)
            field.validate(0)
            field.validate(-1)
        except ValidationError, e:
            self.unexpectedValidationError(e)
            
        self.assertRaisesErrorNames(ErrorNames.RequiredMissing,
                                    field.validate, None)

    def testAllowedValues(self):
        field = Int(id="field", title='Int field', description='',
                        readonly=0, required=0, allowed_values=(-1, 2))
        try:
            field.validate(None)
            field.validate(2)
        except ValidationError, e:
            self.unexpectedValidationError(e)
            
        self.assertRaisesErrorNames(ErrorNames.InvalidValue,
                                    field.validate, 4)

    def testValidateMin(self):
        field = Int(id="field", title='Int field', description='',
                        readonly=0, required=0, min=10)
        try:
            field.validate(None)
            field.validate(10)
            field.validate(20)
        except ValidationError, e:
            self.unexpectedValidationError(e)
        self.assertRaisesErrorNames(ErrorNames.TooSmall, field.validate, 9)
        self.assertRaisesErrorNames(ErrorNames.TooSmall, field.validate, -10)

    def testValidateMax(self):
        field = Int(id="field", title='Int field', description='',
                        readonly=0, required=0, max=10)
        try:
            field.validate(None)
            field.validate(5)
            field.validate(9)
        except ValidationError, e:
            self.unexpectedValidationError(e)
            
        self.assertRaisesErrorNames(ErrorNames.TooBig, field.validate, 11)
        self.assertRaisesErrorNames(ErrorNames.TooBig, field.validate, 20)

    def testValidateMinAndMax(self):
        field = Int(id="field", title='Int field', description='',
                        readonly=0, required=0, min=0, max=10)
        try:
            field.validate(None)
            field.validate(0)
            field.validate(5)
            field.validate(10)
        except ValidationError, e:
            self.unexpectedValidationError(e)
            
        self.assertRaisesErrorNames(ErrorNames.TooSmall, field.validate, -10)
        self.assertRaisesErrorNames(ErrorNames.TooSmall, field.validate, -1)
        self.assertRaisesErrorNames(ErrorNames.TooBig, field.validate, 11)
        self.assertRaisesErrorNames(ErrorNames.TooBig, field.validate, 20)


def test_suite():
    return TestSuite((
        makeSuite(IntTest),
        ))

if __name__ == '__main__':
    main(defaultTest='test_suite')


=== Added File Zope3/lib/python/Schema/tests/testStrField.py ===
##############################################################################
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (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.
#
##############################################################################
"""
$Id: testStrField.py,v 1.1 2002/07/14 18:51:27 faassen Exp $
"""
from unittest import TestSuite, main, makeSuite
from Schema import Str, ErrorNames
from testField import FieldTest

class StrTest(FieldTest):
    """Test the Str Field."""

    def testValidate(self):
        field = Str(id='field', title='Str field', description='',
                       readonly=0, required=0)
        try:
            field.validate(None)
            field.validate('foo')
            field.validate('')
        except ValidationError, e:
            self.unexpectedValidationError(e)
        
    def testValidateRequired(self):
        field = Str(id='field', title='Str field', description='',
                       readonly=0, required=1)
        try:
            field.validate('foo')
        except ValidationError, e:
            self.unexpectedValidationError(e)
        
        self.assertRaisesErrorNames(ErrorNames.RequiredMissing,
                                    field.validate, None)
        self.assertRaisesErrorNames(ErrorNames.RequiredEmptyStr,
                                    field.validate, '')

    def testAllowedValues(self):
        field = Str(id="field", title='Str field', description='',
                        readonly=0, required=0, allowed_values=('foo', 'bar'))
        try:
            field.validate(None)
            field.validate('foo')
        except ValidationError, e:
            self.unexpectedValidationError(e)
            
        self.assertRaisesErrorNames(ErrorNames.InvalidValue,
                                    field.validate, 'blah')

    def testValidateMinLength(self):
        field = Str(id='field', title='Str field', description='',
                       readonly=0, required=0, min_length=3)
        try:
            field.validate(None)
            field.validate('333')
            field.validate('55555')
        except ValidationError, e:
            self.unexpectedValidationError(e)
            
        self.assertRaisesErrorNames(ErrorNames.TooShort, field.validate, '')
        self.assertRaisesErrorNames(ErrorNames.TooShort, field.validate, '22')
        self.assertRaisesErrorNames(ErrorNames.TooShort, field.validate, '1')

    def testValidateMaxLength(self):
        field = Str(id='field', title='Str field', description='',
                       readonly=0, required=0, max_length=5)
        try:
            field.validate(None)
            field.validate('')
            field.validate('333')
            field.validate('55555')
        except ValidationError, e:
            self.unexpectedValidationError(e)
        
        self.assertRaisesErrorNames(ErrorNames.TooLong, field.validate,
                                    '666666')
        self.assertRaisesErrorNames(ErrorNames.TooLong, field.validate,
                                    '999999999')

    def testValidateMinLengthAndMaxLength(self):
        field = Str(id='field', title='Str field', description='',
                       readonly=0, required=0, min_length=3, max_length=5)

        try:
            field.validate(None)
            field.validate('333')
            field.validate('4444')
            field.validate('55555')
        except ValidationError, e:
            self.unexpectedValidationError(e)
            
        self.assertRaisesErrorNames(ErrorNames.TooShort, field.validate, '22')
        self.assertRaisesErrorNames(ErrorNames.TooShort, field.validate, '22')
        self.assertRaisesErrorNames(ErrorNames.TooLong, field.validate,
                                    '666666')
        self.assertRaisesErrorNames(ErrorNames.TooLong, field.validate,
                                    '999999999')


def test_suite():
    return TestSuite((
        makeSuite(StrTest),
        ))

if __name__ == '__main__':
    main(defaultTest='test_suite')


=== Zope3/lib/python/Schema/tests/testField.py 1.4 => 1.5 ===
             return
         self.fail('Expected ValidationError')
 
+    def unexpectedValidationError(self, e):
+        self.fail("Expected no ValidationError, but we got %s" % e.error_name)
+        
     def testValidate(self):
         field = Field(id="field", title='Not required field', description='',
                       readonly=0, required=0)
-        self.assertEqual(None, field.validate(None))
-        self.assertEqual('foo', field.validate('foo'))
-        self.assertEqual(1, field.validate(1))
-        self.assertEqual(0, field.validate(0))
-        self.assertEqual('', field.validate(''))
-
+        try:
+            field.validate(None)
+            field.validate('foo')
+            field.validate(1)
+            field.validate(0)
+            field.validate('')
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
+    
     def testValidateRequired(self):
         field = Field(id="field", title='Required field', description='',
                       readonly=0, required=1)
-        self.assertEqual('foo', field.validate('foo'))
-        self.assertEqual(1, field.validate(1))
-        self.assertEqual(0, field.validate(0))
-        self.assertEqual('', field.validate(''))
+        try:
+            field.validate('foo')
+            field.validate(1)
+            field.validate(0)
+            field.validate('')
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
+            
         self.assertRaisesErrorNames(ErrorNames.RequiredMissing,
                                     field.validate, None)
 


=== Zope3/lib/python/Schema/tests/testFloatField.py 1.1 => 1.2 ===
 from unittest import TestSuite, main, makeSuite
 from Schema import Float, ErrorNames
 from testField import FieldTest
+from Schema.Exceptions import ValidationError
 
 class FloatTest(FieldTest):
     """Test the Float Field."""
@@ -24,53 +25,72 @@
     def testValidate(self):
         field = Float(id="field", title='Float field', description='',
                         readonly=0, required=0)
-        self.assertEqual(None, field.validate(None))
-        self.assertEqual(10.0, field.validate(10.0))
-        self.assertEqual(0.93, field.validate(0.93))
-        self.assertEqual(1000.0003, field.validate(1000.0003))
-
+        try:
+            field.validate(None)
+            field.validate(10.0)
+            field.validate(0.93)
+            field.validate(1000.0003)
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
+            
     def testValidateRequired(self):
         field = Float(id="field", title='Float field', description='',
                         readonly=0, required=1)
-        self.assertEqual(10.0, field.validate(10.0))
-        self.assertEqual(0.93, field.validate(0.93))
-        self.assertEqual(1000.0003, field.validate(1000.0003))
-        self.assertRaisesErrorNames(ErrorNames.RequiredMissing,
-                                    field.validate, None)
+        try:
+            field.validate(10.0)
+            field.validate(0.93)
+            field.validate(1000.0003)
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
 
+        self.assertRaisesErrorNames(ErrorNames.RequiredMissing,
+                                    field.validate, None)        
     def testAllowedValues(self):
         field = Float(id="field", title='Integer field', description='',
                         readonly=0, required=0, allowed_values=(0.1, 2.6))
-        self.assertEqual(None, field.validate(None))
-        self.assertEqual(2.6, field.validate(2.6))
+        try:
+            field.validate(None)
+            field.validate(2.6)
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
+            
         self.assertRaisesErrorNames(ErrorNames.InvalidValue,
                                     field.validate, -5.4)
 
     def testValidateMin(self):
         field = Float(id="field", title='Float field', description='',
                         readonly=0, required=0, min=10.5)
-        self.assertEqual(None, field.validate(None))
-        self.assertEqual(10.6, field.validate(10.6))
-        self.assertEqual(20.2, field.validate(20.2))
+        try:
+            field.validate(None)
+            field.validate(10.6)
+            field.validate(20.2)
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
         self.assertRaisesErrorNames(ErrorNames.TooSmall, field.validate, -9)
         self.assertRaisesErrorNames(ErrorNames.TooSmall, field.validate, 10.4)
 
     def testValidateMax(self):
         field = Float(id="field", title='Float field', description='',
                         readonly=0, required=0, max=10.5)
-        self.assertEqual(None, field.validate(None))
-        self.assertEqual(5.3, field.validate(5.3))
-        self.assertEqual(-9.1, field.validate(-9.1))
+        try:
+            field.validate(None)
+            field.validate(5.3)
+            field.validate(-9.1)
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
         self.assertRaisesErrorNames(ErrorNames.TooBig, field.validate, 10.51)
         self.assertRaisesErrorNames(ErrorNames.TooBig, field.validate, 20.7)
 
     def testValidateMinAndMax(self):
         field = Float(id="field", title='Float field', description='',
                         readonly=0, required=0, min=-0.6, max=10.1)
-        self.assertEqual(None, field.validate(None))
-        self.assertEqual(0, field.validate(0))
-        self.assertEqual(-0.03, field.validate(-0.03))
-        self.assertEqual(10.0001, field.validate(10.0001))
+        try:
+            field.validate(None)
+            field.validate(0)
+            field.validate(-0.03)
+            field.validate(10.0001)
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
         self.assertRaisesErrorNames(ErrorNames.TooSmall, field.validate, -10)
         self.assertRaisesErrorNames(ErrorNames.TooSmall, field.validate, -1.6)
         self.assertRaisesErrorNames(ErrorNames.TooBig, field.validate, 11.45)
@@ -79,9 +99,12 @@
     def testValidateDecimals(self):
         field = Float(id="field", title='Float field', description='',
                         readonly=0, required=0, decimals=2)
-        self.assertEqual(None, field.validate(None))
-        self.assertEqual(5.3, field.validate(5.3))
-        self.assertEqual(-9.11, field.validate(-9.11))
+        try:
+            field.validate(None)
+            field.validate(5.3)
+            field.validate(-9.11)
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
         self.assertRaisesErrorNames(ErrorNames.TooManyDecimals,
                                     field.validate, 10.511)
         self.assertRaisesErrorNames(ErrorNames.TooManyDecimals,


=== Zope3/lib/python/Schema/tests/testListField.py 1.2 => 1.3 ===
     def testValidate(self):
         field = List(id="field", title='List field', description='',
                         readonly=0, required=0)
-        self.assertEqual(None, field.validate(None))
-        self.assertEqual( [] , field.validate([]))
-        self.assertEqual( [1, 2] , field.validate( [1, 2] ))
-        self.assertEqual( [3,] , field.validate( [3,] ))
-
+        try:
+            field.validate(None)
+            field.validate([])
+            field.validate([1, 2])
+            field.validate([3,])
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
+            
     def testValidateRequired(self):
         field = List(id="field", title='List field', description='',
                         readonly=0, required=1)
-        self.assertEqual( [] , field.validate([]))
-        self.assertEqual( [1, 2] , field.validate( [1, 2] ))
-        self.assertEqual( [3,] , field.validate( [3,] ))
+        try:
+            field.validate([])
+            field.validate([1, 2])
+            field.validate([3,])
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
+            
         self.assertRaisesErrorNames(ErrorNames.RequiredMissing,
                                     field.validate, None)
 
     def testValidateMinValues(self):
         field = List(id="field", title='List field', description='',
                         readonly=0, required=0, min_values=2)
-        self.assertEqual(None, field.validate(None))
-        self.assertEqual( [1, 2], field.validate( [1, 2] ))
-        self.assertEqual( [1, 2, 3], field.validate( [1, 2, 3] ))
+        try:
+            field.validate(None)
+            field.validate([1, 2])
+            field.validate([1, 2, 3])
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
         self.assertRaisesErrorNames(ErrorNames.NotEnoughElements,
                                     field.validate, [])
         self.assertRaisesErrorNames(ErrorNames.NotEnoughElements,
@@ -52,9 +62,12 @@
     def testValidateMaxValues(self):
         field = List(id="field", title='List field', description='',
                         readonly=0, required=0, max_values=2)
-        self.assertEqual(None, field.validate(None))
-        self.assertEqual( [], field.validate( [] ))
-        self.assertEqual( [1, 2], field.validate( [1, 2] ))
+        try:
+            field.validate(None)
+            field.validate([])
+            field.validate([1, 2])
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
         self.assertRaisesErrorNames(ErrorNames.TooManyElements,
                                     field.validate, [1, 2, 3, 4])
         self.assertRaisesErrorNames(ErrorNames.TooManyElements,
@@ -63,9 +76,12 @@
     def testValidateMinValuesAndMaxValues(self):
         field = List(id="field", title='List field', description='',
                         readonly=0, required=0, min_values=1, max_values=2)
-        self.assertEqual(None, field.validate(None))
-        self.assertEqual( [1, ], field.validate( [1, ] ))
-        self.assertEqual( [1, 2], field.validate( [1, 2] ))
+        try:
+            field.validate(None)
+            field.validate([1, ])
+            field.validate([1, 2])
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
         self.assertRaisesErrorNames(ErrorNames.NotEnoughElements,
                                     field.validate, [])
         self.assertRaisesErrorNames(ErrorNames.TooManyElements,
@@ -74,9 +90,12 @@
     def testValidateValueTypes(self):
         field = List(id="field", title='List field', description='',
                         readonly=0, required=0, value_types=(Int, Float))
-        self.assertEqual(None, field.validate(None))
-        self.assertEqual( [5.3,] , field.validate( [5.3,] ))
-        self.assertEqual( [2, 2.3], field.validate( [2, 2.3] ))
+        try:
+            field.validate(None)
+            field.validate([5.3,])
+            field.validate([2, 2.3])
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
         self.assertRaisesErrorNames(ErrorNames.WrongContainedType,
                                     field.validate, ['',] )
         self.assertRaisesErrorNames(ErrorNames.WrongContainedType,


=== Zope3/lib/python/Schema/tests/testSchema.py 1.5 => 1.6 ===
         dict = {'title': 'A title',
                 'description': 'A particular description.',
                 'spam': 'Spam'}
-        self.assertEqual(1, validateMapping(ISchemaTest, dict))
-
+        try:
+            validateMapping(ISchemaTest, dict)
+        except ValidationError, e:
+            self.fail("Unexpected ValidationError: %s" % e.error_name)
 
     def testValidateBadMapping(self):
         dict = {'title': 'A title'}
         self.assertRaises(ValidationError, validateMapping, ISchemaTest, dict)
 
-
     def testValidateMappingAll(self):
         dict = {'title': 'A title',
                 'description': 'A particular description.',
                 'spam': 'Spam',
                 }
-        self.assertEqual(1, validateMappingAll(ISchemaTest, dict))
-
+        try:
+            validateMappingAll(ISchemaTest, dict)
+        except ValidationErrorsAll:
+            self.fail("Unexpected ValidationErrors")
 
     def test_validateBadMappingAll(self):
         dict = {'title': 'A title'}
@@ -73,7 +76,7 @@
             self.assertRaises(ValidationError, validateMapping, ISchemaTest,
                               dict)
             return
-        self.fail()
+        self.fail('Expected ValidationErrors, but none detected')
 
 
 def test_suite():


=== Zope3/lib/python/Schema/tests/testTupleField.py 1.2 => 1.3 ===
     def testValidate(self):
         field = Tuple(id="field", title='Tuple field', description='',
                         readonly=0, required=0)
-        self.assertEqual(None, field.validate(None))
-        self.assertEqual( () , field.validate(()))
-        self.assertEqual( (1, 2) , field.validate( (1, 2) ))
-        self.assertEqual( (3,) , field.validate( (3,) ))
-
+        try:
+            field.validate(None)
+            field.validate(())
+            field.validate((1, 2))
+            field.validate((3,))
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
+            
     def testValidateRequired(self):
         field = Tuple(id="field", title='Tuple field', description='',
                         readonly=0, required=1)
-        self.assertEqual( () , field.validate(()))
-        self.assertEqual( (1, 2) , field.validate( (1, 2) ))
-        self.assertEqual( (3,) , field.validate( (3,) ))
+        try:
+            field.validate(())
+            field.validate((1, 2))
+            field.validate((3,))
+        except ValidationError, e:
+            self.unexpectedValidationError(e)     
+
         self.assertRaisesErrorNames(ErrorNames.RequiredMissing,
                                     field.validate, None)
 
     def testValidateMinValues(self):
         field = Tuple(id="field", title='Tuple field', description='',
                         readonly=0, required=0, min_values=2)
-        self.assertEqual(None, field.validate(None))
-        self.assertEqual( (1, 2), field.validate( (1, 2) ))
-        self.assertEqual( (1, 2, 3), field.validate( (1, 2, 3) ))
+        try:
+            field.validate(None)
+            field.validate((1, 2))
+            field.validate((1, 2, 3))
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
+
         self.assertRaisesErrorNames(ErrorNames.NotEnoughElements,
                                     field.validate, ())
         self.assertRaisesErrorNames(ErrorNames.NotEnoughElements,
@@ -52,9 +63,13 @@
     def testValidateMaxValues(self):
         field = Tuple(id="field", title='Tuple field', description='',
                         readonly=0, required=0, max_values=2)
-        self.assertEqual(None, field.validate(None))
-        self.assertEqual( (), field.validate( () ))
-        self.assertEqual( (1, 2), field.validate( (1, 2) ))
+        try:
+            field.validate(None)
+            field.validate(())
+            field.validate((1, 2))
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
+
         self.assertRaisesErrorNames(ErrorNames.TooManyElements,
                                     field.validate, (1, 2, 3, 4))
         self.assertRaisesErrorNames(ErrorNames.TooManyElements,
@@ -63,9 +78,13 @@
     def testValidateMinValuesAndMaxValues(self):
         field = Tuple(id="field", title='Tuple field', description='',
                         readonly=0, required=0, min_values=1, max_values=2)
-        self.assertEqual(None, field.validate(None))
-        self.assertEqual( (1, ), field.validate( (1, ) ))
-        self.assertEqual( (1, 2), field.validate( (1, 2) ))
+        try:
+            field.validate(None)
+            field.validate((1, ))
+            field.validate((1, 2))
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
+            
         self.assertRaisesErrorNames(ErrorNames.NotEnoughElements,
                                     field.validate, ())
         self.assertRaisesErrorNames(ErrorNames.TooManyElements,
@@ -74,9 +93,12 @@
     def testValidateValueTypes(self):
         field = Tuple(id="field", title='Tuple field', description='',
                         readonly=0, required=0, value_types=(Int, Float))
-        self.assertEqual(None, field.validate(None))
-        self.assertEqual( (5.3,) , field.validate( (5.3,) ))
-        self.assertEqual( (2, 2.3), field.validate( (2, 2.3) ))
+        try:
+            field.validate(None)
+            field.validate((5.3,))
+            field.validate((2, 2.3))
+        except ValidationError, e:
+            self.unexpectedValidationError(e)
         self.assertRaisesErrorNames(ErrorNames.WrongContainedType,
                                     field.validate, ('',) )
         self.assertRaisesErrorNames(ErrorNames.WrongContainedType,