[Zope3-checkins] CVS: Zope3/src/zope/app/container/tests - test_size.py:1.1

Steve Alexander steve@cat-box.net
Fri, 27 Dec 2002 13:22:59 -0500


Update of /cvs-repository/Zope3/src/zope/app/container/tests
In directory cvs.zope.org:/tmp/cvs-serv5454/src/zope/app/container/tests

Added Files:
	test_size.py 
Log Message:
units should be singular.
added a sized adapter for containers that presents the number of items
contained.
If you have a kind of container for which it is expensive to get the
number of items contained, then you should make an ISized for that
container.


=== Added File Zope3/src/zope/app/container/tests/test_size.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.
#
##############################################################################
import unittest

from zope.app.interfaces.size import ISized
from zope.app.interfaces.container import IContainer

class DummyContainer:

    __implements__ = IContainer

    def __init__(self, numitems):
        self._numitems = numitems

    def __len__(self):
        return self._numitems


class Test(unittest.TestCase):

    def testImplementsISized(self):
        from zope.app.container.size import ContainerSized
        sized = ContainerSized(DummyContainer(23))
        self.assert_(ISized.isImplementedBy(sized))

    def testEmptyContainer(self):
        from zope.app.container.size import ContainerSized
        obj = DummyContainer(0)
        sized = ContainerSized(obj)
        self.assertEqual(sized.sizeForSorting(), ('item', 0))
        self.assertEqual(sized.sizeForDisplay(), u'0 items')

    def testOneItem(self):
        from zope.app.container.size import ContainerSized
        obj = DummyContainer(1)
        sized = ContainerSized(obj)
        self.assertEqual(sized.sizeForSorting(), ('item', 1))
        self.assertEqual(sized.sizeForDisplay(), u'1 item')

    def testSeveralItems(self):
        from zope.app.container.size import ContainerSized
        obj = DummyContainer(2)
        sized = ContainerSized(obj)
        self.assertEqual(sized.sizeForSorting(), ('item', 2))
        self.assertEqual(sized.sizeForDisplay(), u'2 items')

def test_suite():
    loader = unittest.TestLoader()
    return loader.loadTestsFromTestCase(Test)

if __name__=='__main__':
    unittest.TextTestRunner().run(test_suite())