69 lines
1.5 KiB
Python
69 lines
1.5 KiB
Python
import unittest
|
|
|
|
from benedict.core import clone as _clone
|
|
from benedict.core import traverse as _traverse
|
|
|
|
|
|
class traverse_test_case(unittest.TestCase):
|
|
"""
|
|
This class describes a traverse test case.
|
|
"""
|
|
|
|
def test_traverse(self):
|
|
i = {
|
|
"a": {
|
|
"x": 2,
|
|
"y": 3,
|
|
"z": {
|
|
"ok": 5,
|
|
},
|
|
},
|
|
"b": {
|
|
"x": 7,
|
|
"y": 11,
|
|
"z": {
|
|
"ok": 13,
|
|
},
|
|
},
|
|
"c": {
|
|
"x": 17,
|
|
"y": 19,
|
|
"z": {
|
|
"ok": 23,
|
|
},
|
|
},
|
|
}
|
|
o = _clone(i)
|
|
with self.assertRaises(ValueError):
|
|
_traverse(o, True)
|
|
|
|
def f(parent, key, value):
|
|
if not isinstance(value, dict):
|
|
parent[key] = value + 1
|
|
|
|
_traverse(o, f)
|
|
r = {
|
|
"a": {
|
|
"x": 3,
|
|
"y": 4,
|
|
"z": {
|
|
"ok": 6,
|
|
},
|
|
},
|
|
"b": {
|
|
"x": 8,
|
|
"y": 12,
|
|
"z": {
|
|
"ok": 14,
|
|
},
|
|
},
|
|
"c": {
|
|
"x": 18,
|
|
"y": 20,
|
|
"z": {
|
|
"ok": 24,
|
|
},
|
|
},
|
|
}
|
|
self.assertEqual(o, r)
|