python-benedict/tests/core/test_traverse.py

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)