summaryrefslogtreecommitdiff
path: root/src/zope/i18n/tests/test_plurals.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/zope/i18n/tests/test_plurals.py')
-rw-r--r--src/zope/i18n/tests/test_plurals.py75
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.