[Zope-Checkins] CVS: Zope3/lib/python/Zope/I18n/tests - __init__.py:1.2 testMessageCatalog.py:1.2 testNegotiator.py:1.2 testTranslationService.py:1.2
Jim Fulton
jim@zope.com
Mon, 10 Jun 2002 19:29:59 -0400
Update of /cvs-repository/Zope3/lib/python/Zope/I18n/tests
In directory cvs.zope.org:/tmp/cvs-serv20468/lib/python/Zope/I18n/tests
Added Files:
__init__.py testMessageCatalog.py testNegotiator.py
testTranslationService.py
Log Message:
Merged Zope-3x-branch into newly forked Zope3 CVS Tree.
=== Zope3/lib/python/Zope/I18n/tests/__init__.py 1.1 => 1.2 ===
+#
+# 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.
+#
+##############################################################################
=== Zope3/lib/python/Zope/I18n/tests/testMessageCatalog.py 1.1 => 1.2 ===
+#
+# 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$
+"""
+import unittest, sys
+
+from Zope.I18n.MessageCatalog import MessageCatalog
+
+
+class MessageCatalogTest(unittest.TestCase):
+
+ def testConstructorAndOtherGetMethods(self):
+ self.assertRaises(TypeError, MessageCatalog)
+
+ msg_catalog = MessageCatalog('en')
+ self.assertEqual(msg_catalog.getLanguage(), 'en')
+ self.assertEqual(msg_catalog.getDomain(), 'global')
+ self.assertEqual(msg_catalog.getIdentifier(), ('en', 'global'))
+
+ msg_catalog = MessageCatalog('de', 'calendar')
+ self.assertEqual(msg_catalog.getLanguage(), 'de')
+ self.assertEqual(msg_catalog.getDomain(), 'calendar')
+ self.assertEqual(msg_catalog.getIdentifier(), ('de', 'calendar'))
+
+
+ def testSetGetAndQueryMessage(self):
+ msg_catalog = MessageCatalog('de')
+
+ msg_catalog.setMessage('greeting', 'Hallo mein Schatz!')
+ self.assertEqual(msg_catalog.getMessage('greeting'),
+ 'Hallo mein Schatz!')
+ self.assertEqual(msg_catalog.queryMessage('greeting'),
+ 'Hallo mein Schatz!')
+
+ self.assertRaises(KeyError, msg_catalog.getMessage, ('hello'))
+ self.assertEqual(msg_catalog.queryMessage('hello'),
+ 'hello')
+ self.assertEqual(msg_catalog.queryMessage('hello', 'greeting'),
+ 'greeting')
+
+
+def test_suite():
+ loader=unittest.TestLoader()
+ return loader.loadTestsFromTestCase(MessageCatalogTest)
+
+if __name__=='__main__':
+ unittest.TextTestRunner().run(test_suite())
=== Zope3/lib/python/Zope/I18n/tests/testNegotiator.py 1.1 => 1.2 ===
+#
+# 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$
+"""
+import unittest, sys
+
+from Zope.I18n.Negotiator import Negotiator
+from Zope.I18n.IUserPreferedLanguages import IUserPreferedLanguages
+from Zope.ComponentArchitecture.tests.PlacelessSetup import PlacelessSetup
+
+class Env:
+
+ __implements__ = IUserPreferedLanguages
+
+ def __init__(self, langs=()):
+ self.langs = langs
+
+ def getLanguages(self):
+ return self.langs
+
+
+class Test(PlacelessSetup, unittest.TestCase):
+
+ def setUp(self):
+ PlacelessSetup.setUp(self)
+ self.Negotiator= Negotiator()
+
+ def test1(self):
+
+ _cases = (
+ ( ('en','de'), ('en','de','fr'), 'en'),
+ ( ('en'), ('it','de','fr'), None)
+ )
+
+ for user_pref_langs, obj_langs, expected in _cases:
+
+ env = Env(user_pref_langs)
+
+ self.assertEqual( self.Negotiator.getLanguage( obj_langs, env),
+ expected)
+
+
+
+
+def test_suite():
+ loader=unittest.TestLoader()
+ return loader.loadTestsFromTestCase(Test)
+
+if __name__=='__main__':
+ unittest.TextTestRunner().run(test_suite())
=== Zope3/lib/python/Zope/I18n/tests/testTranslationService.py 1.1 => 1.2 ===
+#
+# 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, sys
+from Zope.ComponentArchitecture.tests.PlacelessSetup import PlacelessSetup
+from Zope.I18n.IUserPreferedLanguages import IUserPreferedLanguages
+from Zope.I18n.TranslationService import TranslationService
+from Zope.I18n.MessageCatalog import MessageCatalog
+from types import StringType
+
+
+class Environment:
+
+ __implements__ = IUserPreferedLanguages
+
+ def __init__(self, langs=()):
+ self.langs = langs
+
+ def getLanguages(self):
+ return self.langs
+
+
+class TestTranslationService(PlacelessSetup, unittest.TestCase):
+
+
+ def testInterpolation(self):
+
+ service = TranslationService()
+ mapping = {'name': 'Zope', 'version': '3x'}
+
+ self.assertEqual(service.interpolate('This is $name.', mapping),
+ 'This is Zope.')
+ self.assertEqual(service.interpolate('This is ${name}.', mapping),
+ 'This is Zope.')
+
+ self.assertEqual(service.interpolate(
+ 'This is $name version $version.', mapping),
+ 'This is Zope version 3x.')
+ self.assertEqual(service.interpolate(
+ 'This is ${name} version $version.', mapping),
+ 'This is Zope version 3x.')
+ self.assertEqual(service.interpolate(
+ 'This is $name version ${version}.', mapping),
+ 'This is Zope version 3x.')
+ self.assertEqual(service.interpolate(
+ 'This is ${name} version ${version}.', mapping),
+ 'This is Zope version 3x.')
+
+
+ def setUp(self):
+ ''' '''
+ PlacelessSetup.setUp(self)
+ self._service = TranslationService('default')
+
+ en_catalog = MessageCatalog('en', 'default')
+ de_catalog = MessageCatalog('de', 'default')
+
+ en_catalog.setMessage('short_greeting', 'Hello!')
+ de_catalog.setMessage('short_greeting', 'Hallo!')
+
+ en_catalog.setMessage('greeting', 'Hello $name, how are you?')
+ de_catalog.setMessage('greeting', 'Hallo $name, wie geht es Dir?')
+
+ self._service.setObject('en-default-1', en_catalog)
+ self._service.setObject('de-default-1', de_catalog)
+
+
+ def testSimpleNoTranslate(self):
+ service = self._service
+ self.assertRaises(TypeError, service.translate, 'Hello')
+
+ self.assertEqual(service.translate('default', 'short_greeting',
+ target_language='es'),
+ 'short_greeting')
+
+ context = Environment()
+ self.assertEqual(service.translate('default', 'short_greeting',
+ context=context),
+ 'short_greeting')
+
+ self.assertRaises(TypeError, service.translate, 'short_greeting',
+ context=None)
+
+
+ def testSimpleTranslate(self):
+ ''' '''
+ service = self._service
+ self.assertEqual(service.translate('default', 'short_greeting',
+ target_language='de'),
+ 'Hallo!')
+
+
+ def testDynamicTranslate(self):
+ ''' '''
+ service = self._service
+
+ self.assertEqual(service.translate('default', 'greeting',
+ mapping={'name': 'Stephan'},
+ target_language='de'),
+ 'Hallo Stephan, wie geht es Dir?')
+
+
+
+def test_suite():
+ loader=unittest.TestLoader()
+ return loader.loadTestsFromTestCase(TestTranslationService)
+
+if __name__=='__main__':
+ unittest.TextTestRunner().run(test_suite())