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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import unittest
from compare_locales import compare
class TestTree(unittest.TestCase):
'''Test the Tree utility class
Tree value classes need to be in-place editable
'''
def test_empty_dict(self):
tree = compare.Tree(dict)
self.assertEqual(list(tree.getContent()), [])
self.assertDictEqual(
tree.toJSON(),
{}
)
def test_disjoint_dict(self):
tree = compare.Tree(dict)
tree['one/entry']['leaf'] = 1
tree['two/other']['leaf'] = 2
self.assertEqual(
list(tree.getContent()),
[
(0, 'key', ('one', 'entry')),
(1, 'value', {'leaf': 1}),
(0, 'key', ('two', 'other')),
(1, 'value', {'leaf': 2})
]
)
self.assertDictEqual(
tree.toJSON(),
{
'children': [
('one/entry',
{'value': {'leaf': 1}}
),
('two/other',
{'value': {'leaf': 2}}
)
]
}
)
self.assertMultiLineEqual(
str(tree),
'''\
one/entry
{'leaf': 1}
two/other
{'leaf': 2}\
'''
)
def test_overlapping_dict(self):
tree = compare.Tree(dict)
tree['one/entry']['leaf'] = 1
tree['one/other']['leaf'] = 2
self.assertEqual(
list(tree.getContent()),
[
(0, 'key', ('one',)),
(1, 'key', ('entry',)),
(2, 'value', {'leaf': 1}),
(1, 'key', ('other',)),
(2, 'value', {'leaf': 2})
]
)
self.assertDictEqual(
tree.toJSON(),
{
'children': [
('one', {
'children': [
('entry',
{'value': {'leaf': 1}}
),
('other',
{'value': {'leaf': 2}}
)
]
})
]
}
)
|