diff options
Diffstat (limited to 'tests/units/toolkit/i18n.py')
-rwxr-xr-x | tests/units/toolkit/i18n.py | 68 |
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() |