mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-08-21 20:03:08 +09:00
90 lines
2.4 KiB
Python
90 lines
2.4 KiB
Python
# 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}}
|
|
)
|
|
]
|
|
})
|
|
]
|
|
}
|
|
)
|