Exemplo n.º 1
0
    def test5(self):
        "recursive attribute setting/getting on modules"
        import reportlab.lib.units
        inch = recursiveGetAttr(reportlab, 'lib.units.inch')
        assert inch == 72

        recursiveSetAttr(reportlab, 'lib.units.cubit', 18*inch)
        cubit = recursiveGetAttr(reportlab, 'lib.units.cubit')
        assert cubit == 18*inch
Exemplo n.º 2
0
 def test6(self):
     "recursive attribute setting/getting on drawings"
     from reportlab.graphics.charts.barcharts import sampleH1
     drawing = sampleH1()
     recursiveSetAttr(drawing, 'barchart.valueAxis.valueMax', 72)
     theMax = recursiveGetAttr(drawing, 'barchart.valueAxis.valueMax')
     assert theMax == 72
Exemplo n.º 3
0
 def test6(self):
     "recursive attribute setting/getting on drawings"
     from reportlab.graphics.charts.barcharts import sampleH1
     drawing = sampleH1()
     recursiveSetAttr(drawing, 'barchart.valueAxis.valueMax', 72)
     theMax = recursiveGetAttr(drawing, 'barchart.valueAxis.valueMax')
     assert theMax == 72
Exemplo n.º 4
0
    def test_empty(self):
        obj = RaccessTest()
        with self.assertRaises(ValueError):
            recursiveGetAttr(obj, "  ")

        with self.assertRaises(ValueError):
            recursiveGetAttr(obj, "")

        with self.assertRaises(TypeError):
            recursiveGetAttr(obj, 0)

        with self.assertRaises(TypeError):
            recursiveGetAttr(obj, None)

        with self.assertRaises(TypeError):
            recursiveGetAttr(obj, obj)
Exemplo n.º 5
0
 def innerTest(k, v):
     obj = RaccessTest()
     obj.t = obj
     obj.a.append(obj)
     obj.b['w'] = obj
     self.assertEqual(recursiveGetAttr(obj, k), v,
                      "error getattr(obj,%r)==%r" % (k, v))
Exemplo n.º 6
0
    def test_person_example(self):
        bob = RaccessPerson(name="Bob", age=31, friends=[])
        jill = RaccessPerson(name="Jill", age=29, friends=[bob])
        jack = RaccessPerson(name="Jack", age=28, friends=[bob, jill])

        # Nothing new
        self.assertEqual(recursiveGetAttr(bob, 'age'), 31)

        # Lists
        self.assertEqual(recursiveGetAttr(jill, 'friends[0].name'), 'Bob')
        self.assertEqual(recursiveGetAttr(jack, 'friends[-1].age'), 29)

        # Dict lookups
        self.assertEqual(recursiveGetAttr(jack, 'settings["style"]["width"]'),
                         200)

        # Combination of lookups
        self.assertEqual(recursiveGetAttr(jack, 'settings["themes"][-2]'),
                         'light')
        self.assertEqual(
            recursiveGetAttr(jack, 'friends[-1].settings["themes"][1]'),
            'dark')

        # Setattr
        #recursiveSetAttr(bob, 'settings["style"]["width"]', 400)
        #self.assertEqual(recursiveGetAttr(bob, 'settings["style"]["width"]') ,400)

        # Nested objects
        recursiveSetAttr(bob, 'friends', [jack, jill])
        self.assertEqual(recursiveGetAttr(jack, 'friends[0].friends[0]'), jack)

        recursiveSetAttr(jill, 'friends[0].age', 32)
        self.assertEqual(bob.age, 32)

        # Deletion
        #recursiveDelAttr(jill, 'friends[0]')
        #self.assertEqual(len(jill.friends) ,0)

        recursiveDelAttr(jill, 'age')
        assert not hasattr(jill, 'age')

        recursiveDelAttr(bob, 'friends[0].age')
        assert not hasattr(jack, 'age')

        # Unsupported
        #with self.assertRaises(NotImplementedError) as e:
        #   recursiveGetAttr(bob, 'friends[0+1]')

        # Nice try, function calls are not allowed
        #with self.assertRaises(ValueError):
        #   recursiveGetAttr(bob, 'friends.pop(0)')

        # Must be an expression
        with self.assertRaises(SyntaxError):
            recursiveGetAttr(bob, 'friends = []')

        # Must be an expression
        with self.assertRaises(SyntaxError):
            recursiveGetAttr(bob, 'friends..')

        # Must be an expression
        with self.assertRaises(KeyError):
            recursiveGetAttr(bob, 'settings["DoesNotExist"]')

        # Must be an expression
        with self.assertRaises(IndexError):
            recursiveGetAttr(bob, 'friends[100]')