'Testing HTTP header parsing. First, we test that we can parse the
values according to the spec (and that we extract all the pieces in
the right order).'

def test_parse_spec_http_header(self):

    p = trans_real.parse_accept_lang_header
    self.assertEqual([(u'de', 1.0)], p(u'de'))
    self.assertEqual([(u'en-AU', 1.0)], p(u'en-AU'))
    self.assertEqual([(u'es-419', 1.0)], p(u'es-419'))
    self.assertEqual([(u'*', 1.0)], p(u'*;q=1.00'))
    self.assertEqual([(u'en-AU', 0.123)], p(u'en-AU;q=0.123'))
    self.assertEqual([(u'en-au', 0.5)], p(u'en-au;q=0.5'))
    self.assertEqual([(u'en-au', 1.0)], p(u'en-au;q=1.0'))
    self.assertEqual([(u'da', 1.0), (u'en', 0.5), (u'en-gb', 0.25)], p(u'da,    en-gb;q=0.25,    en;q=0.5'))
    self.assertEqual([(u'en-au-xx', 1.0)], p(u'en-au-xx'))
    self.assertEqual([(u'de', 1.0), (u'en-au', 0.75), (u'en-us', 0.5), (u'en', 0.25), (u'es', 0.125), (u'fa', 0.125)], p(u'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([(u'*', 1.0)], p(u'*'))
    self.assertEqual([(u'de', 1.0)], p(u'de;q=0.'))
    self.assertEqual([(u'en', 1.0), (u'*', 0.5)], p(u'en;    q=1.0,    *    ;    q=0.5'))
    self.assertEqual([], p(u''))
    self.assertEqual([], p(u'en-gb;q=1.0000'))
    self.assertEqual([], p(u'en;q=0.1234'))
    self.assertEqual([], p(u'en;q=.2'))
    self.assertEqual([], p(u'abcdefghi-au'))
    self.assertEqual([], p(u'**'))
    self.assertEqual([], p(u'en,,gb'))
    self.assertEqual([], p(u'en-au;q=0.1.0'))
    self.assertEqual([], p(u'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXZ,en'))
    self.assertEqual([], p(u'da,    en-gb;q=0.8,    en;q=0.7,#'))
    self.assertEqual([], p(u'de;q=2.0'))
    self.assertEqual([], p(u'de;q=0.a'))
    self.assertEqual([], p(u'12-345'))
    self.assertEqual([], p(u''))
