def test_loads_list_impostors(self): to_loads = urlencode({ 'a': 'Hello', 'b': 'Goodbye', 'b2': 'I-try-to-be-a-list', 'l_desc1': '1', 'l_desc2': '2', 'l_foo_0_bar0': '1', 'l_foo_0_bar1': '2', 'l_foo_0_bar33': 'haha', 'l_foo_33_bar0': 'muhaha', 'l_not-a-list_1_bar': 'evil', }) loaded = nvp.loads(to_loads) self.assertEqual(loaded, { 'a': 'Hello', 'a': 'Hello', 'b': 'Goodbye', 'b2': 'I-try-to-be-a-list', 'l': { 'desc1': '1', 'desc2': '2', 'foo': [{ 'bar': ['1', '2'], 'bar33': 'haha', }], 'foo_33': { 'bar': ['muhaha'], }, 'not-a-list_1': { 'bar': 'evil', } }, })
def test_loads_with_key_filter(self): def key_to_lower(key): return key.lower() to_loads = 'A=1&B=2&C=3' expected = dict(a='1', b='2', c='3') loaded = nvp.loads(to_loads, key_filter=key_to_lower) self.assertEqual(expected, loaded)
def test_loads_with_value_filter(self): def value_filter(value): return int(value) / 10 to_loads = 'a=10&b=20&c=30' expected = dict(a=1, b=2, c=3) loaded = nvp.loads(to_loads, value_filter=value_filter) self.assertEqual(expected, loaded)
def test_loads(self): """Test decoding all encoded data source values using nvp.loads.""" decoded = self.data_source['decoded'] encoded = self.data_source['encoded'] for name, encoded_obj in encoded.iteritems(): to_match = decoded[name] for convention in nvp.CONVENTIONS: query_string = encoded_obj[convention] value = nvp.loads(query_string) self.assertEqual(value, to_match)
def decode(cls, encoded_response): return nvp.loads(encoded_response, key_filter=cls.decode_key_filter, value_filter=cls.decode_value_filter)