comparison test/test_misc.py @ 6347:3b945aee0919

accept_language parse; fix priority order; preserve insertion order There are conditions under which the order is not correctly returned. Use hashq.hashpop in a loop to get items out of hash (list) in proper priority order. Make 3 element tuples in hashq include insertion order. This makes tuples inserted later lower in priority when priority q values are the same. Makes: "zn;q=1.0;q= 1.0,pt-br,en-US; q=0.5" return ['zn', 'pt_br', 'en_US'] (pt_br is default prio of 1 like zn). Otherwise we get ['pt_br', 'zn', 'en_US'] since 'p' > 'z'.
author John Rouillard <rouilj@ieee.org>
date Sun, 21 Mar 2021 18:39:43 -0400
parents 9a09719b0d8e
children 5986ddd0d2e7
comparison
equal deleted inserted replaced
6346:7c6713e801d9 6347:3b945aee0919
6 6
7 class AcceptLanguageTest(unittest.TestCase): 7 class AcceptLanguageTest(unittest.TestCase):
8 def testParse(self): 8 def testParse(self):
9 self.assertEqual(parse("da, en-gb;q=0.8, en;q=0.7"), 9 self.assertEqual(parse("da, en-gb;q=0.8, en;q=0.7"),
10 ['da', 'en_gb', 'en']) 10 ['da', 'en_gb', 'en'])
11 self.assertEqual(parse("da, en-gb;q=0.7, en;q=0.8"),
12 ['da', 'en', 'en_gb'])
11 self.assertEqual(parse("en;q=0.2, fr;q=1"), ['fr', 'en']) 13 self.assertEqual(parse("en;q=0.2, fr;q=1"), ['fr', 'en'])
12 self.assertEqual(parse("zn; q = 0.2 ,pt-br;q =1"), ['pt_br', 'zn']) 14 self.assertEqual(parse("zn; q = 0.2 ,pt-br;q =1"), ['pt_br', 'zn'])
15 self.assertEqual(parse("pt-br;q =1, zn; q = 0.2"), ['pt_br', 'zn'])
16 self.assertEqual(parse("pt-br,zn;q= 0.1, en-US;q=0.5"),
17 ['pt_br', 'en_US', 'zn'])
18 # verify that items with q=1.0 are in same output order as input
19 self.assertEqual(parse("pt-br,en-US; q=0.5, zn;q= 1.0" ),
20 ['pt_br', 'zn', 'en_US'])
21 self.assertEqual(parse("zn;q=1.0;q= 1.0,pt-br,en-US; q=0.5" ),
22 ['zn', 'pt_br', 'en_US'])
13 self.assertEqual(parse("es-AR"), ['es_AR']) 23 self.assertEqual(parse("es-AR"), ['es_AR'])
14 self.assertEqual(parse("es-es-cat"), ['es_es_cat']) 24 self.assertEqual(parse("es-es-cat"), ['es_es_cat'])
15 self.assertEqual(parse(""), []) 25 self.assertEqual(parse(""), [])
16 self.assertEqual(parse(None),[]) 26 self.assertEqual(parse(None),[])
17 self.assertEqual(parse(" "), []) 27 self.assertEqual(parse(" "), [])

Roundup Issue Tracker: http://roundup-tracker.org/