コード例 #1
0
ファイル: test_i18n.py プロジェクト: kostyll/aioxmpp
    def test_localize(self):
        formatter = i18n.LocalizingFormatter()
        translator = unittest.mock.Mock()
        s = "abc {a} def {} ghi {foo}"
        ls = i18n.LocalizableString(s)

        with unittest.mock.patch.object(formatter, "vformat") as vformat:
            ls.localize(
                formatter,
                translator,
                "foobar",
                a=123,
                foo=34.5
            )

        self.assertSequenceEqual(
            [
                unittest.mock.call.gettext(s)
            ],
            translator.mock_calls
        )
        self.assertSequenceEqual(
            [
                unittest.mock.call(
                    translator.gettext(),
                    ("foobar",),
                    {
                        "a": 123,
                        "foo": 34.5,
                    },
                )
            ],
            vformat.mock_calls
        )
コード例 #2
0
    def test_localize_plural(self):
        formatter = i18n.LocalizingFormatter()
        translator = unittest.mock.Mock()
        s1 = "{a} thing"
        sn = "{a} things"
        ls = i18n.LocalizableString(s1, sn, "a")

        with contextlib.ExitStack() as stack:
            vformat = stack.enter_context(
                unittest.mock.patch.object(formatter, "vformat"))
            get_field = stack.enter_context(
                unittest.mock.patch.object(formatter, "get_field"))
            get_field.return_value = 123, "a"

            ls.localize(formatter, translator, "foobar", a=123, foo=34.5)

        self.assertSequenceEqual([
            unittest.mock.call("a", ("foobar", ), {
                "a": 123,
                "foo": 34.5
            }),
        ], get_field.mock_calls)
        self.assertSequenceEqual([unittest.mock.call.ngettext(s1, sn, 123)],
                                 translator.mock_calls)
        self.assertSequenceEqual([
            unittest.mock.call(
                translator.ngettext(),
                ("foobar", ),
                {
                    "a": 123,
                    "foo": 34.5,
                },
            )
        ], vformat.mock_calls)
コード例 #3
0
    def test_init(self):
        s = "foobar baz"
        ls = i18n.LocalizableString(s)
        self.assertNotEqual(ls, s)

        self.assertEqual(ls.singular, s)
        self.assertIsNone(ls.plural)
        self.assertIsNone(ls.number_index)
コード例 #4
0
 def test_immutable(self):
     ls = i18n.LocalizableString("foo", "bar", "baz")
     with self.assertRaises(AttributeError):
         ls.singular = "fnord"
     with self.assertRaises(AttributeError):
         ls.plural = "fnord"
     with self.assertRaises(AttributeError):
         ls.number_index = "fnord"
     with self.assertRaises(AttributeError):
         ls.foobar = "fnord"
コード例 #5
0
    def test_init_plural_number_index_defaults_to_zero(self):
        sing = "{:d} thing"
        plural = "{:d} things"
        ls = i18n.LocalizableString(sing, plural)

        self.assertEqual(
            sing,
            ls.singular,
        )
        self.assertEqual(plural, ls.plural)
        self.assertEqual("0", ls.number_index)
コード例 #6
0
    def test_init_plural(self):
        sing = "{1:d} thing"
        plural = "{1:d} things"
        ls = i18n.LocalizableString(sing, plural, 1)

        self.assertEqual(
            sing,
            ls.singular,
        )
        self.assertEqual(plural, ls.plural)
        self.assertEqual("1", ls.number_index)
コード例 #7
0
    def test_compares_to_other_localizable_strings_with_plural_eq(self):
        s1 = "foobar baz"
        s2 = "fnord"

        ls1 = i18n.LocalizableString(s1, "plural")
        ls2 = i18n.LocalizableString(s1, "plural")
        ls3 = i18n.LocalizableString(s2, "plural")

        self.assertTrue(ls1 == ls2)
        self.assertTrue(ls2 == ls1)
        self.assertFalse(ls1 != ls2)
        self.assertFalse(ls2 != ls1)

        self.assertTrue(ls1 != ls3)
        self.assertTrue(ls3 != ls1)
        self.assertFalse(ls1 == ls3)
        self.assertFalse(ls3 == ls1)

        self.assertTrue(ls2 != ls3)
        self.assertTrue(ls3 != ls2)
        self.assertFalse(ls2 == ls3)
        self.assertFalse(ls3 == ls2)
コード例 #8
0
    def test_hashable(self):
        s1 = i18n.LocalizableString("foo")
        s2 = i18n.LocalizableString("foo")

        self.assertEqual(hash(s1), hash(s2))
コード例 #9
0
 def test_repr_plural(self):
     ls = i18n.LocalizableString("foobar", "baz", "a")
     self.assertEqual(
         "ngettext({!r}, {!r}, {!r})".format("foobar", "baz", "a"),
         repr(ls),
     )
コード例 #10
0
 def test_repr_singular(self):
     ls = i18n.LocalizableString("foobar")
     self.assertEqual(
         "_({!r})".format("foobar"),
         repr(ls),
     )
コード例 #11
0
 def test_str_plural(self):
     ls = i18n.LocalizableString("foobar", "baz")
     self.assertEqual(
         "foobar",
         str(ls),
     )
コード例 #12
0
 def test_str_singular(self):
     ls = i18n.LocalizableString("foobar")
     self.assertEqual(
         "foobar",
         str(ls),
     )
コード例 #13
0
 def test_init_rejects_number_index_without_plural_string(self):
     with self.assertRaisesRegex(ValueError, "plural is required"):
         i18n.LocalizableString("abc", number_index=12)