Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)
Esempio n. 4
0
    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)
Esempio n. 5
0
    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})
Esempio n. 6
0
    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})
Esempio n. 7
0
    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')
Esempio n. 8
0
    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')