From 5371e403ffe741119ba0803077b772ca84f3fce3 Mon Sep 17 00:00:00 2001 From: renatofilho Date: Fri, 5 Nov 2010 16:33:36 -0300 Subject: Created unit test for bug #451. Reviewer: Hugo Parente Lima Luciano Wolf --- tests/QtDeclarative/CMakeLists.txt | 1 + tests/QtDeclarative/bug_451.py | 65 ++++++++++++++++++++++++++++++++++++++ tests/QtDeclarative/bug_451.qml | 26 +++++++++++++++ tests/QtDeclarative/bug_456.py | 38 ---------------------- 4 files changed, 92 insertions(+), 38 deletions(-) create mode 100755 tests/QtDeclarative/bug_451.py create mode 100644 tests/QtDeclarative/bug_451.qml (limited to 'tests/QtDeclarative') diff --git a/tests/QtDeclarative/CMakeLists.txt b/tests/QtDeclarative/CMakeLists.txt index 18cb03f9a..277384987 100644 --- a/tests/QtDeclarative/CMakeLists.txt +++ b/tests/QtDeclarative/CMakeLists.txt @@ -1,3 +1,4 @@ +PYSIDE_TEST(bug_451.py FALSE) PYSIDE_TEST(bug_456.py FALSE) PYSIDE_TEST(qdeclarativenetwork_test.py FALSE) PYSIDE_TEST(qdeclarativeview_test.py FALSE) diff --git a/tests/QtDeclarative/bug_451.py b/tests/QtDeclarative/bug_451.py new file mode 100755 index 000000000..60e8dcce5 --- /dev/null +++ b/tests/QtDeclarative/bug_451.py @@ -0,0 +1,65 @@ +''' Test bug 451: http://bugs.openbossa.org/show_bug.cgi?id=451''' + +from PySide import QtCore, QtGui, QtDeclarative +from helper import adjust_filename +import sys +import unittest + +class PythonObject(QtCore.QObject): + def __init__(self): + QtCore.QObject.__init__(self, None) + self._called = "" + self._arg1 = None + self._arg2 = None + + def setCalled(self, v): + self._called = v + + def setArg1(self, v): + self._arg1 = v + + def setArg2(self, v): + self._arg2 = v + + def getCalled(self): + return self._called + + def getArg1(self): + return self._arg1 + + def getArg2(self): + return self._arg2 + + called = QtCore.Property(str, getCalled, setCalled) + arg1 = QtCore.Property(int, getArg1, setArg1) + arg2 = QtCore.Property('QVariant', getArg2, setArg2) + +class TestBug(unittest.TestCase): + def testQMLFunctionCall(self): + app = QtGui.QApplication(sys.argv) + view = QtDeclarative.QDeclarativeView() + + obj = PythonObject() + context = view.rootContext() + context.setContextProperty("python", obj) + view.setSource(adjust_filename('bug_451.qml', __file__)) + root = view.rootObject() + root.simpleFunction() + self.assertEqual(obj.called, "simpleFunction") + + root.oneArgFunction(42) + self.assertEqual(obj.called, "oneArgFunction") + self.assertEqual(obj.arg1, 42) + + root.twoArgFunction(10, app) + self.assertEqual(obj.called, "twoArgFunction") + self.assertEqual(obj.arg1, 10) + self.assertEqual(obj.arg2, app) + + rvalue = root.returnFunction() + self.assertEqual(obj.called, "returnFunction") + self.assertEqual(rvalue, 42) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/QtDeclarative/bug_451.qml b/tests/QtDeclarative/bug_451.qml new file mode 100644 index 000000000..fea810818 --- /dev/null +++ b/tests/QtDeclarative/bug_451.qml @@ -0,0 +1,26 @@ +import Qt 4.7 + +Rectangle { + id: page + + function simpleFunction() { + python.called = "simpleFunction" + } + + function oneArgFunction(x) { + python.called = "oneArgFunction" + python.arg1 = x + } + + function twoArgFunction(x, y) { + python.called = "twoArgFunction" + python.arg1 = x + python.arg2 = y + } + + function returnFunction() { + python.called = "returnFunction" + return 42 + } + +} diff --git a/tests/QtDeclarative/bug_456.py b/tests/QtDeclarative/bug_456.py index 8a0c662d9..178ea7d43 100755 --- a/tests/QtDeclarative/bug_456.py +++ b/tests/QtDeclarative/bug_456.py @@ -1,41 +1,3 @@ -#!/usr/bin/python - -# Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# Contact: PySide Team (pyside@openbossa.org) -# -# This file is part of the examples of PySide: Python for Qt. -# -# $QT_BEGIN_LICENSE:BSD$ -# You may use this file under the terms of the BSD license as follows: -# -# "Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -# the names of its contributors may be used to endorse or promote -# products derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -# $QT_END_LICENSE$ - from PySide import QtCore, QtGui, QtDeclarative from helper import adjust_filename, TimedQApplication import unittest -- cgit v1.2.3