Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 106 additions & 1 deletion Lib/test/test_gettext.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@


# TODO:
# - Add new tests, for example for "dgettext"
# - Add new tests, for example for "dgettext", "dngettext", "dpgettext",
# "dnpgettext" (gh-130655)
# - Tests should have only one assert.

GNU_MO_DATA = b'''\
Expand Down Expand Up @@ -944,6 +945,110 @@ def test_translation_fallback(self):
self.assertIsInstance(t, gettext.NullTranslations)


class DGettextTests(GettextBaseTest):

def setUp(self):
super().setUp()
gettext.bindtextdomain('gettext', os.curdir)
gettext.textdomain('gettext')

def test_dgettext_translation(self):
cases = [
('gettext', 'nudge nudge', 'wink wink'),
('gettext', 'mullusk', 'bacon'),
('gettext', 'Raymond Luxury Yach-t', 'Throatwobbler Mangrove'),
('gettext', 'albatross', 'albatross'),
('gettext', 'missing message', 'missing message'),
('nonexistent_domain', 'mullusk', 'mullusk'),
('', 'mullusk', 'mullusk'),
]
for domain, msgid, expected in cases:
with self.subTest(domain=domain, msgid=msgid):
self.assertEqual(gettext.dgettext(domain, msgid), expected)


class DnGettextTests(GettextBaseTest):

def setUp(self):
super().setUp()
gettext.bindtextdomain('gettext', os.curdir)
gettext.textdomain('gettext')

def test_dngettext_translation(self):
cases = [
('gettext', 'There is %s file', 'There are %s files', 1,
'Hay %s fichero'),
('gettext', 'There is %s file', 'There are %s files', 5,
'Hay %s ficheros'),
('gettext', '%d file deleted', '%d files deleted', 1,
'%d file deleted'),
('gettext', '%d file deleted', '%d files deleted', 5,
'%d files deleted'),
('nonexistent_domain', 'There is %s file', 'There are %s files', 1,
'There is %s file'),
('nonexistent_domain', 'There is %s file', 'There are %s files', 5,
'There are %s files'),
]
for domain, msgid1, msgid2, n, expected in cases:
with self.subTest(domain=domain, n=n):
self.assertEqual(gettext.dngettext(domain, msgid1, msgid2, n),
expected)


class DpGettextTests(GettextBaseTest):

def setUp(self):
super().setUp()
gettext.bindtextdomain('gettext', os.curdir)
gettext.textdomain('gettext')

def test_dpgettext_translation(self):
cases = [
('gettext', 'my context', 'nudge nudge',
'wink wink (in "my context")'),
('gettext', 'my other context', 'nudge nudge',
'wink wink (in "my other context")'),
('gettext', 'my context', 'albatross', 'albatross'),
('gettext', 'wrong context', 'nudge nudge', 'nudge nudge'),
('nonexistent_domain', 'my context', 'nudge nudge', 'nudge nudge'),
]
for domain, context, msgid, expected in cases:
with self.subTest(domain=domain, context=context):
self.assertEqual(gettext.dpgettext(domain, context, msgid),
expected)


class DnpGettextTests(GettextBaseTest):

def setUp(self):
super().setUp()
gettext.bindtextdomain('gettext', os.curdir)
gettext.textdomain('gettext')

def test_dnpgettext_translation(self):
cases = [
('gettext', 'With context', 'There is %s file',
'There are %s files', 1, 'Hay %s fichero (context)'),
('gettext', 'With context', 'There is %s file',
'There are %s files', 5, 'Hay %s ficheros (context)'),
('gettext', 'With context', '%d file deleted',
'%d files deleted', 1, '%d file deleted'),
('gettext', 'With context', '%d file deleted',
'%d files deleted', 5, '%d files deleted'),
('gettext', 'Wrong context', 'There is %s file',
'There are %s files', 1, 'There is %s file'),
('nonexistent_domain', 'With context', 'There is %s file',
'There are %s files', 1, 'There is %s file'),
('nonexistent_domain', 'With context', 'There is %s file',
'There are %s files', 5, 'There are %s files'),
]
for domain, context, msgid1, msgid2, n, expected in cases:
with self.subTest(domain=domain, context=context, n=n):
self.assertEqual(
gettext.dnpgettext(domain, context, msgid1, msgid2, n),
expected)


if __name__ == '__main__':
unittest.main()

Expand Down
Loading