[Checkins] SVN: zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_ More widget tests moved over to zope.formlib.

Martijn Faassen faassen at startifact.com
Wed Dec 30 16:41:50 EST 2009


Log message for revision 107395:
  More widget tests moved over to zope.formlib.
  

Changed:
  D   zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_checkboxwidget.py
  D   zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_filewidget.py
  D   zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_floatwidget.py
  D   zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_selectwidget.py
  D   zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_sequencewidget.py
  D   zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_textareawidget.py
  D   zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_textwidget.py

-=-
Deleted: zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_checkboxwidget.py
===================================================================
--- zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_checkboxwidget.py	2009-12-30 21:41:42 UTC (rev 107394)
+++ zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_checkboxwidget.py	2009-12-30 21:41:49 UTC (rev 107395)
@@ -1,180 +0,0 @@
-##############################################################################
-#
-# 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.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.
-#
-##############################################################################
-"""Checkbox Widget tests
-
-$Id$
-"""
-import unittest
-from zope.testing import doctest
-from zope.formlib.interfaces import IInputWidget
-from zope.app.form.browser import CheckBoxWidget
-from zope.publisher.browser import TestRequest
-from zope.schema import Bool
-from zope.interface.verify import verifyClass
-
-from zope.formlib.interfaces import MissingInputError
-from zope.formlib.tests.test_browserwidget import SimpleInputWidgetTest
-
-
-class CheckBoxWidgetTest(SimpleInputWidgetTest):
-    """Documents and tests thec checkbox widget.
-
-        >>> verifyClass(IInputWidget, CheckBoxWidget)
-        True
-
-    The checkbox widget works with Bool fields:
-
-        >>> field = Bool(__name__='foo', title=u'on')
-        >>> request = TestRequest()
-        >>> widget = CheckBoxWidget(field, request)
-
-    hasInput returns True when the request contains the field.<name>.used
-    value:
-
-        >>> 'field.foo.used' in request.form
-        False
-        >>> widget.hasInput()
-        False
-        >>> request.form['field.foo.used'] = ''
-        >>> widget.hasInput()
-        True
-
-    getInputValue returns True when field.<name> equals (and only equals) 'on':
-
-        >>> 'field.foo' in request.form
-        False
-        >>> widget.getInputValue()
-        False
-        >>> request.form['field.foo'] = 'true'
-        >>> widget.getInputValue()
-        False
-        >>> request.form['field.foo'] = 'on'
-        >>> widget.getInputValue()
-        True
-
-    Below is HTML output of rendered checkbox widgets. We will first define
-    a helper method condense the HTML output for display in this test:
-
-        >>> def normalize(s):
-        ...   return '\\n  '.join(s.split())
-
-    Default widget rendering:
-
-        >>> print normalize( widget() )
-        <input
-          class="hiddenType"
-          id="field.foo.used"
-          name="field.foo.used"
-          type="hidden"
-          value=""
-          />
-          <input
-          class="checkboxType"
-          checked="checked"
-          id="field.foo"
-          name="field.foo"
-          type="checkbox"
-          value="on"
-          />
-
-    Hidden rendering:
-
-        >>> print normalize( widget.hidden() )
-        <input
-          class="hiddenType"
-          id="field.foo"
-          name="field.foo"
-          type="hidden"
-          value="on"
-          />
-
-    Calling setRenderedValue will change what gets output:
-
-        >>> widget.setRenderedValue(False)
-        >>> print normalize( widget() )
-        <input
-          class="hiddenType"
-          id="field.foo.used"
-          name="field.foo.used"
-          type="hidden"
-          value=""
-          />
-          <input
-          class="checkboxType"
-          id="field.foo"
-          name="field.foo"
-          type="checkbox"
-          value="on"
-          />
-
-    The checkbox widget does not support None values, so a Bool required
-    constraint will always be met with checkbox input:
-
-        >>> field.required = True
-        >>> widget.getInputValue()
-        True
-    """
-
-    _FieldFactory = Bool
-    _WidgetFactory = CheckBoxWidget
-
-    def testProperties(self):
-        self.assertEqual(self._widget.tag, 'input')
-        self.assertEqual(self._widget.type, 'checkbox')
-        self.assertEqual(self._widget.cssClass, '')
-        self.assertEqual(self._widget.extra, '')
-        self.assertEqual(self._widget.default, 0)
-
-    def testRender(self):
-        value = 1
-        self._widget.setRenderedValue(value)
-        check_list = ('type="checkbox"', 'id="field.foo"',
-                      'name="field.foo"', 'checked="checked"')
-        self.verifyResult(self._widget(), check_list)
-        value = 0
-        self._widget.setRenderedValue(value)
-        check_list = check_list[:-1]
-        self.verifyResult(self._widget(), check_list)
-        check_list = ('type="hidden"',) + check_list[1:-1]
-        self.verifyResult(self._widget.hidden(), check_list)
-        check_list = ('style="color: red"',) + check_list
-        self._widget.extra = 'style="color: red"'
-        self.verifyResult(self._widget.hidden(), check_list)
-
-    def test_getInputValue(self):
-        self._widget.request.form['field.foo'] = 'on'
-        self.assertEqual(self._widget.getInputValue(), True)
-        self._widget.request.form['field.foo'] = 'positive'
-        self.assertEqual(self._widget.getInputValue(), False)
-        del self._widget.request.form['field.foo']
-        self._widget.request.form['field.foo.used'] = ''
-        self.assertEquals(self._widget.getInputValue(), False)
-        del self._widget.request.form['field.foo.used']
-        self.assertRaises(MissingInputError, self._widget.getInputValue)
-
-    def test_required(self):
-        # checkbox widgets are never required, since there's no way to
-        # set it to "no value"
-        self.failIf(self._widget.required)
-        self.assert_(self._widget.context.required)
-
-
-def test_suite():
-    return unittest.TestSuite((
-        unittest.makeSuite(CheckBoxWidgetTest),
-        doctest.DocTestSuite(),
-        ))
-
-if __name__=='__main__':
-    unittest.main(defaultTest='test_suite')

