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 29import os 30import sys 31import unittest 32 33sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 34from init_paths import init_test_paths 35init_test_paths(False) 36 37from PySide2.QtCore import QObject, Property, QCoreApplication 38from PySide2.QtScript import QScriptEngine 39 40class MyObject(QObject): 41 def __init__(self, parent = None): 42 QObject.__init__(self, parent) 43 self._p = 100 44 45 def setX(self, value): 46 self._p = value 47 48 def getX(self): 49 return self._p 50 51 def resetX(self): 52 self._p = 100 53 54 def delX(self): 55 self._p = 0 56 57 x = Property(int, getX, setX, resetX, delX) 58 59 60class QPropertyTest(unittest.TestCase): 61 62 def testSimple(self): 63 o = MyObject() 64 self.assertEqual(o.x, 100) 65 o.x = 42 66 self.assertEqual(o.x, 42) 67 68 def testHasProperty(self): 69 o = MyObject() 70 o.setProperty("x", 10) 71 self.assertEqual(o.x, 10) 72 self.assertEqual(o.property("x"), 10) 73 74 def testMetaProperty(self): 75 o = MyObject() 76 m = o.metaObject() 77 found = False 78 for i in range(m.propertyCount()): 79 mp = m.property(i) 80 if mp.name() == "x": 81 found = True 82 break 83 self.assertTrue(found) 84 85 def testScriptQProperty(self): 86 qapp = QCoreApplication([]) 87 myEngine = QScriptEngine() 88 obj = MyObject() 89 scriptObj = myEngine.newQObject(obj) 90 myEngine.globalObject().setProperty("obj", scriptObj) 91 myEngine.evaluate("obj.x = 42") 92 self.assertEqual(scriptObj.property("x").toInt32(), 42) 93 self.assertEqual(obj.property("x"), 42) 94 95if __name__ == '__main__': 96 unittest.main() 97