예제 #1
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')
예제 #2
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')
예제 #3
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)
예제 #4
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)
예제 #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})
예제 #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})
예제 #7
0
    def test_get(self):
        jps = JSONPointerStore()

        c_value, d_value = rand_string(2)

        doc = {
            'a': {
                'b': [
                    {'c': c_value},
                    {'d': d_value},
                ]
            },
            'e': None,
            'f': 0
        }

        name1, expr1 = '1', config_value('/a')
        name2, expr2 = '2', config_value('/a/b')
        name3, expr3 = '3', config_value('/a/b/0')
        name4, expr4 = '4', config_value('/a/b/1')
        name5, expr5 = '5', config_value('/a/b/0/c')

        # This will return default because the path points to None
        name6, expr6 = '6', config_value('/e')

        # This will return default because there is no such path
        name7, expr7 = '7', config_value('/e/e2/e3')

        # This will not return None because 0 is not None even though it's False in boolean sense
        name8, expr8 = '8', config_value('/f')

        jps.add(name1, expr1)
        value = jps.get(name1, doc)
        self.assertListEqual(value.keys(), ['b'])

        jps.add(name2, expr2)
        value = jps.get(name2, doc)
        self.assertDictEqual(value[0], {'c':c_value})
        self.assertDictEqual(value[1], {'d':d_value})

        jps.add(name3, expr3)
        value = jps.get(name3, doc)
        self.assertDictEqual(value, {'c':c_value})

        jps.add(name4, expr4)
        value = jps.get(name4, doc)
        self.assertDictEqual(value, {'d':d_value})

        jps.add(name5, expr5)
        value = jps.get(name5, doc)
        self.assertEquals(value, c_value)

        default1 = rand_string()
        default2 = rand_string()

        jps.add(name6, expr6)
        value = jps.get(name6, doc, default1)
        self.assertEquals(value, default1)

        jps.add(name7, expr7)
        value = jps.get(name7, doc, default2)
        self.assertEquals(value, default2)

        jps.add(name8, expr8)
        value = jps.get(name8, doc)
        self.assertEquals(value, 0)
예제 #8
0
    def test_get(self):
        jps = JSONPointerStore()

        c_value, d_value = rand_string(2)

        doc = {
            'a': {
                'b': [
                    {
                        'c': c_value
                    },
                    {
                        'd': d_value
                    },
                ]
            },
            'e': None,
            'f': 0
        }

        name1, expr1 = '1', config_value('/a')
        name2, expr2 = '2', config_value('/a/b')
        name3, expr3 = '3', config_value('/a/b/0')
        name4, expr4 = '4', config_value('/a/b/1')
        name5, expr5 = '5', config_value('/a/b/0/c')

        # This will return default because the path points to None
        name6, expr6 = '6', config_value('/e')

        # This will return default because there is no such path
        name7, expr7 = '7', config_value('/e/e2/e3')

        # This will not return None because 0 is not None even though it's False in boolean sense
        name8, expr8 = '8', config_value('/f')

        jps.add(name1, Bunch(value=expr1.value))
        value = jps.get(name1, doc)
        self.assertListEqual(value.keys(), ['b'])

        jps.add(name2, Bunch(value=expr2.value))
        value = jps.get(name2, doc)
        self.assertDictEqual(value[0], {'c': c_value})
        self.assertDictEqual(value[1], {'d': d_value})

        jps.add(name3, Bunch(value=expr3.value))
        value = jps.get(name3, doc)
        self.assertDictEqual(value, {'c': c_value})

        jps.add(name4, Bunch(value=expr4.value))
        value = jps.get(name4, doc)
        self.assertDictEqual(value, {'d': d_value})

        jps.add(name5, Bunch(value=expr5.value))
        value = jps.get(name5, doc)
        self.assertEquals(value, c_value)

        default1 = rand_string()
        default2 = rand_string()

        jps.add(name6, Bunch(value=expr6.value))
        value = jps.get(name6, doc, default1)
        self.assertEquals(value, default1)

        jps.add(name7, Bunch(value=expr7.value))
        value = jps.get(name7, doc, default2)
        self.assertEquals(value, default2)

        jps.add(name8, Bunch(value=expr8.value))
        value = jps.get(name8, doc)
        self.assertEquals(value, 0)