Created unit test for layout policy.

Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
          Marcelo Lira <marcelo.lira@openbossa.org>
This commit is contained in:
Renato Filho 2011-09-20 18:30:58 -03:00 • committed by Hugo Parente Lima
commit 6f777cd227

View file

@ -1,7 +1,9 @@
import unittest import unittest
import weakref import weakref
import sys
from PySide.QtCore import Qt from PySide.QtCore import Qt
from PySide.QtGui import QDialog, QLabel, QGridLayout from PySide.QtGui import QDialog, QLabel, QGridLayout, QHBoxLayout, QWidget
from helper import TimedQApplication from helper import TimedQApplication
@ -16,13 +18,15 @@ class LabelWindow(QDialog):
self._destroyCalled = False self._destroyCalled = False
def replace(self): def replace(self, unit):
old_item = self.test_layout.itemAtPosition(0, 0) old_item = self.test_layout.itemAtPosition(0, 0)
ref = weakref.ref(old_item, self._destroyed)
old_label = old_item.widget() old_label = old_item.widget()
del old_item ref = weakref.ref(old_item, self._destroyed)
self.test_layout.removeWidget(old_label) self.test_layout.removeWidget(old_label)
unit.assertRaises(RuntimeError, old_item.widget)
del old_item
label = QLabel("Label New") label = QLabel("Label New")
old_label.deleteLater() old_label.deleteLater()
label.setAlignment(Qt.AlignCenter) label.setAlignment(Qt.AlignCenter)
@ -35,9 +39,45 @@ class TestBug1006 (TimedQApplication):
def testLayoutItemLifeTime(self): def testLayoutItemLifeTime(self):
window = LabelWindow(None) window = LabelWindow(None)
window.replace() window.replace(self)
self.assertTrue(window._destroyCalled) self.assertTrue(window._destroyCalled)
self.app.exec_() self.app.exec_()
def testParentLayout(self):
def createLayout():
label = QLabel()
layout = QHBoxLayout()
layout.addWidget(label)
widget = QWidget()
widget.setLayout(layout)
return (layout, widget)
(layout, widget) = createLayout()
item = layout.itemAt(0)
self.assertTrue(isinstance(item.widget(), QWidget))
def testRemoveOrphanWidget(self):
widget = QLabel()
layout = QHBoxLayout()
layout.addWidget(widget)
self.assertEqual(sys.getrefcount(widget), 3)
layout.removeWidget(widget)
widget.setObjectName("MyWidget")
self.assertEqual(sys.getrefcount(widget), 2)
def testRemoveChildWidget(self):
parent = QLabel()
widget = QLabel(parent)
self.assertEqual(sys.getrefcount(widget), 3)
layout = QHBoxLayout()
layout.addWidget(widget)
self.assertEqual(sys.getrefcount(widget), 3)
layout.removeWidget(widget)
widget.setObjectName("MyWidget")
self.assertEqual(sys.getrefcount(widget), 3)
if __name__ == "__main__": if __name__ == "__main__":
unittest.main() unittest.main()