Deleted: zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_filewidget.py
===================================================================
--- zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_filewidget.py	2009-12-30 21:41:42 UTC (rev 107394)
+++ zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_filewidget.py	2009-12-30 21:41:49 UTC (rev 107395)
@@ -1,83 +0,0 @@
-##############################################################################
-#
-# 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.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.
-#
-##############################################################################
-"""File Widget tests
-
-$Id$
-"""
-import unittest
-
-from zope.testing import doctest
-from StringIO import StringIO
-from zope.formlib.interfaces import IInputWidget
-from zope.app.form.browser import FileWidget
-
-from zope.formlib.tests.test_browserwidget import (
-    SimpleInputWidgetTest)
-
-from zope.interface.verify import verifyClass
-
-
-class FileWidgetTest(SimpleInputWidgetTest):
-    """Documents and tests the file widget.
-
-        >>> verifyClass(IInputWidget, FileWidget)
-        True
-    """
-
-    _WidgetFactory = FileWidget
-
-    def setUp(self):
-        super(FileWidgetTest, self).setUp()
-        file = StringIO('Foo Value')
-        file.filename = 'test.txt'
-        self._widget.request.form['field.foo'] = file
-
-    def testProperties(self):
-        self.assertEqual(self._widget.tag, 'input')
-        self.assertEqual(self._widget.type, 'file')
-        self.assertEqual(self._widget.cssClass, '')
-        self.assertEqual(self._widget.extra, '')
-        self.assertEqual(self._widget.default, '')
-        self.assertEqual(self._widget.displayWidth, 20)
-        self.assertEqual(self._widget.displayMaxWidth, '')
-
-    def test_hasInput(self): # override the usual one
-        del self._widget.request.form['field.foo']
-        self._widget.request.form['field.foo.used'] = ''
-        self.failUnless(self._widget.hasInput())
-        del self._widget.request.form['field.foo.used']
-        self.failIf(self._widget.hasInput())
-
-    def testRender(self):
-        value = 'Foo Value'
-        self._widget.setRenderedValue(value)
-        check_list = ('type="file"', 'id="field.foo"', 'name="field.foo"',
-                      'size="20"')
-
-        self.verifyResult(self._widget(), check_list)
-        check_list = ('type="hidden"',) + check_list[1:-1]
-        self.verifyResult(self._widget.hidden(), check_list)
-        check_list = ('style="color: red"',) + check_list
-        self._widget.extra = 'style="color: red"'
-        self.verifyResult(self._widget.hidden(), check_list)
-
-
-def test_suite():
-    return unittest.TestSuite((
-        unittest.makeSuite(FileWidgetTest),
-        doctest.DocTestSuite(),
-        ))
-
-if __name__=='__main__':
-    unittest.main(defaultTest='test_suite')

Deleted: zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_floatwidget.py
===================================================================
--- zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_floatwidget.py	2009-12-30 21:41:42 UTC (rev 107394)
+++ zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_floatwidget.py	2009-12-30 21:41:49 UTC (rev 107395)
@@ -1,64 +0,0 @@
-##############################################################################
-#
-# 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.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.
-#
-##############################################################################
-"""Float Widget tests
-
-$Id$
-"""
-import unittest
-from zope.testing import doctest
-from zope.formlib.tests.test_browserwidget import SimpleInputWidgetTest
-from zope.formlib.interfaces import IInputWidget
-from zope.app.form.browser import FloatWidget
-from zope.formlib.interfaces import ConversionError, WidgetInputError
-from zope.interface.verify import verifyClass
-
-from zope.schema import Float
-
-
-class FloatWidgetTest(SimpleInputWidgetTest):
-    """Documents and tests the float widget.
-        
-        >>> verifyClass(IInputWidget, FloatWidget)
-        True
-    """
-
-    _FieldFactory = Float
-    _WidgetFactory = FloatWidget
-
-    def test_hasInput(self):
-        del self._widget.request.form['field.foo']
-        self.failIf(self._widget.hasInput())
-        # widget has input, even if input is an empty string
-        self._widget.request.form['field.foo'] = u''
-        self.failUnless(self._widget.hasInput())
-        self._widget.request.form['field.foo'] = u'123'
-        self.failUnless(self._widget.hasInput())
-
-    def test_getInputValue(self):
-        self._widget.request.form['field.foo'] = u''
-        self.assertRaises(WidgetInputError, self._widget.getInputValue)
-        self._widget.request.form['field.foo'] = u'123.45'
-        self.assertEquals(self._widget.getInputValue(), 123.45)
-        self._widget.request.form['field.foo'] = u'abc'
-        self.assertRaises(ConversionError, self._widget.getInputValue)
-
-
-def test_suite():
-    return unittest.TestSuite((
-        unittest.makeSuite(FloatWidgetTest),
-        doctest.DocTestSuite(),
-        ))
-
-if __name__=='__main__':
-    unittest.main(defaultTest='test_suite')

Deleted: zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_selectwidget.py
===================================================================
--- zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_selectwidget.py	2009-12-30 21:41:42 UTC (rev 107394)
+++ zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_selectwidget.py	2009-12-30 21:41:49 UTC (rev 107395)
@@ -1,79 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2004 Zope Corporation 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.
-#
-##############################################################################
-"""Select Widget Tests
-
-$Id$
-"""
-import unittest
-
-from zope.schema import Choice, List
-from zope.app.form.browser import SelectWidget
-from zope.publisher.browser import TestRequest
-
-choice = Choice(
-    title=u"Number",
-    description=u"The Number",
-    values=[1, 2, 3])
-
-sequence = List(
-    title=u"Numbers",
-    description=u"The Numbers",
-    value_type=choice)
-
-
-class SelectWidgetTest(unittest.TestCase):
-    
-    def _makeWidget(self, form):
-        request = TestRequest(form=form)
-        return SelectWidget(sequence, choice.vocabulary, request) 
-
-
-select_html = '''<div>
-<div class="value">
-<select id="field.terms" name="field.terms" size="5" >
-<option value="&lt; foo">&lt; foo</option>
-<option value="bar/&gt;">bar/&gt;</option>
-<option value="&amp;blah&amp;">&amp;blah&amp;</option>
-</select>
-</div>
-<input name="field.terms-empty-marker" type="hidden" value="1" />
-</div>'''
-
-class SelectWidgetHTMLEncodingTest(unittest.TestCase):
-    
-    def testOptionEncoding(self):
-        choice = Choice(
-            title=u"Number",
-            description=u"The Number",
-            values=['< foo', 'bar/>', '&blah&'])
-
-        sequence = List(
-            __name__="terms",
-            title=u"Numbers",
-            description=u"The Numbers",
-            value_type=choice)
-        
-        request = TestRequest()
-        sequence = sequence.bind(object())
-        widget = SelectWidget(sequence, choice.vocabulary, request) 
-        self.assertEqual(widget(), select_html)
-
-def test_suite():
-    return unittest.TestSuite((
-        unittest.makeSuite(SelectWidgetTest),
-        unittest.makeSuite(SelectWidgetHTMLEncodingTest)
-        ))
-
-if __name__ == '__main__':
-    unittest.main(defaultTest="test_suite")

