diff --git a/tests/i18n/tests.py b/tests/i18n/tests.py index 2cbf18f573..57adaae6a9 100644 --- a/tests/i18n/tests.py +++ b/tests/i18n/tests.py @@ -1098,45 +1098,42 @@ class MiscTests(SimpleTestCase): values according to the spec (and that we extract all the pieces in the right order). """ - p = trans_real.parse_accept_lang_header - # Good headers. - self.assertEqual([('de', 1.0)], p('de')) - self.assertEqual([('en-au', 1.0)], p('en-AU')) - self.assertEqual([('es-419', 1.0)], p('es-419')) - self.assertEqual([('*', 1.0)], p('*;q=1.00')) - self.assertEqual([('en-au', 0.123)], p('en-AU;q=0.123')) - self.assertEqual([('en-au', 0.5)], p('en-au;q=0.5')) - self.assertEqual([('en-au', 1.0)], p('en-au;q=1.0')) - self.assertEqual([('da', 1.0), ('en', 0.5), ('en-gb', 0.25)], p('da, en-gb;q=0.25, en;q=0.5')) - self.assertEqual([('en-au-xx', 1.0)], p('en-au-xx')) - self.assertEqual( - [('de', 1.0), ('en-au', 0.75), ('en-us', 0.5), ('en', 0.25), ('es', 0.125), ('fa', 0.125)], - p('de,en-au;q=0.75,en-us;q=0.5,en;q=0.25,es;q=0.125,fa;q=0.125') - ) - self.assertEqual([('*', 1.0)], p('*')) - self.assertEqual([('de', 0.0)], p('de;q=0.')) - self.assertEqual([('en', 1.0), ('*', 0.5)], p('en; q=1.0, * ; q=0.5')) - self.assertEqual([('en', 1.0)], p('en; q=1,')) - self.assertEqual([], p('')) - - # Bad headers; should always return []. - self.assertEqual([], p('en-gb;q=1.0000')) - self.assertEqual([], p('en;q=0.1234')) - self.assertEqual([], p('en;q=.2')) - self.assertEqual([], p('abcdefghi-au')) - self.assertEqual([], p('**')) - self.assertEqual([], p('en,,gb')) - self.assertEqual([], p('en-au;q=0.1.0')) - self.assertEqual( - [], - p('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXZ,en') - ) - self.assertEqual([], p('da, en-gb;q=0.8, en;q=0.7,#')) - self.assertEqual([], p('de;q=2.0')) - self.assertEqual([], p('de;q=0.a')) - self.assertEqual([], p('12-345')) - self.assertEqual([], p('')) - self.assertEqual([], p('en;q=1e0')) + tests = [ + # Good headers + ('de', [('de', 1.0)]), + ('en-AU', [('en-au', 1.0)]), + ('es-419', [('es-419', 1.0)]), + ('*;q=1.00', [('*', 1.0)]), + ('en-AU;q=0.123', [('en-au', 0.123)]), + ('en-au;q=0.5', [('en-au', 0.5)]), + ('en-au;q=1.0', [('en-au', 1.0)]), + ('da, en-gb;q=0.25, en;q=0.5', [('da', 1.0), ('en', 0.5), ('en-gb', 0.25)]), + ('en-au-xx', [('en-au-xx', 1.0)]), + ('de,en-au;q=0.75,en-us;q=0.5,en;q=0.25,es;q=0.125,fa;q=0.125', + [('de', 1.0), ('en-au', 0.75), ('en-us', 0.5), ('en', 0.25), ('es', 0.125), ('fa', 0.125)]), + ('*', [('*', 1.0)]), + ('de;q=0.', [('de', 0.0)]), + ('en; q=1,', [('en', 1.0)]), + ('en; q=1.0, * ; q=0.5', [('en', 1.0), ('*', 0.5)]), + # Bad headers + ('en-gb;q=1.0000', []), + ('en;q=0.1234', [], ), + ('en;q=.2', []), + ('abcdefghi-au', []), + ('**', []), + ('en,,gb', []), + ('en-au;q=0.1.0', []), + (('X' * 97) + 'Z,en', []), + ('da, en-gb;q=0.8, en;q=0.7,#', []), + ('de;q=2.0', []), + ('de;q=0.a', []), + ('12-345', []), + ('', []), + ('en;q=1e0', []), + ] + for value, expected in tests: + with self.subTest(value=value): + self.assertEqual(trans_real.parse_accept_lang_header(value), expected) def test_parse_literal_http_header(self): """