예제 #1
0
    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')
예제 #2
0
    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')
예제 #3
0
    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
            }
        })
예제 #4
0
 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)
예제 #5
0
    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]
예제 #6
0
 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)
예제 #7
0
 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'}}})
예제 #8
0
 def test_empty_no_unintentional_set(self):
     d = NestedDict()
     item = d.get('a')
     assert (d == {})