Deleted: zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_sequencewidget.py
===================================================================
--- zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_sequencewidget.py	2009-12-30 21:41:42 UTC (rev 107394)
+++ zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_sequencewidget.py	2009-12-30 21:41:49 UTC (rev 107395)
@@ -1,434 +0,0 @@
-##############################################################################
-#
-# 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.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.
-#
-##############################################################################
-"""Sequence Field Widget tests.
-
-$Id$
-"""
-import unittest
-from zope.interface import Interface, implements
-from zope.schema import Tuple, List, TextLine
-from zope.schema.interfaces import ITextLine
-from zope.publisher.browser import TestRequest
-from zope.testing import doctest
-
-from zope.app.testing import ztapi, setup
-from zope.app.form.browser import TextWidget, ObjectWidget, DisplayWidget
-from zope.app.form.browser import TupleSequenceWidget, ListSequenceWidget
-from zope.app.form.browser import SequenceDisplayWidget
-from zope.app.form.browser import SequenceWidget
-from zope.formlib.interfaces import IDisplayWidget
-from zope.formlib.interfaces import IInputWidget, MissingInputError
-from zope.formlib.interfaces import IWidgetInputError, WidgetInputError
-from zope.app.form.browser.interfaces import IWidgetInputErrorView
-from zope.formlib.widget import CustomWidgetFactory
-from zope.app.form.browser.exception import WidgetInputErrorView
-
-from zope.app.form.browser.tests.support import VerifyResults
-from zope.formlib.tests.test_browserwidget import BrowserWidgetTest
-
-
-class SequenceWidgetTestHelper(object):
-
-    def setUpContent(self, desc=u'', title=u'Foo Title'):
-        class ITestContent(Interface):
-            foo = self._FieldFactory(
-                    title=title,
-                    description=desc,
-                    )
-        class TestObject(object):
-            implements(ITestContent)
-
-        self.content = TestObject()
-        self.field = ITestContent['foo'].bind(self.content)
-        self.request = TestRequest(HTTP_ACCEPT_LANGUAGE='pl')
-        self.request.form['field.foo'] = u'Foo Value'
-        self._widget = self._WidgetFactory(
-            self.field, self.field.value_type, self.request)
-
-    def setUp(self):
-        setup.placefulSetUp()
-        self.setUpContent()
-
-    def _FieldFactory(self, **kw):
-        kw.update({
-            '__name__': u'foo', 
-            'value_type': TextLine(__name__=u'bar')})
-        return Tuple(**kw)
-
-
-class SequenceWidgetTest(SequenceWidgetTestHelper, BrowserWidgetTest):
-    """Documents and tests the tuple and list (sequence) widgets.
-
-        >>> from zope.interface.verify import verifyClass
-        >>> verifyClass(IInputWidget, TupleSequenceWidget)
-        True
-        >>> verifyClass(IInputWidget, ListSequenceWidget)
-        True
-    """
-
-    _WidgetFactory = TupleSequenceWidget
-
-    def testRender(self):
-        pass
-
-    def setUp(self):
-        super(SequenceWidgetTest, self).setUp()
-        ztapi.browserViewProviding(ITextLine, TextWidget, IInputWidget)
-        ztapi.browserViewProviding(IWidgetInputError, WidgetInputErrorView,
-                                   IWidgetInputErrorView)
-
-    def test_haveNoData(self):
-        self.failIf(self._widget.hasInput())
-
-    def test_hasInput(self):
-        self._widget.request.form['field.foo.count'] = u'0'
-        self.failUnless(self._widget.hasInput())
-
-    def test_customWidgetFactory(self):
-        """Verify that the widget can be constructed via the CustomWidgetFactory
-        (Issue #293)
-        """
-
-        value_type = TextLine(__name__=u'bar')
-        self.field = List( __name__=u'foo', value_type=value_type )
-        request = TestRequest()
-
-        # set up the custom widget factory and verify that it works
-        sw = CustomWidgetFactory(ListSequenceWidget)
-        widget = sw(self.field, request)
-        assert widget.subwidget is None
-        assert widget.context.value_type is value_type
-
-        # set up a variant that specifies the subwidget to use and verify it
-        class PollOption(object) : pass
-        ow = CustomWidgetFactory(ObjectWidget, PollOption)
-        sw = CustomWidgetFactory(ListSequenceWidget, subwidget=ow)
-        widget = sw(self.field, request)
-        assert widget.subwidget is ow
-        assert widget.context.value_type is value_type
-
-    def test_subwidget(self):
-        """This test verifies that the specified subwidget is not ignored.
-        (Issue #293)
-        """
-        self.field = List(__name__=u'foo',
-                          value_type=TextLine(__name__=u'bar'))
-        request = TestRequest()
-
-        class PollOption(object) : pass
-        ow = CustomWidgetFactory(ObjectWidget, PollOption)
-        widget = SequenceWidget(
-            self.field, self.field.value_type, request, subwidget=ow)
-        assert widget.subwidget is ow
-
-    def test_list(self):
-        self.field = List(
-            __name__=u'foo',
-            value_type=TextLine(__name__=u'bar'))
-        request = TestRequest()
-        widget = ListSequenceWidget(
-            self.field, self.field.value_type, request)
-        self.failIf(widget.hasInput())
-        self.assertRaises(MissingInputError, widget.getInputValue)
-
-        request = TestRequest(form={'field.foo.add': u'Add bar',
-                                    'field.foo.count': u'0'})
-        widget = ListSequenceWidget(
-            self.field, self.field.value_type, request)
-        self.assert_(widget.hasInput())
-        self.assertRaises(WidgetInputError, widget.getInputValue)
-
-        request = TestRequest(form={'field.foo.0.bar': u'Hello world!',
-                                    'field.foo.count': u'1'})
-        widget = ListSequenceWidget(
-            self.field, self.field.value_type, request)
-        self.assert_(widget.hasInput())
-        self.assertEquals(widget.getInputValue(), [u'Hello world!'])
-
-    def test_new(self):
-        request = TestRequest()
-        widget = TupleSequenceWidget(
-            self.field, self.field.value_type, request)
-        self.failIf(widget.hasInput())
-        self.assertRaises(MissingInputError, widget.getInputValue)
-        check_list = ('input', 'name="field.foo.add"')
-        self.verifyResult(widget(), check_list)
-
-    def test_add(self):
-        request = TestRequest(form={'field.foo.add': u'Add bar',
-                                    'field.foo.count': u'0'})
-        widget = TupleSequenceWidget(
-            self.field, self.field.value_type, request)
-        self.assert_(widget.hasInput())
-        self.assertRaises(WidgetInputError, widget.getInputValue)
-        check_list = (
-            'checkbox', 'field.foo.remove_0', 'input', 'field.foo.0.bar',
-            'submit', 'submit', 'field.foo.add'
-        )
-        self.verifyResult(widget(), check_list, inorder=True)
-
-    def test_request(self):
-        request = TestRequest(form={'field.foo.0.bar': u'Hello world!',
-                                    'field.foo.count': u'1'})
-        widget = TupleSequenceWidget(
-            self.field, self.field.value_type, request)
-        self.assert_(widget.hasInput())
-        self.assertEquals(widget.getInputValue(), (u'Hello world!',))
-
-    def test_existing(self):
-        request = TestRequest()
-        widget = TupleSequenceWidget(
-            self.field, self.field.value_type, request)
-        widget.setRenderedValue((u'existing',))
-        self.failIf(widget.hasInput())
-        self.assertRaises(MissingInputError, widget.getInputValue)
-        check_list = (
-            'checkbox', 'field.foo.remove_0', 'input', 'field.foo.0.bar',
-                'existing',
-            'submit', 'submit', 'field.foo.add',
-            'field.foo.count" value="1"',
-        )
-        self.verifyResult(widget(), check_list, inorder=True)
-        widget.setRenderedValue((u'existing', u'second'))
-        self.failIf(widget.hasInput())
-        self.assertRaises(MissingInputError, widget.getInputValue)
-        check_list = (
-            'checkbox', 'field.foo.remove_0', 'input', 'field.foo.0.bar',
-                'existing',
-            'checkbox', 'field.foo.remove_1', 'input', 'field.foo.1.bar',
-                'second',
-            'submit', 'submit', 'field.foo.add',
-            'field.foo.count" value="2"',
-        )
-        self.verifyResult(widget(), check_list, inorder=True)
-
-    def test_remove(self):
-        request = TestRequest(form={
-            'field.foo.remove_0': u'1',
-            'field.foo.0.bar': u'existing', 'field.foo.1.bar': u'second',
-            'field.foo.remove': u'Remove selected items',
-            'field.foo.count': u'2'})
-        widget = TupleSequenceWidget(
-            self.field, self.field.value_type, request)
-        widget.setRenderedValue((u'existing', u'second'))
-        self.assertEquals(widget.getInputValue(), (u'second',))
-        check_list = (
-            'checkbox', 'field.foo.remove_0', 'input', 'field.foo.0.bar',
-                'existing',
-            'checkbox', 'field.foo.remove_1', 'input', 'field.foo.1.bar',
-                'second',
-            'submit', 'submit', 'field.foo.add',
-            'field.foo.count" value="2"',
-        )
-        self.verifyResult(widget(), check_list, inorder=True)
-
-    def test_min(self):
-        request = TestRequest()
-        self.field.min_length = 2
-        widget = TupleSequenceWidget(
-            self.field, self.field.value_type, request)
-        widget.setRenderedValue((u'existing',))
-        self.assertRaises(MissingInputError, widget.getInputValue)
-        check_list = (
-            'input', 'field.foo.0.bar', 'existing',
-            'input', 'field.foo.1.bar', 'value=""',
-            'submit', 'field.foo.add'
-        )
-        s = widget()
-        self.verifyResult(s, check_list, inorder=True)
-        self.assertEquals(s.find('checkbox'), -1)
-
-    def test_max(self):
-        request = TestRequest()
-        self.field.max_length = 1
-        widget = TupleSequenceWidget(
-            self.field, self.field.value_type, request)
-        widget.setRenderedValue((u'existing',))
-        self.assertRaises(MissingInputError, widget.getInputValue)
-        s = widget()
-        self.assertEquals(s.find('field.foo.add'), -1)
-
-    def test_anonymousfield(self):
-        self.field = Tuple(__name__=u'foo', value_type=TextLine())
-        request = TestRequest()
-        widget = TupleSequenceWidget(
-            self.field, self.field.value_type, request)
-        widget.setRenderedValue((u'existing',))
-        s = widget()
-        check_list = (
-            'input', '"field.foo.0."', 'existing',
-            'submit', 'submit', 'field.foo.add'
-        )
-        s = widget()
-        self.verifyResult(s, check_list, inorder=True)
-
-    def test_usererror(self):
-        self.field = Tuple(__name__=u'foo',
-                           value_type=TextLine(__name__='bar'))
-        request = TestRequest(form={
-            'field.foo.0.bar': u'', 'field.foo.1.bar': u'nonempty',
-            'field.foo.count': u'2'})
-        widget = TupleSequenceWidget(
-            self.field, self.field.value_type, request)
-        s = widget()
-        # Rendering a widget should not raise errors!
-        result = widget()
-
-        data = widget._generateSequence()
-        self.assertEquals(data, [None, u'nonempty'])
-
-    def doctest_widgeterrors(self):
-        """Test that errors on subwidgets appear
-
-            >>> field = Tuple(__name__=u'foo',
-            ...               value_type=TextLine(__name__='bar'))
-            >>> request = TestRequest(form={
-            ...     'field.foo.0.bar': u'',
-            ...     'field.foo.1.bar': u'nonempty',
-            ...     'field.foo.count': u'2'})
-            >>> widget = TupleSequenceWidget(field, field.value_type, request)
-
-         If we render the widget, we see no errors:
-
-            >>> print widget()
-            <BLANKLINE>
-            ...
-            <tr>
-              <td>
-                 <input class="editcheck" type="checkbox"
-                        name="field.foo.remove_0" />
-              </td>
-              <td>
-                 <input class="textType" id="field.foo.0.bar"
-                        name="field.foo.0.bar"
-                        size="20" type="text" value=""  />
-              </td>
-            </tr>
-            ...
-
-         However, if we call getInputValue or hasValidInput, the
-         errors on the widgets are preserved and displayed:
-
-            >>> widget.hasValidInput()
-            False
-
-            >>> print widget()
-            <BLANKLINE>
-            ...
-            <tr>
-              <td>
-                 <input class="editcheck" type="checkbox"
-                        name="field.foo.remove_0" />
-              </td>
-              <td>
-                 <span class="error">Required input is missing.</span>
-                 <input class="textType" id="field.foo.0.bar"
-                        name="field.foo.0.bar"
-                        size="20" type="text" value=""  />
-              </td>
-            </tr>
-            ...
-        """
-
-
-class SequenceDisplayWidgetTest(
-    VerifyResults, SequenceWidgetTestHelper, unittest.TestCase):
-
-    def _WidgetFactory(self, *args, **kw):
-        w = SequenceDisplayWidget(*args, **kw)
-        w.cssClass = "testwidget"
-        return w
-
-    def setUp(self):
-        self.setUpContent()
-        self.request = TestRequest()
-        self.widget = self._WidgetFactory(
-            self.field, self.field.value_type, self.request)
-        ztapi.browserViewProviding(ITextLine, DisplayWidget, IDisplayWidget)
-
-    def tearDown(self):
-        setup.placefulTearDown()
-
-    def test_render_empty(self):
-        self.content.foo = ()
-        self.assertEquals(self.widget(), '(no values)')
-
-    def test_render_missing(self):
-        self.content.foo = self.field.missing_value
-        self.assertEquals(self.widget(), '(no value available)')
-
-    def test_render_single(self):
-        self.content.foo = (u'one value',)
-        check_list = ['<ol', 'class=', 'testwidget',
-                      '<li', 'one value', '</li', '</ol']
-        self.verifyResult(self.widget(), check_list, inorder=True)
-
-    def test_render_multiple(self):
-        self.content.foo = (u'one', u'two', u'three', u'four')
-        check_list = ['<ol', 'class=', 'testwidget',
-                      '<li', 'one', '</li',
-                      '<li', 'two', '</li',
-                      '<li', 'three', '</li',
-                      '<li', 'four', '</li',
-                      '</ol']
-        self.verifyResult(self.widget(), check_list, inorder=True)
-
-    def test_render_alternate_cssClass(self):
-        self.content.foo = (u'one value',)
-        check_list = ['<ol', 'class=', 'altclass',
-                      '<li', 'one value', '</li', '</ol']
-        self.widget.cssClass = 'altclass'
-        self.verifyResult(self.widget(), check_list, inorder=True)
-
-    def test_honors_subwidget(self):
-        self.widget = self._WidgetFactory(
-            self.field, self.field.value_type, self.request,
-            subwidget=UppercaseDisplayWidget)
-        self.content.foo = (u'first value', u'second value')
-        check_list = ['<ol', 'class=', 'testwidget',
-                      '<li', 'FIRST VALUE', '</li',
-                      '<li', 'SECOND VALUE', '</li',
-                      '</ol']
-        self.verifyResult(self.widget(), check_list, inorder=True)
-
-
-class UppercaseDisplayWidget(DisplayWidget):
-
-    def __call__(self):
-        return super(UppercaseDisplayWidget, self).__call__().upper()
-
-
-def setUp(test):
-    setup.placefulSetUp()
-    ztapi.browserViewProviding(ITextLine, TextWidget, IInputWidget)
-    ztapi.browserViewProviding(IWidgetInputError, WidgetInputErrorView,
-                               IWidgetInputErrorView)
-
-
-def tearDown(test):
-    setup.placefulTearDown()
-
-
-def test_suite():
-    return unittest.TestSuite((
-        unittest.makeSuite(SequenceWidgetTest),
-        doctest.DocTestSuite(setUp=setUp, tearDown=tearDown,
-                             optionflags=doctest.ELLIPSIS
-                             |doctest.NORMALIZE_WHITESPACE
-                             |doctest.REPORT_NDIFF),
-        unittest.makeSuite(SequenceDisplayWidgetTest),
-        ))
-
-if __name__=='__main__':
-    unittest.main(defaultTest='test_suite')

