[Zope-Checkins] CVS: Zope3/lib/python/Zope/ComponentArchitecture/tests - testTypeRegistry.py:1.1.2.1

Jim Fulton jim@zope.com
Fri, 22 Feb 2002 14:02:06 -0500


Update of /cvs-repository/Zope3/lib/python/Zope/ComponentArchitecture/tests
In directory cvs.zope.org:/tmp/cvs-serv14827/tests

Added Files:
      Tag: Zope-3x-branch
	testTypeRegistry.py 
Log Message:
Added the type registry, which lets us register data for object types.



=== Added File Zope3/lib/python/Zope/ComponentArchitecture/tests/testTypeRegistry.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
# 
##############################################################################
"""

Revision information:
$Id: testTypeRegistry.py,v 1.1.2.1 2002/02/22 19:02:06 jim Exp $
"""

import unittest, sys
from Zope.Testing.CleanUp import CleanUp # Base class w registry cleanup
from Zope.ComponentArchitecture.IToIRegistry import TypeRegistry
from Interface import Interface

class Test(CleanUp, unittest.TestCase):

    def test(self):
        class I1(Interface): pass
        class I2(I1): pass
        class I3(I2): pass

        reg = TypeRegistry()
        reg.register(I2, 2)

        class C1: __implements__ = I1
        class C2: __implements__ = I2
        class C3: __implements__ = I3
        class C: pass

        self.assertEqual(reg.getForObject(C1()), None)
        self.assertEqual(reg.getForObject(C2()), 2)
        self.assertEqual(reg.getForObject(C3()), 2)
        self.assertEqual(reg.getForObject(C()), None)

        reg.register(I1, 1)
        self.assertEqual(reg.getForObject(C1()), 1)
        self.assertEqual(reg.getForObject(C2()), 2)
        self.assertEqual(reg.getForObject(C3()), 2)
        self.assertEqual(reg.getForObject(C()), None)

        reg.register(I3, 3)
        self.assertEqual(reg.getForObject(C1()), 1)
        self.assertEqual(reg.getForObject(C2()), 2)
        self.assertEqual(reg.getForObject(C3()), 3)
        self.assertEqual(reg.getForObject(C()), None)

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

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