def test_shallow_get_tuples(self): d = NestedDict() d[1, 2, 3] = 4 d[(1, 2, 3), ] = 5 assert (d.get((1, 2, 3)) == 5) assert (d.get(1) == {2: {3: 4}}) assert (d.get((1, 2, 4), 'arbitrary') == 'arbitrary')
def test_shallow_get(self): d = NestedDict() d[1, 2, 3] = 4 d[(1, 2, 3), ] = 5 assert (d.get(1) == {2: {3: 4}}) assert (d.get(2) is None) assert (d.get(2, 'arbitrary') == 'arbitrary')
def test_dict_init_tuples(self): d = NestedDict({(1, 2, 3): 4, (5, 6, 7): 8}) assert (d[(1, 2, 3), ] == 4) assert (d.get((1, 2, 3)) == 4) with pytest.raises(KeyError, message="Expecting KeyError"): i = d[(1, 2, 3)] d = NestedDict({ (1, 2, 3): { (4, 3, 2): 1, 'hello': 'goodbye' }, 'a': { ('a', 'b', 'c'): 2 } }) assert (d == { (1, 2, 3): { (4, 3, 2): 1, 'hello': 'goodbye' }, 'a': { ('a', 'b', 'c'): 2 } })
def test_delitem(self): x = NestedDict({"a": {"b": 1}}) self.assertEqual(x.get('a'), {"b": 1}) del x['a.b'] self.assertTrue('a' in x) self.assertFalse('a.b' in x) x = NestedDict({"a": {"b": 1}}) del x['a'] self.assertFalse('a.b' in x) self.assertFalse('a' in x)
def test_set(self): d = NestedDict() d.set((1, 2, 3), 4) assert (d[(1, 2, 3), ] == 4) assert (d.get((1, 2, 3)) == 4) with pytest.raises(KeyError, message="Unintentional assignment in `set`"): item = d[1, 2, 3]
def test_get(self): x = NestedDict({"a": {"b": 1}}) self.assertEqual(x.get('a'), {"b": 1}) self.assertEqual(x.get('z'), None) self.assertEqual(x.get('z', 20), 20) self.assertEqual(x.get('a.b'), 1)
def test_nonempty_no_unintentional_set(self): d = NestedDict() d[1, 2, 3] = 'hello' d[1, 2, 4] = 'goodbye' item = d.get(2) assert (d == {1: {2: {3: 'hello', 4: 'goodbye'}}})
def test_empty_no_unintentional_set(self): d = NestedDict() item = d.get('a') assert (d == {})