diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2011-07-19 15:58:20 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:54:37 -0300 |
commit | ef45b5a924b921628c1bc3fd7fce18c994430208 (patch) | |
tree | e2662eeeddce33327e8e59b153c86782875cf7a8 /tests | |
parent | cab3b37b788cef6fdd999bedbe0ced93c9151ae4 (diff) |
Fixes bug #910 - installEventFilter() increments reference count on target object.
http://bugs.pyside.org/show_bug.cgi?id=910
Also added/fixed unit tests.
Reviewed by Hugo Parente <hugo.lima@openbossa.org>
Reviewed by Luciano Wolf <luciano.wolf@openbossa.org>
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) |