def test_set_defaults(self): jps = JSONPointerStore() value1 = {'b':{}} value2 = {'c':{}} doc = {} name1, expr1 = '1', config_value('/a') name2, expr2 = '2', config_value('/a/b') jps.add(name1, expr1) jps.add(name2, expr2) jps.set(name1, doc, value1) value = jps.get(name1, doc) self.assertEquals(value, value1) jps.set(name2, doc, value2) value = jps.get(name2, doc) self.assertDictEqual(value, value2)
def test_set_defaults(self): jps = JSONPointerStore() value1 = {'b': {}} value2 = {'c': {}} doc = {} name1, expr1 = '1', config_value('/a') name2, expr2 = '2', config_value('/a/b') jps.add(name1, Bunch(value=expr1.value)) jps.add(name2, Bunch(value=expr2.value)) jps.set(name1, doc, value1) value = jps.get(name1, doc) self.assertEquals(value, value1) jps.set(name2, doc, value2) value = jps.get(name2, doc) self.assertDictEqual(value, value2)
def test_set_create_missing(self): jps = JSONPointerStore() doc = {} name1, expr1, value1 = '1', config_value('/a/b/c/d'), rand_string() name2, expr2, value2 = '2', config_value('/a/b/c/dd'), rand_string() name3, expr3, value3 = '3', config_value('/a/b/cc/d'), rand_string() jps.add(name1, expr1) jps.add(name2, expr2) jps.add(name3, expr3) # Creates all the missing path parts in the empty document jps.set(name1, doc, value1) jps.set(name2, doc, value2) jps.set(name3, doc, value3) doc = bunchify(doc) self.assertEquals(doc.a.b.c.d, value1) self.assertEquals(doc.a.b.c.dd, value2) self.assertEquals(doc.a.b.cc.d, value3)
def test_set_create_missing(self): jps = JSONPointerStore() doc = {} name1, expr1, value1 = '1', config_value('/a/b/c/d'), rand_string() name2, expr2, value2 = '2', config_value('/a/b/c/dd'), rand_string() name3, expr3, value3 = '3', config_value('/a/b/cc/d'), rand_string() jps.add(name1, Bunch(value=expr1.value)) jps.add(name2, Bunch(value=expr2.value)) jps.add(name3, Bunch(value=expr3.value)) # Creates all the missing path parts in the empty document jps.set(name1, doc, value1) jps.set(name2, doc, value2) jps.set(name3, doc, value3) doc = bunchify(doc) self.assertEquals(doc.a.b.c.d, value1) self.assertEquals(doc.a.b.c.dd, value2) self.assertEquals(doc.a.b.cc.d, value3)
def test_set_skip_missing(self): jps = JSONPointerStore() doc = {} name1, expr1 = '1', config_value('/a') name2, expr2 = '2', config_value('/b') value1, value2 = rand_string(2) default1, default2 = rand_string(2) jps.add(name1, expr1) jps.add(name2, expr2) # value is equal to default1 because it is never set by jps.set jps.set(name1, doc, value1, True) value = jps.get(name1, doc, default1) self.assertEquals(value, default1) self.assertDictEqual(doc, {}) jps.set(name2, doc, value2) value = jps.get(name2, doc, default2) self.assertEquals(value, value2) self.assertDictEqual(doc, {'b':value2})
def test_set_skip_missing(self): jps = JSONPointerStore() doc = {} name1, expr1 = '1', config_value('/a') name2, expr2 = '2', config_value('/b') value1, value2 = rand_string(2) default1, default2 = rand_string(2) jps.add(name1, Bunch(value=expr1.value)) jps.add(name2, Bunch(value=expr2.value)) # value is equal to default1 because it is never set by jps.set jps.set(name1, doc, value1, True) value = jps.get(name1, doc, default1) self.assertEquals(value, default1) self.assertDictEqual(doc, {}) jps.set(name2, doc, value2) value = jps.get(name2, doc, default2) self.assertEquals(value, value2) self.assertDictEqual(doc, {'b': value2})
def test_set_in_place(self): jps = JSONPointerStore() doc = {'a':'b'} value_random = rand_string() name1, expr1 = '1', config_value('/a') jps.add(name1, expr1) # in_place is False so a new doc is created and the previous one should be retained new_doc = jps.set(name1, doc, value_random, True, in_place=False) value = jps.get(name1, new_doc) self.assertEquals(value, value_random) value = jps.get(name1, doc) self.assertEquals(value, 'b')
def test_set_in_place(self): jps = JSONPointerStore() doc = {'a': 'b'} value_random = rand_string() name1, expr1 = '1', config_value('/a') jps.add(name1, Bunch(value=expr1.value)) # in_place is False so a new doc is created and the previous one should be retained new_doc = jps.set(name1, doc, value_random, True, in_place=False) value = jps.get(name1, new_doc) self.assertEquals(value, value_random) value = jps.get(name1, doc) self.assertEquals(value, 'b')