Deleted: zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_textareawidget.py
===================================================================
--- zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_textareawidget.py	2009-12-30 21:41:42 UTC (rev 107394)
+++ zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_textareawidget.py	2009-12-30 21:41:49 UTC (rev 107395)
@@ -1,63 +0,0 @@
-##############################################################################
-#
-# 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.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.
-#
-##############################################################################
-"""Textarea Widget tests
-
-$Id$
-"""
-import unittest
-from zope.testing import doctest
-from zope.formlib.interfaces import IInputWidget
-from zope.app.form.browser import TextAreaWidget
-from zope.formlib.tests.test_browserwidget import SimpleInputWidgetTest
-from zope.interface.verify import verifyClass
-
-class TextAreaWidgetTest(SimpleInputWidgetTest):
-    """Documents and tests the text area widget.
-
-        >>> verifyClass(IInputWidget, TextAreaWidget)
-        True
-    """
-
-    _WidgetFactory = TextAreaWidget
-
-    def testProperties(self):
-        self.assertEqual(self._widget.tag, 'input')
-        self.assertEqual(self._widget.type, 'text')
-        self.assertEqual(self._widget.cssClass, '')
-        self.assertEqual(self._widget.extra, '')
-        self.assertEqual(self._widget.width, 60)
-        self.assertEqual(self._widget.height, 15)
-
-    def testRender(self):
-        value = "Foo Value"
-        self._widget.setRenderedValue(value)
-        check_list = ('rows="15"', 'cols="60"', 'id="field.foo"',
-                      'name="field.foo"', 'textarea')
-        self.verifyResult(self._widget(), check_list)
-        check_list = ('style="color: red"',) + check_list
-        self._widget.extra = 'style="color: red"'
-        self.verifyResult(self._widget(), check_list)
-        check_list = ('type="hidden"', 'id="field.foo"', 'name="field.foo"',
-                      'value="Foo Value"')
-        self.verifyResult(self._widget.hidden(), check_list)
-
-
-def test_suite():
-    return unittest.TestSuite((
-        unittest.makeSuite(TextAreaWidgetTest),
-        doctest.DocTestSuite(),
-        ))
-
-if __name__=='__main__':
-    unittest.main(defaultTest='test_suite')

