def testSortKey(self): item = util.AcceptItem('main/sub; q=0.2; level=3', 11) self.assertEqual((False, False, -0.2, False, 11), item.sort_key) item = util.AcceptItem('main/*', 12) self.assertEqual((False, True, -1, True, 12), item.sort_key) item = util.AcceptItem('*/*', 1) self.assertEqual((True, True, -1, True, 1), item.sort_key)
def testStr(self): self.assertHeaderSame('*/*', str(util.AcceptItem('*/*', 1))) self.assertHeaderSame('text/*', str(util.AcceptItem('text/*', 1))) self.assertHeaderSame('text/plain', str(util.AcceptItem('text/plain', 1))) self.assertHeaderSame('text/plain; q=0.2', str(util.AcceptItem('text/plain; q=0.2', 1))) self.assertHeaderSame( 'text/plain; q=0.2; level=1', str(util.AcceptItem('text/plain; level=1; q=0.2', 1)))
def testSort(self): i1 = util.AcceptItem('text/*', 1) i2 = util.AcceptItem('text/html', 2) i3 = util.AcceptItem('text/html; q=0.9', 3) i4 = util.AcceptItem('text/html; q=0.3', 4) i5 = util.AcceptItem('text/xml', 5) i6 = util.AcceptItem('text/html; level=1', 6) i7 = util.AcceptItem('*/*', 7) items = [i1, i2, i3, i4, i5, i6, i7] random.shuffle(items) self.assertEqual([i6, i2, i5, i3, i4, i1, i7], sorted(items))
def testParse(self): self.CheckAttributes(util.AcceptItem('*/*', 1), None, None) self.CheckAttributes(util.AcceptItem('text/*', 1), 'text', None) self.CheckAttributes(util.AcceptItem('text/plain', 1), 'text', 'plain') self.CheckAttributes( util.AcceptItem('text/plain; q=0.3', 1), 'text', 'plain', 0.3, values={'q': '0.3'}) self.CheckAttributes( util.AcceptItem('text/plain; level=2', 1), 'text', 'plain', values={'level': '2'}) self.CheckAttributes( util.AcceptItem('text/plain', 10), 'text', 'plain', index=10)
def testValues(self): item = util.AcceptItem('text/plain; a=1; b=2; c=3;', 1) values = item.values self.assertEqual(dict(a="1", b="2", c="3"), values) values['a'] = "7" self.assertNotEqual(values, item.values)
def testRepr(self): self.assertEqual("AcceptItem('*/*', 1)", repr(util.AcceptItem('*/*', 1))) self.assertEqual("AcceptItem('text/plain', 11)", repr(util.AcceptItem('text/plain', 11)))
def testMatchCaseInsensitive(self): item = util.AcceptItem('text/plain', 1) self.assertTrue(item.match('tExt/pLain'))
def testMatchFullType(self): item = util.AcceptItem('text/plain', 1) self.assertFalse(item.match('text/html')) self.assertTrue(item.match('text/plain; level=1')) self.assertFalse(item.match('image/png')) self.assertFalse(item.match('image/png; q=0.3'))
def testMatchAll(self): item = util.AcceptItem('*/*', 1) self.assertTrue(item.match('text/html')) self.assertTrue(item.match('text/plain; level=1')) self.assertTrue(item.match('image/png')) self.assertTrue(item.match('image/png; q=0.3'))
def testCaseInsensitive(self): self.CheckAttributes(util.AcceptItem('Text/Plain', 1), 'text', 'plain')