Exemplo n.º 1
0
    def test_set_path_recurse(self):
        data = {
            'a': {
                'b': {},
                'c': [
                    {'b': {}}
                ]
            },
            'b': {}
        }

        tests = {
            '..*': {'a': 'T', 'b': 'T'},
            '..b': {'a': {'c': [{'b': 'T'}], 'b': 'T'}, 'b': 'T'},
            '..*.b': {'a': {'b': 'T', 'c': [{'b': {'b': 'T'}}]},
                      'b': {'b': 'T'}},
            '..:0': {'a': {'c': ['T'], 'b': {}}, 'b': {}},
            '..c..b': {'a': {'c': [{'b': 'T'}], 'b': {}}, 'b': {}},
            '..["b", "c"]': {'a': {'c': 'T', 'b': 'T'}, 'b': 'T'},
            '..["c", "b"]': {'a': {'c': 'T', 'b': 'T'}, 'b': 'T'},
        }

        for path, expected in tests.iteritems():
            test_data = deepcopy(data)
            set_path(test_data, path, 'T')
            self.assertEqual(test_data, expected,
                             "Can set recursive path '%s'" % path)
Exemplo n.º 2
0
    def test_set_path(self):
        data = {
            'c': 'C'
        }

        tests = {
            'a': {'a': 'T', 'c': 'C'},
            'a:0': {'a': ['T'], 'c': 'C'},
            'a.b': {'a': {'b': 'T'}, 'c': 'C'},
            '.*': {'c': 'T'}
        }

        for path, expected in tests.iteritems():
            self.assertEqual(set_path(deepcopy(data), path, 'T'), expected,
                             "Can set the path '%s'" % path)
Exemplo n.º 3
0
 def set(self, path_string, value, copy=True):
     return crud.set_path(self, path_string, value, copy)
Exemplo n.º 4
0
    def __setitem__(self, key, value):
        if isinstance(key, list):
            return crud.set_path(self, key[0], value, copy=True)

        return super(DataPathDict, self).__setitem__(key, value)
Exemplo n.º 5
0
 def set(self, path_string, value):
     return crud.set_path(self.data, path_string, value)