1#############################################################################
2##
3## Copyright (C) 2016 The Qt Company Ltd.
4## Contact: https://www.qt.io/licensing/
5##
6## This file is part of the test suite of Qt for Python.
7##
8## $QT_BEGIN_LICENSE:GPL-EXCEPT$
9## Commercial License Usage
10## Licensees holding valid commercial Qt licenses may use this file in
11## accordance with the commercial license agreement provided with the
12## Software or, alternatively, in accordance with the terms contained in
13## a written agreement between you and The Qt Company. For licensing terms
14## and conditions see https://www.qt.io/terms-conditions. For further
15## information use the contact form at https://www.qt.io/contact-us.
16##
17## GNU General Public License Usage
18## Alternatively, this file may be used under the terms of the GNU
19## General Public License version 3 as published by the Free Software
20## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
21## included in the packaging of this file. Please review the following
22## information to ensure the GNU General Public License requirements will
23## be met: https://www.gnu.org/licenses/gpl-3.0.html.
24##
25## $QT_END_LICENSE$
26##
27#############################################################################
28
29""" Unittest for bug #547 """
30""" http://bugs.openbossa.org/show_bug.cgi?id=547 """
31
32import sys
33import os
34import sys
35import unittest
36
37sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
38from init_paths import init_test_paths
39init_test_paths(False)
40
41from PySide2 import QtWidgets
42
43class MyMainWindow(unittest.TestCase):
44    app = QtWidgets.QApplication(sys.argv)
45    def testCase1(self):
46        self._tree = QtWidgets.QTreeWidget()
47        self._tree.setColumnCount(2)
48        self._i1 = None
49        self._i11 = None
50
51        self._updateTree()
52        self.assertEqual(sys.getrefcount(self._i1), 3)
53        self.assertEqual(sys.getrefcount(self._i11), 3)
54
55        self._i11.parent().setExpanded(True)
56        self._i11.setExpanded(True)
57
58        self._updateTree()
59        self.assertEqual(sys.getrefcount(self._i1), 3)
60        self.assertEqual(sys.getrefcount(self._i11), 3)
61
62    def testCase2(self):
63        self._tree = QtWidgets.QTreeWidget()
64        self._tree.setColumnCount(2)
65        self._i1 = None
66        self._i11 = None
67
68        self._updateTree()
69        self.assertEqual(sys.getrefcount(self._i1), 3)
70        self.assertEqual(sys.getrefcount(self._i11), 3)
71
72        self._i11.parent().setExpanded(True)
73        self._i11.setExpanded(True)
74
75        self.assertEqual(sys.getrefcount(self._i1), 3)
76        self.assertEqual(sys.getrefcount(self._i11), 3)
77
78    def _updateTree(self):
79        self._tree.clear()
80        if self._i1 and self._i11:
81            self.assertEqual(sys.getrefcount(self._i1), 2)
82            self.assertEqual(sys.getrefcount(self._i11), 2)
83
84        self._i1 = QtWidgets.QTreeWidgetItem(self._tree, ['1', ])
85        self.assertEqual(sys.getrefcount(self._i1), 3)
86        self._i11 = QtWidgets.QTreeWidgetItem(self._i1, ['11', ])
87        self.assertEqual(sys.getrefcount(self._i11), 3)
88
89if __name__ == '__main__':
90    unittest.main()
91
92