Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/tests/units/toolkit/i18n.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/units/toolkit/i18n.py')
-rwxr-xr-xtests/units/toolkit/i18n.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/units/toolkit/i18n.py b/tests/units/toolkit/i18n.py
new file mode 100755
index 0000000..6c4c0ca
--- /dev/null
+++ b/tests/units/toolkit/i18n.py
@@ -0,0 +1,68 @@
+#!/usr/bin/env python
+# sugar-lint: disable
+
+import gettext
+
+from __init__ import tests
+
+from sugar_network.toolkit import i18n
+
+
+class I18nTest(tests.Test):
+
+ def test_decode(self):
+ # Fallback to default lang
+ i18n._default_langs = ['default']
+ self.assertEqual('foo', i18n.decode({'lang': 'foo', 'default': 'bar'}, 'lang'))
+ self.assertEqual('bar', i18n.decode({'lang': 'foo', 'default': 'bar'}, 'fake'))
+
+ # Exact accept_language
+ self.assertEqual('', i18n.decode(None, 'lang'))
+ self.assertEqual('foo', i18n.decode('foo', 'lang'))
+ self.assertEqual('foo', i18n.decode({'lang': 'foo', 'fake': 'bar', 'default': 'default'}, 'lang'))
+ self.assertEqual('foo', i18n.decode({'lang': 'foo', 'fake': 'bar', 'default': 'default'}, ['lang', 'fake']))
+ self.assertEqual('bar', i18n.decode({'lang': 'foo', 'fake': 'bar', 'default': 'default'}, ['fake', 'lang']))
+
+ # Last resort
+ self.assertEqual('foo', i18n.decode({'1': 'foo', '2': 'bar'}, 'fake'))
+
+ # Primed accept_language
+ self.assertEqual('foo', i18n.decode({'1': 'foo', '2': 'bar', 'default': 'default'}, '1-a'))
+
+ # Primed i18n value
+ self.assertEqual('bar', i18n.decode({'1-a': 'foo', '1': 'bar', 'default': 'default'}, '1-b'))
+ self.assertEqual('foo', i18n.decode({'1-a': 'foo', '2': 'bar', 'default': 'default'}, '1-b'))
+
+ def test_decode_EnAsTheLastResort(self):
+ i18n._default_langs = ['en-us']
+ self.assertEqual('right', i18n.decode({'a': 'wrong', 'en': 'right'}, 'probe'))
+ self.assertEqual('exact', i18n.decode({'a': 'wrong', 'en': 'right', 'probe': 'exact'}, 'probe'))
+
+ def test_encode(self):
+ self.assertEqual({
+ 'en': 'Delete Log File',
+ 'es': 'Borrar el archivo de registro',
+ 'fr': 'Supprimer le fichier log',
+ }, i18n.encode('Delete Log File'))
+
+ self.assertEqual({
+ 'en': "Error: Can't open file 'probe'\n",
+ 'es': "Error: No se puede abrir el archivo 'probe'\n",
+ 'fr': "Erreur : Ouverture du fichier 'probe' impossible\n",
+ }, i18n.encode("Error: Can't open file '%s'\n", 'probe'))
+
+ self.assertEqual({
+ 'en': "Error: Can't open file '1'\n",
+ 'es': "Error: No se puede abrir el archivo '2'\n",
+ 'fr': "Erreur : Ouverture du fichier '3' impossible\n",
+ }, i18n.encode("Error: Can't open file '%s'\n", {'en': 1, 'es': 2, 'fr': 3}))
+
+ self.assertEqual({
+ 'en': '1 when deleting 5',
+ 'es': '2 borrando 6',
+ 'fr': '3 lors de la suppression de 7',
+ }, i18n.encode('%(error)s when deleting %(file)s', error={'en': 1, 'es': 2, 'fr': 3}, file={'en': 5, 'es': 6, 'fr': 7}))
+
+
+if __name__ == '__main__':
+ tests.main()