python-benedict/tests/core/test_keylists.py

205 lines
5.0 KiB
Python
Raw Normal View History

2020-02-04 09:33:20 +00:00
# -*- coding: utf-8 -*-
from benedict.core import keylists as _keylists
import unittest
class keylists_test_case(unittest.TestCase):
def test_keylists(self):
i = {
'a': 1,
'b': {
'c': {
'x': 2,
'y': 3,
},
'd': {
'x': 4,
'y': 5,
},
},
}
o = _keylists(i)
r = [
['a'],
['b'],
['b', 'c'],
['b', 'c', 'x'],
['b', 'c', 'y'],
['b', 'd'],
['b', 'd', 'x'],
['b', 'd', 'y'],
]
2020-02-04 11:45:08 +00:00
for k in r:
self.assertTrue(k in o)
2020-02-04 09:33:20 +00:00
def test_keylists_with_non_string_keys(self):
i = {
True: {
True: 1,
},
False: {
False: 1,
},
None: {
None: 1,
},
}
o = _keylists(i)
r = [
[False],
[False, False],
[None],
[None, None],
[True],
[True, True],
]
for k in r:
self.assertTrue(k in o)
def test_keylists_with_lists_and_indexes_included(self):
i = {
'a': 1,
'b': {
'c': {
'x': 2,
'y': 3,
},
'd': {
'x': 4,
'y': 5,
},
'e': [
{
'x': 1,
'y': -1,
'z': [1, 2, 3],
},
{
'x': 2,
'y': -2,
'z': [2, 3, 4],
},
{
'x': 3,
'y': -3,
'z': [3, 4, 5],
},
]
},
}
o = _keylists(i, indexes=True)
r = [
['a'],
['b'],
['b', 'c'],
['b', 'c', 'x'],
['b', 'c', 'y'],
['b', 'd'],
['b', 'd', 'x'],
['b', 'd', 'y'],
['b', 'e'],
['b', 'e[0]'],
['b', 'e[0]', 'x'],
['b', 'e[0]', 'y'],
['b', 'e[0]', 'z'],
['b', 'e[0]', 'z[0]'],
['b', 'e[0]', 'z[1]'],
['b', 'e[0]', 'z[2]'],
['b', 'e[1]'],
['b', 'e[1]', 'x'],
['b', 'e[1]', 'y'],
['b', 'e[1]', 'z'],
['b', 'e[1]', 'z[0]'],
['b', 'e[1]', 'z[1]'],
['b', 'e[1]', 'z[2]'],
['b', 'e[2]'],
['b', 'e[2]', 'x'],
['b', 'e[2]', 'y'],
['b', 'e[2]', 'z'],
['b', 'e[2]', 'z[0]'],
['b', 'e[2]', 'z[1]'],
['b', 'e[2]', 'z[2]'],
]
self.assertEqual(o, r)
def test_keylists_with_nested_lists_and_indexes_included(self):
i = {
'a': {
'b': [
[1, 2],
[3, 4, 5],
[
{
'x': 1,
'y': -1,
},
] ,
],
},
}
o = _keylists(i, indexes=True)
r = [
['a'],
['a', 'b'],
['a', 'b[0]'],
['a', 'b[0][0]'],
['a', 'b[0][1]'],
['a', 'b[1]'],
['a', 'b[1][0]'],
['a', 'b[1][1]'],
['a', 'b[1][2]'],
['a', 'b[2]'],
['a', 'b[2][0]'],
['a', 'b[2][0]', 'x'],
['a', 'b[2][0]' ,'y'],
]
self.assertEqual(o, r)
def test_keylists_with_lists_and_indexes_not_included(self):
i = {
'a': 1,
'b': {
'c': {
'x': 2,
'y': 3,
},
'd': {
'x': 4,
'y': 5,
},
'e': [
{
'x': 1,
'y': -1,
'z': [1, 2, 3],
},
{
'x': 2,
'y': -2,
'z': [2, 3, 4],
},
{
'x': 3,
'y': -3,
'z': [3, 4, 5],
},
]
},
}
o = _keylists(i, indexes=False)
r = [
['a'],
['b'],
['b', 'c'],
['b', 'c', 'x'],
['b', 'c', 'y'],
['b', 'd'],
['b', 'd', 'x'],
['b', 'd', 'y'],
['b', 'e'],
]
self.assertEqual(o, r)