forked from formencode/formencode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_variabledecode.py
More file actions
75 lines (48 loc) · 2.45 KB
/
Copy pathtest_variabledecode.py
File metadata and controls
75 lines (48 loc) · 2.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import unittest
from formencode.variabledecode import variable_decode, variable_encode
class TestVariableDecode(unittest.TestCase):
def test_list_decode(self):
src = {'a-0': 'a', 'a-1': 'b', 'a-2': 'c'}
expect = {'a': ['a', 'b', 'c']}
self.assertEqual(expect, variable_decode(src))
def test_list_decode_non_int(self):
src = {'a-0': 'a', 'a-a': 'b', 'a-2': 'c'}
expect = {'a': ['a', 'c'], 'a-a': 'b'}
self.assertEqual(expect, variable_decode(src))
def test_list_decode_double_dash(self):
src = {'a-0': 'a', 'a-1-2': 'b', 'a-3': 'c'}
expect = {'a': ['a', 'c'], 'a-1-2': 'b'}
self.assertEqual(expect, variable_decode(src))
def test_list_decode_non_int_nested(self):
src = {'a-0.name': 'a', 'a-a.name': 'b', 'a-2.name': 'c'}
expect = {'a': [{'name': 'a'}, {'name': 'c'}], 'a-a': {'name': 'b'}}
self.assertEqual(expect, variable_decode(src))
def test_dict_decode(self):
src = {'a.a': 'a', 'a.b': 'b', 'a.c': 'c'}
expect = {'a': {'a': 'a', 'b': 'b', 'c': 'c'}}
self.assertEqual(expect, variable_decode(src))
def test_list_dict(self):
src = {'a-0.name': 'a', 'a-1.name': 'b', 'a-2.name': 'c'}
expect = {'a': [{'name': 'a'}, {'name': 'b'}, {'name': 'c'}]}
self.assertEqual(expect, variable_decode(src))
def test_dict_list_dict(self):
src = {'a.b-0.name': 'a', 'a.b-1.name': 'b', 'a.b-2.name': 'c'}
expect = {'a': {'b': [{'name': 'a'}, {'name': 'b'}, {'name': 'c'}]}}
self.assertEqual(expect, variable_decode(src))
def test_list_dict_bad_key(self):
src = {'a-0.good': 'a', 'a.0.bad': 'b', 'a-1.good': 'c'}
expect = {'a': [{'good': 'a'}, {'good': 'c'}, {'bad': 'b'}]}
self.assertEqual(expect, variable_decode(src))
class TestVariableEncode(unittest.TestCase):
def test_list_encode(self):
src = {'a': ['a', 'b', 'c']}
expect = {'a--repetitions': '3', 'a-0': 'a', 'a-1': 'b', 'a-2': 'c'}
self.assertEqual(expect, variable_encode(src))
def test_list_encode_non_int(self):
src = {'a': ['a', 'c'], 'a-a': 'b'}
expect = {'a--repetitions': '2', 'a-0': 'a', 'a-a': 'b', 'a-1': 'c'}
self.assertEqual(expect, variable_encode(src))
def test_dict_encode(self):
src = {'a': {'a': 'a', 'b': 'b', 'c': 'c'}}
expect = {'a.a': 'a', 'a.b': 'b', 'a.c': 'c'}
self.assertEqual(expect, variable_encode(src))