def test_query_string_parser_expands_uri_array(self):
        parser = parse.QueryString()
        parser.parse(
            'field[spam]=foo&field[eggs][42]=bar&field[ham][spam][eggs]=baz')
        self.assertEqual(
            parser, {
                'field[spam]': 'foo',
                'field[eggs][42]': 'bar',
                'field[ham][spam][eggs]': 'baz'
            })

        parser.expand_array()
        self.assertEqual(
            parser, {
                'field': {
                    'spam': 'foo',
                    'eggs': {
                        '42': 'bar'
                    },
                    'ham': {
                        'spam': {
                            'eggs': 'baz'
                        }
                    }
                }
            })
    def test_query_string_parser_expands_dots(self):
        parser = parse.QueryString()
        parser.parse(
            'field.spam=foo&field.eggs.42=bar&field.ham.spam.eggs=baz')
        self.assertEqual(
            parser, {
                'field.spam': 'foo',
                'field.eggs.42': 'bar',
                'field.ham.spam.eggs': 'baz'
            })

        parser.expand_dots()
        self.assertEqual(
            parser, {
                'field': {
                    'spam': 'foo',
                    'eggs': {
                        '42': 'bar'
                    },
                    'ham': {
                        'spam': {
                            'eggs': 'baz'
                        }
                    }
                }
            })
 def test_expand_dots_returns_the_parser_instance(self):
     parser = parse.QueryString()
     parser.parse(
         'field.spam=foo&field.eggs.42=bar&field.ham.spam.eggs=baz')
     parsed = parser.expand_dots()
     self.assertIs(parser, parsed)
     self.assertEqual(
         parsed, {
             'field': {
                 'spam': 'foo',
                 'eggs': {
                     '42': 'bar'
                 },
                 'ham': {
                     'spam': {
                         'eggs': 'baz'
                     }
                 }
             }
         })
 def test_expand_array_returns_the_parser_instance(self):
     parser = parse.QueryString()
     parser.parse(
         'field[spam]=foo&field[eggs][42]=bar&field[ham][spam][eggs]=baz')
     parsed = parser.expand_array()
     self.assertIs(parser, parsed)
     self.assertEqual(
         parsed, {
             'field': {
                 'spam': 'foo',
                 'eggs': {
                     '42': 'bar'
                 },
                 'ham': {
                     'spam': {
                         'eggs': 'baz'
                     }
                 }
             }
         })
 def test_query_string_parser_known_values(self):
     for original, expected in self.known_values:
         parser = parse.QueryString()
         parser.parse(original)
         self.assertEqual(parser, expected)
 def test_query_string_parser_dot_expansion_known_values(self):
     for parsed, expanded in self.known_values:
         parser = parse.QueryString(parsed)
         parser.expand_dots()
         self.assertEqual(parser, expanded)
 def test_parse_method_returns_the_parser_instance(self):
     parser = parse.QueryString()
     parsed = parser.parse('foo=bar&foo=ham&foo=baz')
     self.assertIs(parser, parsed)
     self.assertEqual(parsed, {'foo': ['bar', 'ham', 'baz']})
 def test_query_string_parser_parses_params_with_duplicate_keys(self):
     parser = parse.QueryString()
     parser.parse('foo=bar&foo=ham&foo=baz')
     self.assertEqual(parser['foo'], ['bar', 'ham', 'baz'])
 def test_query_string_parser_parses_raw_querystring(self):
     parser = parse.QueryString()
     parser.parse('field1=foo&field2=bar&field3=baz')
     self.assertEqual(parser['field1'], 'foo')
     self.assertEqual(parser['field2'], 'bar')
     self.assertEqual(parser['field3'], 'baz')
 def test_query_string_parser_behaves_like_dict(self):
     parser = parse.QueryString()
     parser['foo'] = 'bar'
     self.assertEqual(parser['foo'], 'bar')
 def test_query_string_parser_is_dict_instance(self):
     parser = parse.QueryString()
     self.assertTrue(isinstance(parser, dict))