summaryrefslogtreecommitdiffstats
path: root/tests/test_properties.py
diff options
context:
space:
mode:
authorJohan Dahlin <johan@gnome.org>2008-03-21 18:06:56 +0000
committerJohan Dahlin <johan@src.gnome.org>2008-03-21 18:06:56 +0000
commit6ee167447336570b83e41ca2c4216d6e9058fd43 (patch)
tree4d444ea4a3626cc1a5e34f717828f4e133c451f9 /tests/test_properties.py
parent56a637d7d8b19277f2eb947a250385fd6bba9a4e (diff)
downloadpygobject-6ee167447336570b83e41ca2c4216d6e9058fd43.tar.gz
pygobject-6ee167447336570b83e41ca2c4216d6e9058fd43.tar.xz
pygobject-6ee167447336570b83e41ca2c4216d6e9058fd43.zip
Allow gobject.property work with subclasses. Add tests.
2008-03-21 Johan Dahlin <johan@gnome.org> * gobject/__init__.py: * tests/test_properties.py: Allow gobject.property work with subclasses. Add tests. (#523352, Tomeu Vizoso) svn path=/trunk/; revision=752
Diffstat (limited to 'tests/test_properties.py')
-rw-r--r--tests/test_properties.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/test_properties.py b/tests/test_properties.py
index de93f62..a691b32 100644
--- a/tests/test_properties.py
+++ b/tests/test_properties.py
@@ -327,6 +327,41 @@ class TestProperty(unittest.TestCase):
b.prop1 = 20
self.assertEquals(b.prop1, 20)
+ def testPropertySubclassCustomSetter(self):
+ # test for #523352
+ class A(GObject):
+ def get_first(self):
+ return 'first'
+ first = gobject.property(type=str, getter=get_first)
+
+ class B(A):
+ def get_second(self):
+ return 'second'
+ second = gobject.property(type=str, getter=get_second)
+
+ a = A()
+ self.assertEquals(a.first, 'first')
+ self.assertRaises(TypeError, setattr, a, 'first', 'foo')
+
+ b = B()
+ self.assertEquals(b.first, 'first')
+ self.assertRaises(TypeError, setattr, b, 'first', 'foo')
+ self.assertEquals(b.second, 'second')
+ self.assertRaises(TypeError, setattr, b, 'second', 'foo')
+
+ def testPropertySubclassCustomSetterError(self):
+ try:
+ class A(GObject):
+ def get_first(self):
+ return 'first'
+ first = gobject.property(type=str, getter=get_first)
+
+ def do_get_property(self, pspec):
+ pass
+ except TypeError:
+ pass
+ else:
+ raise AssertionError
if __name__ == '__main__':
unittest.main()