diff options
Diffstat (limited to 'src/zope/i18n/tests/test_plurals.py')
-rw-r--r-- | src/zope/i18n/tests/test_plurals.py | 75 |
1 files changed, 74 insertions, 1 deletions
diff --git a/src/zope/i18n/tests/test_plurals.py b/src/zope/i18n/tests/test_plurals.py index 4f7813e..28d6b3a 100644 --- a/src/zope/i18n/tests/test_plurals.py +++ b/src/zope/i18n/tests/test_plurals.py @@ -16,10 +16,13 @@ """ import os import unittest -from zope.i18n import tests + +import zope.component +from zope.i18n import tests, translate from zope.i18n.translationdomain import TranslationDomain from zope.i18n.gettextmessagecatalog import GettextMessageCatalog from zope.i18nmessageid import MessageFactory +from zope.i18n.interfaces import ITranslationDomain class TestPlurals(unittest.TestCase): @@ -38,6 +41,76 @@ class TestPlurals(unittest.TestCase): domain.addCatalog(catalog) return domain + def test_translate_without_defaults(self): + domain = self._getTranslationDomain('en') + zope.component.provideUtility(domain, ITranslationDomain, 'default') + self.assertEqual( + translate('One apple', domain='default', + msgid_plural='%d apples', number=0), + '0 apples') + self.assertEqual( + translate('One apple', domain='default', + msgid_plural='%d apples', number=1), + 'One apple') + self.assertEqual( + translate('One apple', domain='default', + msgid_plural='%d apples', number=2), + '2 apples') + + def test_translate_with_defaults(self): + domain = self._getTranslationDomain('en') + zope.component.provideUtility(domain, ITranslationDomain, 'default') + self.assertEqual( + translate('One apple', domain='default', + msgid_plural='%d apples', number=0, + default='One fruit', default_plural='%d fruits'), + '0 fruits') + self.assertEqual( + translate('One apple', domain='default', + msgid_plural='%d apples', number=1, + default='One fruit', default_plural='%d fruits'), + 'One fruit') + self.assertEqual( + translate('One apple', domain='default', + msgid_plural='%d apples', number=2, + default='One fruit', default_plural='%d fruits'), + '2 fruits') + + def test_missing_queryPluralMessage(self): + catalog = self._getMessageCatalog('en') + self.assertEqual(catalog.language, 'en') + + self.assertEqual( + catalog.queryPluralMessage( + 'One apple', '%d apples', 0, + dft1='One fruit', dft2='%d fruits'), + '0 fruits') + + self.assertEqual( + catalog.queryPluralMessage( + 'One apple.', '%d apples.', 1, + dft1='One fruit', dft2='%d fruits'), + 'One fruit') + + self.assertEqual( + catalog.queryPluralMessage( + 'One apple.', '%d apples.', 2, + dft1='One fruit', dft2='%d fruits'), + '2 fruits') + + def test_missing_getPluralMessage(self): + catalog = self._getMessageCatalog('en') + self.assertEqual(catalog.language, 'en') + + with self.assertRaises(KeyError): + catalog.getPluralMessage('One apple', '%d fruits', 0) + + with self.assertRaises(KeyError): + catalog.getPluralMessage('One apple', '%d fruits', 1) + + with self.assertRaises(KeyError): + catalog.getPluralMessage('One apple', '%d fruits', 2) + def test_GermanPlurals(self): """Germanic languages such as english and german share the plural rule. We test the german here. |