2020-01-30 11:56:00 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
2020-02-03 17:25:54 +00:00
|
|
|
from benedict.dicts.keylist import keylist_util
|
2020-01-30 11:56:00 +00:00
|
|
|
|
|
|
|
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.
|
|
|
|
"""
|
2020-01-30 11:56:00 +00:00
|
|
|
|
2020-01-31 12:02:07 +00:00
|
|
|
def test_get_item_with_valid_keys(self):
|
|
|
|
d = {
|
2022-02-13 10:35:43 +00:00
|
|
|
"a": {
|
|
|
|
"b": {
|
|
|
|
"c": [1, 2, 3],
|
2020-01-31 12:02:07 +00:00
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
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,
|
|
|
|
),
|
|
|
|
)
|
2020-01-31 12:02:07 +00:00
|
|
|
|
|
|
|
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,
|
|
|
|
),
|
|
|
|
)
|
2020-01-31 12:02:07 +00:00
|
|
|
|
|
|
|
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,
|
|
|
|
),
|
|
|
|
)
|
2020-01-31 12:02:07 +00:00
|
|
|
|
2020-01-30 11:56:00 +00:00
|
|
|
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})
|
2020-01-30 11:56:00 +00:00
|
|
|
|
2022-02-13 10:35:43 +00:00
|
|
|
keylist_util.set_item(d, ["a", "b", "c"], 0)
|
|
|
|
self.assertEqual(d, {"a": {"b": {"c": 0}}})
|
2020-01-30 11:56:00 +00:00
|
|
|
|
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}}})
|
2020-01-31 12:02:07 +00:00
|
|
|
|
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]}}})
|
2020-01-30 11:56:00 +00:00
|
|
|
|
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)
|
2020-01-30 11:56:00 +00:00
|
|
|
# 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],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
)
|