[Zope-Checkins] CVS: Zope3/lib/python/Zope/I18n/tests - testITranslationService.py:1.3

Barry Warsaw barry@wooz.org
Wed, 12 Jun 2002 17:01:28 -0400


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

Modified Files:
	testITranslationService.py 
Log Message:
Added back a bunch of tests and rhythms lost in the last checkin.


=== Zope3/lib/python/Zope/I18n/tests/testITranslationService.py 1.2 => 1.3 ===
 class TestITranslationService(PlacelessSetup, unittest.TestCase):
 
-
     # This should be overwritten by every clas that inherits this test
     def _getTranslationService(self):
         pass
     
-
     def setUp(self):
         PlacelessSetup.setUp(self)
         self._service = self._getTranslationService() 
         assert verifyObject(ITranslationService, self._service)
-
         # Setup the negotiator service registry entry
         managerHandler('defineService', 'LanguageNegotiation', INegotiator) 
         provideService('LanguageNegotiation', negotiator, 'Zope.Public')
-        
 
     # I know, I know. This is not part of the interface, but it is implemented
     # in every Translation Service, so it fits well here.
     def testInterpolation(self):
         service = self._service
+        interp = service.interpolate
+        eq = self.assertEqual
         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.')
+        # Test simple interpolations
+        eq(interp('This is $name.', mapping), 'This is Zope.')
+        eq(interp('This is ${name}.', mapping), 'This is Zope.')
+        # Test more than one interpolation variable
+        eq(interp('This is $name version $version.', mapping),
+           'This is Zope version 3x.')
+        eq(interp('This is ${name} version $version.', mapping),
+           'This is Zope version 3x.')
+        eq(interp('This is $name version ${version}.', mapping),
+           'This is Zope version 3x.')
+        eq(interp('This is ${name} version ${version}.', mapping),
+           'This is Zope version 3x.')
+        # Test escaping the $
+        eq(interp('This is $$name.', mapping), 'This is $$name.')
+        eq(interp('This is $${name}.', mapping), 'This is $${name}.')
         
-
     def testSimpleNoTranslate(self):
-        service = self._service
-        self.assertRaises(TypeError, service.translate, 'Hello')
-    
-        self.assertEqual(service.translate('default', 'short_greeting',
-                                           target_language='es'),
-                         'short_greeting')
-
+        translate = self._service.translate
+        raises = self.assertRaises
+        eq = self.assertEqual
+        # Test that we have at least the minimum required arguments
+        raises(TypeError, translate, 'Hello')
+        # Test that a translation in an unsupported language returns the
+        # original message id unchanged.
+        eq(translate('default', 'short_greeting', target_language='es'),
+           'short_greeting')
+        # Same test, but use the context argument instead of target_language
         context = Environment()
-        self.assertEqual(service.translate('default', 'short_greeting',
-                                           context=context),
-                         'short_greeting')
-    
-        self.assertRaises(TypeError, service.translate, 'short_greeting',
-                          context=None)
-    
+        eq(translate('default', 'short_greeting', context=context),
+           'short_greeting')
+        # Test that at least one of context or target_language is given
+        raises(TypeError, translate, 'short_greeting', context=None)
     
     def testSimpleTranslate(self):
-        service = self._service
-        self.assertEqual(service.translate('default', 'short_greeting',
-                                           target_language='de'),
-                         'Hallo!')
-
+        translate = self._service.translate
+        eq = self.assertEqual
+        # Test that a given message id is properly translated in a supported
+        # language
+        eq(translate('default', 'short_greeting', target_language='de'),
+           'Hallo!')
+        # Same test, but use the context argument
+        context = Environment(('de', 'en'))
+        eq(translate('default', 'short_greeting', context=context),
+           '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?')
-        
+        translate = self._service.translate
+        eq = self.assertEqual
+        # Testing both translation and interpolation
+        eq(translate('default', 'greeting', mapping={'name': 'Stephan'},
+                     target_language='de'),
+           'Hallo Stephan, wie geht es Dir?')
 
     def testGetDomain(self):
         service = self._service    
         domain = service.getDomain('default')
         self.assertEqual(verifyObject(IDomain, domain), 1)
 
+    def testDomainTranslate(self):
+        service = self._service    
+        domain = service.getDomain('default')
+        translate = domain.translate
+        eq = self.assertEqual
+        # target language argument
+        eq(translate('short_greeting', target_language='de'), 'Hallo!')
+        # context argument
+        context = Environment(('de', 'en'))
+        eq(translate('short_greeting', context=context), 'Hallo!')
         
 def test_suite():
     pass