Deleted: zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_textwidget.py
===================================================================
--- zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_textwidget.py	2009-12-30 21:41:42 UTC (rev 107394)
+++ zope.app.form/branches/faassen-zaf/src/zope/app/form/browser/tests/test_textwidget.py	2009-12-30 21:41:49 UTC (rev 107395)
@@ -1,476 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2001, 2002, 2004, 2005 Zope Corporation 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.
-#
-##############################################################################
-"""Text Widget tests
-
-$Id$
-"""
-import datetime
-import unittest
-from zope.testing import doctest
-from zope.component.testing import setUp, tearDown
-from zope.interface.verify import verifyClass
-from zope.schema import TextLine
-from zope.publisher.browser import TestRequest
-
-from zope.schema import Password
-from zope.formlib.interfaces import IInputWidget
-
-from zope.app.form.browser import TextWidget
-
-from zope.app.form.browser import TextAreaWidget
-from zope.app.form.browser import BytesAreaWidget
-from zope.app.form.browser import PasswordWidget
-from zope.app.form.browser import FileWidget
-from zope.app.form.browser import IntWidget
-from zope.app.form.browser import FloatWidget
-from zope.app.form.browser import BytesWidget
-from zope.app.form.browser import ASCIIWidget
-
-from zope.app.form.browser import DateDisplayWidget
-from zope.app.form.browser import DatetimeDisplayWidget
-from zope.app.form.browser import URIDisplayWidget
-
-from zope.formlib.tests.test_browserwidget import BrowserWidgetTest
-from zope.formlib.tests.test_browserwidget import SimpleInputWidgetTest
-
-class TextWidgetTest(SimpleInputWidgetTest):
-    """Documents and tests the text widget.
-    >>> setUp()
-
-        >>> verifyClass(IInputWidget, TextWidget)
-        True
-
-    Converting Missing Values
-    -------------------------
-    String fields (TextLine, Text, etc.) values can be classified as one of the
-    following:
-
-      - Non-empty string
-      - Empty string
-      - None
-
-    Text browser widgets only support the first two types: non-empty strings
-    and empty strings. There's no facility to explicitly set a None value in a
-    text browser widget.
-
-    However, it is possible to interpret an empty string as None for some
-    applications. For example, when inputing a User Name, an empty string means
-    'the user hasn't provided a value'. In another application, an empty string
-    may mean 'the user has provided a value, specifically <empty string>'.
-
-    To support both modes, the text widget provides a 'convert_missing_value'
-    flag. When True, empty strings will be converted by the widget to the
-    field's 'missing_value' (None by default). This mode accommodates the
-    'user hasn't provided a value' scenario.
-
-    To illustrate this mode, we'll use an optional field, where missing_value
-    is None:
-
-        >>> field = TextLine(
-        ...     __name__='foo',
-        ...     missing_value=None,
-        ...     required=False)
-
-    The HTTP form submission contains an empty string for the field value:
-
-        >>> request = TestRequest(form={'field.foo':u''})
-
-    A text widget configured for the field, where convert_missing_value is True
-    (the default value)...
-
-        >>> widget = TextWidget(field, request)
-        >>> widget.convert_missing_value
-        True
-
-    will convert the form's empty string into the field's missing_value, which
-    is None:
-
-        >>> widget.getInputValue() is None
-        True
-
-    When 'convert_missing_value' is False, the text widget will not convert
-    an empty string to the field's missing_value. This supports the 'user has
-    provided a value, specifically <empty string>' mode:
-
-        >>> widget.convert_missing_value = False
-        >>> widget.getInputValue()
-        u''
-
-    >>> tearDown()
-    """
-
-    _WidgetFactory = TextWidget
-
-    def testProperties(self):
-        self.assertEqual(self._widget.tag, 'input')
-        self.assertEqual(self._widget.type, 'text')
-        self.assertEqual(self._widget.cssClass, '')
-        self.assertEqual(self._widget.extra, '')
-        self.assertEqual(self._widget.default, '')
-        self.assertEqual(self._widget.displayWidth, 20)
-        self.assertEqual(self._widget.displayMaxWidth, '')
-
-    def testRender(self):
-        value = 'Foo Value'
-        self._widget.setRenderedValue(value)
-        check_list = ('type="text"', 'id="field.foo"', 'name="field.foo"',
-                      'value="Foo Value"', 'size="20"')
-        self.verifyResult(self._widget(), check_list)
-        check_list = ('type="hidden"',) + check_list[1:-1]
-        self.verifyResult(self._widget.hidden(), check_list)
-        check_list = ('style="color: red"',) + check_list
-        self._widget.extra = 'style="color: red"'
-        self.verifyResult(self._widget.hidden(), check_list)
-
-class URIDisplayWidgetTest(BrowserWidgetTest):
-
-    _WidgetFactory = URIDisplayWidget
-
-    def testProperties(self):
-        # check the default linkTarget
-        self.failIf(self._widget.linkTarget)
-
-    def testRender(self):
-        value = "uri:fake"
-        self._widget.setRenderedValue(value)
-        self.verifyResult(self._widget(), ["<a", 'href="uri:fake"'])
-        self._widget.linkTarget = "there"
-        self.verifyResult(self._widget(), ["<a", 'href="uri:fake"',
-                                           'target="there"'])
-
-    def testEmptyRenderReturnsEmptyString(self):
-        self._widget.setRenderedValue(None)
-        self.assertEquals(self._widget(), "")
-        self._widget.setRenderedValue('')
-        self.assertEquals(self._widget(), "")
-
-
-class DateDisplayWidgetTest(BrowserWidgetTest):
-
-    _WidgetFactory = DateDisplayWidget
-
-    expected_class = "date"
-
-    def setUp(self):
-        super(DateDisplayWidgetTest, self).setUp()
-        self._value = datetime.date(2004, 12, 01)
-
-    def testDefaultDisplayStyle(self):
-        self.failIf(self._widget.displayStyle)
-
-    def testRenderDefault(self):
-        self._widget.setRenderedValue(self._value)
-        self.verifyResult(self._widget(),
-                          ["<span",
-                           'class="%s"' % self.expected_class,
-                           "01.12.2004",
-                           "</span"])
-
-    def testRenderShort(self):
-        self._widget.setRenderedValue(self._value)
-        self._widget.displayStyle = "short"
-        self.verifyResult(self._widget(),
-                          ["<span",
-                           'class="%s"' % self.expected_class,
-                           u"01.12.04",
-                           "</span"])
-
-    def testRenderMedium(self):
-        self._widget.setRenderedValue(self._value)
-        self._widget.displayStyle = "medium"
-        self.verifyResult(self._widget(),
-                          ["<span",
-                           'class="%s"' % self.expected_class,
-                           u"01.12.2004",
-                           "</span"])
-
-    def testRenderLong(self):
-        self._widget.setRenderedValue(self._value)
-        self._widget.displayStyle = "long"
-        self.verifyResult(self._widget(),
-                          ["<span",
-                           'class="%s"' % self.expected_class,
-                           u"1 \u0434\u0435\u043a\u0430\u0431\u0440\u044f"
-                                u" 2004 \u0433.",
-                           "</span"])
-
-    def testRenderFull(self):
-        self._widget.setRenderedValue(self._value)
-        self._widget.displayStyle = "full"
-        self.verifyResult(self._widget(),
-                          ["<span",
-                           'class="%s"' % self.expected_class,
-                           u"1 \u0434\u0435\u043a\u0430\u0431\u0440\u044f"
-                                u" 2004 \u0433.",
-                           "</span"])
-
-
-class DatetimeDisplayWidgetTest(DateDisplayWidgetTest):
-
-    _WidgetFactory = DatetimeDisplayWidget
-
-    expected_class = "dateTime"
-
-    def setUp(self):
-        super(DatetimeDisplayWidgetTest, self).setUp()
-        self._value = datetime.datetime(2004, 12, 01, 14, 39, 01)
-
-    def testRenderDefault(self):
-        super(DatetimeDisplayWidgetTest, self).testRenderDefault()
-        self.verifyResult(self._widget(), ["14:39:01"])
-
-    def testRenderShort(self):
-        super(DatetimeDisplayWidgetTest, self).testRenderShort()
-        self.verifyResult(self._widget(), ["14:39"])
-
-    def testRenderMedium(self):
-        super(DatetimeDisplayWidgetTest, self).testRenderMedium()
-        self.verifyResult(self._widget(), ["14:39:01"])
-
-    def testRenderLong(self):
-        super(DatetimeDisplayWidgetTest, self).testRenderLong()
-        self.verifyResult(self._widget(), ["14:39:01 +000"])
-
-    def testRenderFull(self):
-        super(DatetimeDisplayWidgetTest, self).testRenderFull()
-        self.verifyResult(self._widget(), ["14:39:01 +000"])
-
-class TextAreaDisplayWidgetTest(BrowserWidgetTest):
-
-    _WidgetFactory = TextAreaWidget
-
-    # It uses the default DisplayWidget
-    def testRender(self):
-        value = u"""
-        texttexttexttexttexttextexttexttext\xE9\xE9\xE9\xE9\xE9\xE9\xE9\xE9\xE9
-        texttexttexttexttextte\xE9\xE9\xE9\xE9\xE9xttexttexttexttexttexttexttex
-        texttexttexttexttexttexttexttexttexttexttexttexttexttexttext
-        """
-        self._widget.setRenderedValue(value)
-        self.assert_(value, self._widget._toFieldValue(value))
-        self.verifyResult(self._widget(), ["<textarea",
-                                           self._widget._toFormValue(value)])
-        check_list = (
-            ('id', 'field.foo'),
-            ('name', 'field.foo'),
-            #('value', ), tested above
-            ('cols', '60'),
-            ('rows', '15'),
-            )
-        for a, v in check_list:
-            self.verifyResult(self._widget(), [a, v])
-
-class BytesAreaDisplayWidgetTest(BrowserWidgetTest):
-
-    _WidgetFactory = BytesAreaWidget
-
-    # It uses the default DisplayWidget
-    def testRender(self):
-        value = """
-        texttexttexttexttexttexttexttexttexttexttexttexttexttexttext
-        texttexttexttexttexttexttexttexttexttexttexttexttexttexttext
-        texttexttexttexttexttexttexttexttexttexttexttexttexttexttext
-        """
-        self._widget.setRenderedValue(value)
-        self.assert_(value, self._widget._toFieldValue(value))
-        self.verifyResult(self._widget(), ["<textarea",
-                                           self._widget._toFormValue(value)])
-        check_list = (
-            ('id', 'field.foo'),
-            ('name', 'field.foo'),
-            #('value', ), tested above
-            ('cols', '60'),
-            ('rows', '15'),
-            )
-        for a, v in check_list:
-            self.verifyResult(self._widget(), [a, v])
-
-class BytesDisplayWidgetTest(BrowserWidgetTest):
-
-    _WidgetFactory = BytesWidget
-
-    # It uses the BytesDisplayWidget
-    def testRender(self):
-        value = "Food Value"
-        self._widget.setRenderedValue(value)
-        check_list = ('type="text"', 'id="field.foo"', 'name="field.foo"',
-                      'value="%s"'%value, 'size="20"')
-        self.verifyResult(self._widget(), check_list)
-
-class ASCIIDisplayWidgetTest(BrowserWidgetTest):
-
-    _WidgetFactory = ASCIIWidget
-
-    # It uses the default BytesDisplayWidget
-    def testRender(self):
-        value = "Food Value"
-        self._widget.setRenderedValue(value)
-        check_list = ('type="text"', 'id="field.foo"', 'name="field.foo"',
-                      'value="%s"'%value, 'size="20"')
-        self.verifyResult(self._widget(), check_list)
-
-class PasswordDisplayWidgetTest(BrowserWidgetTest):
-
-    _WidgetFactory = PasswordWidget
-    _FieldFactory = Password
-
-    # It uses the default DisplayWidget
-    def testRender(self):
-        value = 'Foo Value'
-        self._widget.setRenderedValue(value)
-        check_list = ('type="password"', 'id="field.foo"', 'name="field.foo"',
-                      'value=""', 'size="20"')
-        self.verifyResult(self._widget(), check_list)
-
-    def testUnchangedPassword(self):
-        # The password hasn't been set yet, so an empty string
-        # is regarded as an empty field.
-        self.assertEquals(None, self._widget._toFieldValue(''))
-        # Now the password has been filled in, so the empty string
-        # is regarded as the special value for UNCHANGED_PASSWORD.
-        self._widget.context.context.foo = u'existing password'
-        self.assertEquals(self._widget.context.UNCHANGED_PASSWORD, 
-                          self._widget._toFieldValue(''))
-
-class FileDisplayWidgetTest(BrowserWidgetTest):
-
-    _WidgetFactory = FileWidget
-
-    # It uses the default DisplayWidget
-    def testRender(self):
-        value = 'Foo Value'
-        self._widget.setRenderedValue(value)
-        check_list = ('type="file"', 'id="field.foo"', 'name="field.foo"',
-                      'size="20"')
-        self.verifyResult(self._widget(), check_list)
-        check_list = ('type="hidden"',) + check_list[1:-1]
-        self.verifyResult(self._widget.hidden(), check_list)
-        check_list = ('style="color: red"',) + check_list
-        self._widget.extra = 'style="color: red"'
-        self.verifyResult(self._widget.hidden(), check_list)
-
-class IntDisplayWidgetTest(BrowserWidgetTest):
-
-    _WidgetFactory = IntWidget
-
-    # It uses the default DisplayWidget
-    def testRender(self):
-        value = 1
-        self._widget.setRenderedValue(value)
-        check_list = ('type="text"', 'id="field.foo"', 'name="field.foo"',
-                      'size="10"', 'value="%s"'%str(value))
-        self.verifyResult(self._widget(), check_list)
-
-class FloatDisplayWidgetTest(BrowserWidgetTest):
-
-    _WidgetFactory = FloatWidget
-
-    # It uses the default DisplayWidget
-    def testRender(self):
-        value = 1.2
-        self._widget.setRenderedValue(value)
-        check_list = ('type="text"', 'id="field.foo"', 'name="field.foo"',
-                      'size="10"', 'value="%s"'%str(value))
-        self.verifyResult(self._widget(), check_list)
-
-def test_w_nonrequired_and_missing_value_and_no_inout():
-    """
-    There was a bug that caused the value attribute to be set to
-    'value' under these circumstances.
-
-    >>> from zope.schema import TextLine
-    >>> field = TextLine(__name__='foo', title=u'on',
-    ...                  required=False, missing_value=u'')
-    >>> request = TestRequest()
-    >>> widget = TextWidget(field, request)
-
-    >>> def normalize(s):
-    ...   return '\\n  '.join(filter(None, s.split(' ')))
-
-    >>> print normalize( widget() )
-    <input
-      class="textType"
-      id="field.foo"
-      name="field.foo"
-      size="20"
-      type="text"
-      value=""
-      />
-
-    """
-
-def test_no_error_on_render_only():
-    """This is really a test of a bug fix to SimpleInputWidget.
-
-    _error shouldn't be set due to an *internal* call to getInputValue
-    when rendering.
-
-    >>> from zope.schema import TextLine
-    >>> field = TextLine(__name__='foo')
-    >>> request = TestRequest(form={'field.foo': ''})
-    >>> widget = TextWidget(field, request)
-    >>> ignored = widget()
-    >>> unicode(widget.error())
-    u''
-
-
-    """
-
-def test_text_area_works_with_missing_value():
-    """
-    >>> from zope.schema import Text
-    >>> field = Text(__name__='foo', title=u'on',
-    ...              required=False, missing_value=u'')
-    >>> request = TestRequest()
-    >>> widget = TextAreaWidget(field, request)
-    >>> def normalize(s):
-    ...   return '\\n  '.join(filter(None, s.split(' ')))
-
-    >>> print normalize( widget() )
-    <textarea
-      cols="60"
-      id="field.foo"
-      name="field.foo"
-      rows="15"
-      ></textarea>
-
-    >>> print normalize( widget.hidden() )
-    <input
-      class="hiddenType"
-      id="field.foo"
-      name="field.foo"
-      type="hidden"
-      value=""
-      />
-      """
-
-def test_suite():
-    return unittest.TestSuite((
-        unittest.makeSuite(TextWidgetTest),
-        unittest.makeSuite(URIDisplayWidgetTest),
-        unittest.makeSuite(DateDisplayWidgetTest),
-        unittest.makeSuite(DatetimeDisplayWidgetTest),
-        unittest.makeSuite(TextAreaDisplayWidgetTest),
-        unittest.makeSuite(BytesAreaDisplayWidgetTest),
-        unittest.makeSuite(PasswordDisplayWidgetTest),
-        unittest.makeSuite(FileDisplayWidgetTest),
-        unittest.makeSuite(IntDisplayWidgetTest),
-        unittest.makeSuite(FloatDisplayWidgetTest),
-        unittest.makeSuite(BytesDisplayWidgetTest),
-        unittest.makeSuite(ASCIIDisplayWidgetTest),
-        doctest.DocTestSuite(),
-        ))
-
-if __name__=='__main__':
-    unittest.main(defaultTest='test_suite')



More information about the checkins mailing list