python-benedict/tests/dicts/keylist/test_keylist_util.py

146 lines
3.5 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
from benedict.dicts.keylist import keylist_util
import unittest
class keylist_util_test_case(unittest.TestCase):
2022-02-13 10:35:43 +00:00
"""
This class describes a keylist utility test case.
"""
def test_get_item_with_valid_keys(self):
d = {
2022-02-13 10:35:43 +00:00
"a": {
"b": {
"c": [1, 2, 3],
},
},
}
2022-02-13 10:35:43 +00:00
item = keylist_util.get_item(d, ["a", "b"])
self.assertEqual(
item,
(
d["a"],
"b",
d["a"]["b"],
),
)
item = keylist_util.get_item(d, ["a", "b", "c"])
self.assertEqual(
item,
(
d["a"]["b"],
"c",
[1, 2, 3],
),
)
item = keylist_util.get_item(d, ["a", "b", "c", 0])
self.assertEqual(
item,
(
d["a"]["b"]["c"],
0,
1,
),
)
def test_get_item_with_empty_dict(self):
d = {}
2022-02-13 10:35:43 +00:00
item = keylist_util.get_item(d, ["a"])
self.assertEqual(
item,
(
None,
None,
None,
),
)
item = keylist_util.get_item(d, ["a", "b"])
self.assertEqual(
item,
(
None,
None,
None,
),
)
item = keylist_util.get_item(d, ["a", 0])
self.assertEqual(
item,
(
None,
None,
None,
),
)
def test_get_item_with_empty_keys(self):
d = {}
item = keylist_util.get_item(d, [])
2022-02-13 10:35:43 +00:00
self.assertEqual(
item,
(
None,
None,
None,
),
)
def test_set_item_with_indexes(self):
d = {}
2022-02-13 10:35:43 +00:00
keylist_util.set_item(d, "a", None)
self.assertEqual(d, {"a": None})
2022-02-13 10:35:43 +00:00
keylist_util.set_item(d, ["a", "b", "c"], 0)
self.assertEqual(d, {"a": {"b": {"c": 0}}})
2022-02-13 10:35:43 +00:00
keylist_util.set_item(d, ["a", "b", "d"], 1)
self.assertEqual(d, {"a": {"b": {"c": 0, "d": 1}}})
2022-02-13 10:35:43 +00:00
keylist_util.set_item(d, ["a", "b", "e", 0], 1)
keylist_util.set_item(d, ["a", "b", "e", 1], 2)
keylist_util.set_item(d, ["a", "b", "e", 2], 3)
self.assertEqual(d, {"a": {"b": {"c": 0, "d": 1, "e": [1, 2, 3]}}})
2022-02-13 10:35:43 +00:00
keylist_util.set_item(d, ["a", "b", "e", 0], 4)
keylist_util.set_item(d, ["a", "b", "e", 1], 5)
keylist_util.set_item(d, ["a", "b", "e", 2], 6)
# keylist_util.set_item(d, ['a', 'b', 'e', 3], 7)
# keylist_util.set_item(d, ['a', 'b', 'e', 4], 8)
2022-02-13 10:35:43 +00:00
keylist_util.set_item(d, ["a", "b", "e", 5], 9)
self.assertEqual(
d,
{
"a": {
"b": {
"c": 0,
"d": 1,
"e": [4, 5, 6, None, None, 9],
},
},
},
)
keylist_util.set_item(d, ["a", "b", "e", -11], 10)
self.assertEqual(
d,
{
"a": {
"b": {
"c": 0,
"d": 1,
"e": [10, 4, 5, 6, None, None, 9],
},
},
},
)