diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/QtCore/qobject_event_filter_test.py | 36 | ||||
-rw-r--r-- | tests/QtGui/event_filter_test.py | 6 |
2 files changed, 39 insertions, 3 deletions
diff --git a/tests/QtCore/qobject_event_filter_test.py b/tests/QtCore/qobject_event_filter_test.py index 8018fcda0..8fded7983 100644 --- a/tests/QtCore/qobject_event_filter_test.py +++ b/tests/QtCore/qobject_event_filter_test.py @@ -2,6 +2,8 @@ '''Test cases for QObject.eventFilter''' import unittest +import weakref +import sys from PySide.QtCore import QObject, QTimerEvent @@ -76,5 +78,39 @@ class TestQObjectEventFilterPython(UsesQCoreApplication): self.assertEqual(filtered.times_called, 5) self.assertEqual(self.obj_filter.events_handled, 5) + def testInstallEventFilterRefCountAfterDelete(self): + '''Bug 910 - installEventFilter() increments reference count on target object + http://bugs.pyside.org/show_bug.cgi?id=910''' + obj = QObject() + filt = QObject() + + self.assertEqual(sys.getrefcount(obj), 2) + self.assertEqual(sys.getrefcount(filt), 2) + obj.installEventFilter(filt) + self.assertEqual(sys.getrefcount(obj), 2) + self.assertEqual(sys.getrefcount(filt), 2) + + wref = weakref.ref(obj) + del obj + self.assertEqual(wref(), None) + + def testInstallEventFilterRefCountAfterRemove(self): + # Bug 910 + obj = QObject() + filt = QObject() + + self.assertEqual(sys.getrefcount(obj), 2) + self.assertEqual(sys.getrefcount(filt), 2) + obj.installEventFilter(filt) + self.assertEqual(sys.getrefcount(obj), 2) + self.assertEqual(sys.getrefcount(filt), 2) + obj.removeEventFilter(filt) + self.assertEqual(sys.getrefcount(obj), 2) + self.assertEqual(sys.getrefcount(filt), 2) + + wref = weakref.ref(obj) + del obj + self.assertEqual(wref(), None) + if __name__ == '__main__': unittest.main() diff --git a/tests/QtGui/event_filter_test.py b/tests/QtGui/event_filter_test.py index 88dbd960b..ec82515da 100644 --- a/tests/QtGui/event_filter_test.py +++ b/tests/QtGui/event_filter_test.py @@ -2,7 +2,7 @@ import unittest import sys from helper import UsesQApplication -from PySide.QtCore import QObject, QEvent, QTimer +from PySide.QtCore import QObject, QEvent from PySide.QtGui import QWidget class MyFilter(QObject): @@ -17,10 +17,10 @@ class EventFilter(UsesQApplication): o = QObject() filt = MyFilter() o.installEventFilter(filt) - self.assertEqual(sys.getrefcount(o), 3) + self.assertEqual(sys.getrefcount(o), 2) o.installEventFilter(filt) - self.assertEqual(sys.getrefcount(o), 3) + self.assertEqual(sys.getrefcount(o), 2) o.removeEventFilter(filt) self.assertEqual(sys.getrefcount(o), 2) |