Created unit test to layout ref leak.
Reviewer: Marcelo Lira <marcelo.lira@openbossa.org>
Luciano Wolf <luciano.wolf@openbossa.org>
This commit is contained in:
parent
efe8019eda
commit
114bca41a2
1 changed files with 40 additions and 0 deletions
|
|
@ -108,5 +108,45 @@ class MultipleAdd(UsesQApplication):
|
||||||
self.layout.addWidget(self.widget)
|
self.layout.addWidget(self.widget)
|
||||||
self.assertEqual(getrefcount(self.widget), 3)
|
self.assertEqual(getrefcount(self.widget), 3)
|
||||||
|
|
||||||
|
class InternalAdd(UsesQApplication):
|
||||||
|
def testInternalRef(self):
|
||||||
|
mw = QWidget()
|
||||||
|
w = QWidget()
|
||||||
|
ow = QWidget()
|
||||||
|
|
||||||
|
topLayout = QGridLayout()
|
||||||
|
|
||||||
|
# unique reference
|
||||||
|
self.assertEqual(getrefcount(w), 2)
|
||||||
|
self.assertEqual(getrefcount(ow), 2)
|
||||||
|
|
||||||
|
topLayout.addWidget(w, 0, 0)
|
||||||
|
topLayout.addWidget(ow, 1, 0)
|
||||||
|
|
||||||
|
# layout keep the referemce
|
||||||
|
self.assertEqual(getrefcount(w), 3)
|
||||||
|
self.assertEqual(getrefcount(ow), 3)
|
||||||
|
|
||||||
|
mainLayout = QGridLayout()
|
||||||
|
|
||||||
|
mainLayout.addLayout(topLayout, 1, 0, 1, 4)
|
||||||
|
|
||||||
|
# the same reference
|
||||||
|
self.assertEqual(getrefcount(w), 3)
|
||||||
|
self.assertEqual(getrefcount(ow), 3)
|
||||||
|
|
||||||
|
mw.setLayout(mainLayout)
|
||||||
|
|
||||||
|
# now trasfer the ownership to mw
|
||||||
|
self.assertEqual(getrefcount(w), 3)
|
||||||
|
self.assertEqual(getrefcount(ow), 3)
|
||||||
|
|
||||||
|
del mw
|
||||||
|
|
||||||
|
# remove the ref and invalidate the widget
|
||||||
|
self.assertEqual(getrefcount(w), 2)
|
||||||
|
self.assertEqual(getrefcount(ow), 2)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue