diff options
| author | David Clark <david.a.clark@nokia.com> | 2010-11-18 16:20:48 +1000 |
|---|---|---|
| committer | David Clark <david.a.clark@nokia.com> | 2010-11-18 16:20:48 +1000 |
| commit | c223232bc15106750da632598047a35ad3762723 (patch) | |
| tree | 403f7aa2c3a5a912edce6feae869046c89d29178 /tests/qtuitest | |
| parent | b984b0b62076067f1f75db5a7eda5aaa2cdaad2a (diff) | |
Diffstat (limited to 'tests/qtuitest')
48 files changed, 0 insertions, 5946 deletions
diff --git a/tests/qtuitest/qtuitest.pro b/tests/qtuitest/qtuitest.pro deleted file mode 100644 index f1dbaa4..0000000 --- a/tests/qtuitest/qtuitest.pro +++ /dev/null @@ -1,33 +0,0 @@ -TEMPLATE=subdirs -SUBDIRS+= \ - testapps \ - sys_input \ - sys_assistant \ - sys_designer \ - sys_graphicsView \ - sys_linguist \ - tst_qalternatestack \ - tst_qelapsedtimer \ - tst_qinputgenerator \ - tst_qtuitestnamespace - -# Tests which should run in Pulse (currently, those which do not require X server) -PULSE_TESTS = \ - tst_qalternatestack \ - tst_qelapsedtimer \ - tst_qtestprotocol \ - -!win32 { - SUBDIRS+=tst_qtestprotocol tst_qtuitestwidgets -} - -symbian { - SUBDIRS-=tst_qalternatestack tst_qtestprotocol tst_qtuitestwidgets -} - -pulsetest.CONFIG = recursive -pulsetest.recurse = $$PULSE_TESTS -pulsetest.target = pulsetest -pulsetest.recurse_target = junittest -QMAKE_EXTRA_TARGETS += pulsetest - diff --git a/tests/qtuitest/sys_assistant/sys_assistant.pro b/tests/qtuitest/sys_assistant/sys_assistant.pro deleted file mode 100644 index a057ba3..0000000 --- a/tests/qtuitest/sys_assistant/sys_assistant.pro +++ /dev/null @@ -1,9 +0,0 @@ -SOURCES=sys_assistant.qtt -CONFIG+=systemtest - - -target.path += \ - /usr/local/bin - -INSTALLS += \ - target
\ No newline at end of file diff --git a/tests/qtuitest/sys_assistant/sys_assistant.qtt b/tests/qtuitest/sys_assistant/sys_assistant.qtt deleted file mode 100644 index f2449d4..0000000 --- a/tests/qtuitest/sys_assistant/sys_assistant.qtt +++ /dev/null @@ -1,231 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of QtUiTest. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -testcase = { - - //TODO: In Progress. Not expected to pass (or even work correctly) yet. - - init: function() { - startApplication("assistant"); - if (getLabels().contains("Updating search index")) { - print("Waiting for search index update to complete..."); - waitFor(60000) { - return (!getLabels().contains("Updating search index")); - } - } - }, - - check_registered_docs: function() { - select("Edit/Preferences...", menuBar()); - select("Documentation", tabBar()); - setLabelOrientation(LabelAbove); - var docs = getText("Registered Documentation:"); - if (!docs.contains("com.trolltech.assistant.") || - !docs.contains("com.trolltech.designer.") || - !docs.contains("com.trolltech.linguist.") || - !docs.contains("com.trolltech.qmake.") || - !docs.contains("com.trolltech.qt.")) { - fail("Documentation has not been registered. Subsequent tests will fail."); - } - }, - - browse_contents: function() { - select("Contents", tabBar()); - var content = helpContent(); - - select("Qt Linguist Manual/Manual", content); - waitFor() { return(getText(tabBar(1)).contains("Qt Linguist Manual")); } - - select("Qt Reference Documentation/Overviews/An Introduction to Model\\/View Programming", content); - waitFor() { return(getText(tabBar(1)).contains("An Introduction to Model/View Programming")); } - - select("Qt Reference Documentation/Classes/QList Class Reference/List of all members", content); - waitFor() { return(getText(tabBar(1)).contains("List of All Members for QList")); } - }, - - browse_index_data: { - countryToString: [ "countryToString", "QLocale Class Reference" ] - }, - - browse_index: function(item, pageTitle) { - select("Index", tabBar()); - var indexWidget = helpIndex(); - - select(item, indexWidget); - select("Open Link", contextMenu()); - waitFor() { return(getText(tabBar(1)).contains(pageTitle)); } - }, - - create_bookmark_data: { - one: [ "sys_assistant", "test_subfolder" ] - }, - - create_bookmark: function(topLevelFolder, subFolder) { - select("Bookmarks", tabBar()); - var bookmarkTree = helpBookmarks(); - - // If there is already a folder with the same name, remove it - if (getList(bookmarkTree).contains(topLevelFolder)) { - select(topLevelFolder, bookmarkTree); - select("Bookmarks/Remove"); - select("Yes"); - } - - // Create a new bookmark - select("Bookmarks/Add"); - var pageName = getText("Bookmark:").replace(/\//g, "\\\\/");; - select("+"); - select("New Folder"); - select("Rename Folder", contextMenu()); - enter(topLevelFolder); - select("New Folder"); - select("Rename Folder", contextMenu()); - enter(subFolder); - select("OK"); - - // Verify that it is in the list - var bookmarkList = getList(bookmarkTree); - verify(bookmarkList.contains(topLevelFolder)); - verify(bookmarkList.contains(topLevelFolder + "/" + subFolder)); - verify(bookmarkList.contains(topLevelFolder + "/" + subFolder + "/" + pageName)); - - // Remove it - select(topLevelFolder, bookmarkTree); - select("Bookmarks/Remove"); - select("Yes"); - - // Verify that it is no longer in the list - var bookmarkList = getList(bookmarkTree); - verify(!bookmarkList.contains(topLevelFolder)); - verify(!bookmarkList.contains(topLevelFolder + "/" + subFolder)); - verify(!bookmarkList.contains(topLevelFolder + "/" + subFolder + "/" + pageName)); - }, - - search_data: { - simpleText: [ "Simple Text", "Simple Text Viewer Example" ], - designerWidgets: [ "Designer Widgets", "Creating Custom Widgets for Qt Designer" ], - includePath: [ "INCLUDEPATH", "qmake Variable Reference" ] - }, - - search: function(query, expectedResult) { - select("View/Search", menuBar()); - select("Search", tabBar(1)); - enter(query, "Search for:"); - select("Search"); - var results = searchResults(); - waitFor() { return(getText(results).contains(expectedResult)); } - select(expectedResult, results); - waitFor() { return(getText(tabBar(1)).contains(expectedResult)); } - verify(getText(helpViewer()).contains(expectedResult)); - }, - - follow_links_data: { - one: [ "Qt Reference Documentation/Overviews/View Classes", "View Classes", - [ ["delegates", "Delegate Classes"], - ["Spin Box Delegate", "Spin Box Delegate Example"], - ["QItemDelegate", "QItemDelegate Class Reference"], - ["QSqlRelationalDelegate","QSqlRelationalDelegate Class Reference"] ] ] - }, - - follow_links: function(browseItem, firstTitle, links) { - - // Select browseItem from the Contents - select("Contents", tabBar()); - var content = helpContent(); - select(browseItem, content); - waitFor() { return(getText(tabBar(1)).contains(firstTitle)); } - - // Get a handle for the Help Viewer widget - var viewer = helpViewer(); //findByProperty( { inherits: "QWebView" } ); - - // Click on each link in turn - for (var i=0; i<links.length; ++i) { - select(links[i][0], viewer); - waitFor() { return(getText(tabBar(1)).contains(links[i][1])); } - } - - // Now navigate back... - for (var i=links.length-1; i>=0; --i) { - verify(getText(tabBar(1)).contains(links[i][1])); - select("Back"); - } - - // ... and confirm that we're back to the first page - verify(getText(tabBar(1)).contains(firstTitle)); - } - -} - -function contextMenu() -{ - keyClick(Qt.Key_Menu); - var menu = findByProperty( { inherits: "QMenu" } ); - if (menu.isEmpty()) { - fail("Context menu did not appear."); - } - return menu[0]; -} - -function helpViewer() -{ - return findByProperty( { className: "HelpViewer" } ); -} - -function helpContent() -{ - return findByProperty( { className: "QHelpContentWidget" } ); -} - -function helpIndex() -{ - return findByProperty( { className: "QHelpIndexWidget" } ); -} - -function helpBookmarks() -{ - return findByProperty( { child_of: "Bookmarks", inherits: "QTreeView" } ); -} - -function searchResults() -{ - return findByProperty( { className: "QCLuceneResultWidget" } ); -} diff --git a/tests/qtuitest/sys_designer/sys_designer.pro b/tests/qtuitest/sys_designer/sys_designer.pro deleted file mode 100644 index 2fa97f5..0000000 --- a/tests/qtuitest/sys_designer/sys_designer.pro +++ /dev/null @@ -1,9 +0,0 @@ -SOURCES=sys_designer.qtt -CONFIG+=systemtest - - -target.path += \ - /usr/local/bin - -INSTALLS += \ - target
\ No newline at end of file diff --git a/tests/qtuitest/sys_designer/sys_designer.qtt b/tests/qtuitest/sys_designer/sys_designer.qtt deleted file mode 100644 index 7defc99..0000000 --- a/tests/qtuitest/sys_designer/sys_designer.qtt +++ /dev/null @@ -1,419 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of QtUiTest. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -testcase = { - - //TODO: In Progress. Not expected to pass (or even work correctly) yet. - - init: function() { - clearCachedWidgets(); - startApplication("designer"); - - if (currentTitle() == translate("QDesignerWorkbench", "Backup Information")) { - select(translate("QDialogButtonBox", "&No")); - } - - select("Widgets/QFrame"); - select("Create"); - - select("Expand all", contextMenu(widgetBoxTree())); - select("List View", contextMenu(widgetBoxTree())); - }, - - test1: function() { - var fc = getGeometry(formWindow()).center(); - - // Create a form layout and add some rows to it... - dragItem("Layouts/Form Layout", widgetBoxTree(), fc); - - select("Frame/formLayout", objectInspector()); - select("Add form layout row...", contextMenu()); - enter("LineEdit1", "Label text:"); - select("QLineEdit", "Field type:"); - select("OK"); - - select("Frame/formLayout", objectInspector()); - select("Add form layout row...", contextMenu()); - enter("ComboBox1", "Label text:"); - select("QComboBox", "Field type:"); - select("OK"); - - // Set the available items in the combobox... - select("Edit Items...", contextMenu("ComboBox1")); - select("New"); - enter("One"); - select("New"); - enter("Two"); - select("New"); - enter("Three"); - select("New"); - enter("Four"); - select("New"); - enter("Five"); - select("OK"); - - // Edit signal/slot connections using the interactive editor... - select("Edit/Edit Signals\\/Slots", mainMenuBar()); - - // The labels don't seem to have buddy widgets set, although they are set - // correctly when previewed. So the combobox ends up being self-labelled - drag(getGeometry("One").center(), getGeometry("LineEdit1").center()); - var sigSlotList = findByProperty( { className: "QListWidget" } ); - select("activated(QString)", sigSlotList[0]); - select("setText(QString)", sigSlotList[1]); - select("OK"); - - // Preview, ensure that changing the combobox value also changes the lineedit value... - select("Form/Preview...", mainMenuBar()); - - select("Three", "ComboBox1"); - compare(getText("LineEdit1"), "Three"); - }, - - test2: function() { - // Add some radio buttons to the form... - var fc = getGeometry(formWindow()).center(); - dragItem("Buttons/Radio Button", widgetBoxTree(), fc); - dragItem("Buttons/Radio Button", widgetBoxTree(), fc); - dragItem("Buttons/Radio Button", widgetBoxTree(), fc); - dragItem("Buttons/Radio Button", widgetBoxTree(), fc); - - // Set widget properties... - select("Frame/radioButton", objectInspector()); - selectProperty("QAbstractButton/text"); - enter("Radio 1"); - - select("Frame/radioButton_2", objectInspector()); - selectProperty("QAbstractButton/text"); - enter("Radio 2"); - - select("Frame/radioButton_3", objectInspector()); - selectProperty("QAbstractButton/text"); - enter("Radio 3"); - - select("Frame/radioButton_4", objectInspector()); - selectProperty("QAbstractButton/text"); - enter("Radio 4"); - - // Set layout... - select("Edit/Select All", mainMenuBar()); - select("Assign to button group/New button group", contextMenu("Radio 1")); - select("Form/Lay Out Vertically", mainMenuBar()); - - // Preview, to ensure only one radio button can be active at a time... - select("Form/Preview...", mainMenuBar()); - - setChecked(true, "Radio 1"); - verify(!isChecked("Radio 2")); - verify(!isChecked("Radio 3")); - verify(!isChecked("Radio 4")); - - setChecked(true, "Radio 2"); - verify(!isChecked("Radio 1")); - verify(!isChecked("Radio 3")); - verify(!isChecked("Radio 4")); - - setChecked(true, "Radio 3"); - verify(!isChecked("Radio 1")); - verify(!isChecked("Radio 2")); - verify(!isChecked("Radio 4")); - - setChecked(true, "Radio 4"); - verify(!isChecked("Radio 1")); - verify(!isChecked("Radio 2")); - verify(!isChecked("Radio 3")); - - // Close the preview window... - invokeMethod(activeWindow(), "close()"); - - // Change the exclusive property of the button group... - select("Frame/buttonGroup", objectInspector()); - selectProperty("QButtonGroup/exclusive"); - setChecked(false); - - // Preview, ensure that all buttons can be set at once... - select("Form/Preview...", mainMenuBar()); - - setChecked(true, "Radio 1"); - setChecked(true, "Radio 2"); - setChecked(true, "Radio 3"); - setChecked(true, "Radio 4"); - verify(isChecked("Radio 1")); - verify(isChecked("Radio 2")); - verify(isChecked("Radio 3")); - verify(isChecked("Radio 4")); - }, - - test3: function() { - var fc = getGeometry(formWindow()).center(); - - // Add some widgets to the form... - dragItem("Input Widgets/Line Edit", widgetBoxTree(), new QPoint(fc.x()+30, fc.y()-20)); - dragItem("Input Widgets/Spin Box", widgetBoxTree(), new QPoint(fc.x()-30, fc.y()+20)); - dragItem("Display Widgets/Label", widgetBoxTree(), new QPoint(fc.x()-30, fc.y()-20)); - dragItem("Display Widgets/Label", widgetBoxTree(), new QPoint(fc.x()+30, fc.y()+20)); - dragItem("Buttons/Push Button", widgetBoxTree(), new QPoint(fc.x()-30, fc.y()+40)); - dragItem("Buttons/Push Button", widgetBoxTree(), new QPoint(fc.x()+30, fc.y()+40)); - - select("Edit/Select All", mainMenuBar()); - select("Form/Lay Out in a Grid", mainMenuBar()); - - // Set widget properties... - select("Frame/gridLayout/label", objectInspector()); - selectProperty("QLabel/text"); - enter("LineEdit1"); - - select("Frame/gridLayout/label_2", objectInspector()); - selectProperty("QLabel/text"); - enter("SpinBox1"); - - select("Frame/gridLayout/pushButton", objectInspector()); - selectProperty("QAbstractButton/text"); - enter("Down"); - - select("Frame/gridLayout/pushButton_2", objectInspector()); - selectProperty("QAbstractButton/text"); - enter("Up"); - - select("Frame/gridLayout/spinBox", objectInspector()); - selectProperty("QSpinBox/maximum"); - enter(100); - - selectProperty("QAbstractSpinBox/specialValueText"); - enter("Infinity"); - - // Set buddies... - select("Edit/Edit Buddies", mainMenuBar()); - drag(getGeometry(findByProperty( { text: "LineEdit1" } )).center(), getGeometry(findByProperty( { className: "QLineEdit"} )).center()); - drag(getGeometry(findByProperty( { text: "SpinBox1" } )).center(), getGeometry(findByProperty( { className: "QSpinBox"} )).center()); - - // Set up signal/slot connections... - connectSignalSlot("spinBox", "valueChanged(QString)", "lineEdit", "setText(QString)"); - connectSignalSlot("pushButton", "clicked()", "spinBox", "stepDown()") - connectSignalSlot("pushButton_2", "clicked()","spinBox" , "stepUp()"); - - // Preview the form, and make sure it behaves as expected... - select("Form/Preview...", mainMenuBar()); - - enter(50, "SpinBox1"); - compare(50, getText("LineEdit1")); - - for (var i=0; i<8; ++i) { - select("Down"); - } - compare(42, getText("LineEdit1")); - - enter(5, "SpinBox1"); - compare(5, getText("LineEdit1")); - - for (var i=0; i<4; ++i) { - select("Down"); - } - compare(1, getText("LineEdit1")); - select("Down"); - compare("Infinity", getText("LineEdit1")); - select("Down"); - compare("Infinity", getText("LineEdit1")); - - enter(95, "SpinBox1"); - compare(95, getText("LineEdit1")); - - for (var i=0; i<4; ++i) { - select("Up"); - } - compare(99, getText("LineEdit1")); - select("Up"); - compare(100, getText("LineEdit1")); - select("Up"); - compare(100, getText("LineEdit1")); - - enter("Goodbye", "LineEdit1"); - compare(100, getText("SpinBox1")); - } - -} - -function dragItem(item, widget, point) -{ - ensureVisible(item, widget); - var center = getCenter(item, widget); - drag(center, point); -} - -function drag(a, b) -{ - var dx = (b.x() - a.x()); - var dy = (b.y() - a.y()); - var steps = 2 + (Math.abs(dx) + Math.abs(dy))/20; - dx = dx/steps; - dy = dy/steps; - var x=a.x(); - var y=a.y(); - mousePress(x, y); - wait(200); - for (var i=0; i<steps; i++) { - x += dx; - y += dy; - mousePress(x, y); - wait(1); - } - mousePress(b.x(), b.y()); - wait(50); - mouseRelease(b.x(), b.y()); - wait(500); -} - -function clearCachedWidgets() -{ - testcase.cachedWidgets = {}; -} - -function formWindow() -{ - return findByProperty( { className: "QDesignerFormWindow" } ); -} - -function propertyEditor() -{ - selectDockedWindow("Property Editor"); - if (testcase.cachedWidgets.propertyEditor == undefined) { - testcase.cachedWidgets.propertyEditor = findByProperty( { className: "QtPropertyEditorView" } ); - } - return testcase.cachedWidgets.propertyEditor; -} - -function widgetBoxTree() -{ - selectDockedWindow("Qt Designer"); - if (testcase.cachedWidgets.widgetBoxTree == undefined) { - testcase.cachedWidgets.widgetBoxTree = findByProperty( { className: "qdesigner_internal::WidgetBoxTreeWidget" } ); - } - return testcase.cachedWidgets.widgetBoxTree; -} - -function objectInspector() -{ - selectDockedWindow("Object Inspector"); - if (testcase.cachedWidgets.objectInspector == undefined) { - testcase.cachedWidgets.objectInspector = findByProperty( { descendant_of: "Object Inspector", inherits: "QTreeView"} ); - } - return testcase.cachedWidgets.objectInspector; -} - -function signalSlotEditor() -{ - selectDockedWindow("Signal/Slot Editor"); - if (testcase.cachedWidgets.signalSlotEditor == undefined) { - testcase.cachedWidgets.signalSlotEditor = findByProperty( { className: "qdesigner_internal::SignalSlotEditorWindow"} ); - } - return testcase.cachedWidgets.signalSlotEditor; -} - -function mainMenuBar() -{ - activateWindow("Qt Designer"); - if (testcase.cachedWidgets.menuBar == undefined) { - testcase.cachedWidgets.menuBar = menuBar(); - } - return testcase.cachedWidgets.menuBar; -} - -function contextMenu(widget) -{ - if (widget == undefined) { - keyClick(Qt.Key_Menu); - } else { - mouseClick(widget, new Qt.MouseButtons(Qt.RightButton)); - } - var menu = findByProperty( { inherits: "QMenu" } ); - if (menu.isEmpty()) { - fail("Context menu did not appear."); - } - return menu[0]; -} - -function selectDockedWindow(window) -{ - if (getWindowTitles().contains(window)) { - activateWindow(window); - } else { - var tb = tabBar(); - if (getList(tb).contains(window)) { - select(window, tb); - } - } -} - -function selectProperty(propName) -{ - var pe = propertyEditor(); - select(propName, pe); - var idx = getSelectedIndex(pe); - idx[idx.length -1]++; - selectIndex(idx, pe); -} - -function connectSignalSlot(sender, signal, receiver, slot) -{ - selectDockedWindow("Signal/Slot Editor"); - if (currentTitle() == "Signal/Slot Editor") { - if (testcase.cachedWidgets.addConnect == undefined) { - testcase.cachedWidgets.addConnect = findByProperty( { className: "QToolButton" } )[0]; - testcase.cachedWidgets.signalSlotView = findByProperty( { className: "QTreeView" } ); - } - } else { - if (testcase.cachedWidgets.addConnect == undefined) { - testcase.cachedWidgets.addConnect = findByProperty( { descendant_of: "Signal/Slot Editor", className: "QToolButton" } )[0]; - testcase.cachedWidgets.signalSlotView = findByProperty( { descendant_of: "Signal/Slot Editor", className: "QTreeView" } ); - } - } - - select(testcase.cachedWidgets.addConnect); - select("<sender>", testcase.cachedWidgets.signalSlotView); - enter(sender); - select("<signal>", testcase.cachedWidgets.signalSlotView); - enter(signal); - select("<receiver>", testcase.cachedWidgets.signalSlotView); - enter(receiver); - select("<slot>", testcase.cachedWidgets.signalSlotView); - enter(slot); -}
\ No newline at end of file diff --git a/tests/qtuitest/sys_graphicsView/sys_graphicsView.pro b/tests/qtuitest/sys_graphicsView/sys_graphicsView.pro deleted file mode 100644 index cdae5b4..0000000 --- a/tests/qtuitest/sys_graphicsView/sys_graphicsView.pro +++ /dev/null @@ -1,11 +0,0 @@ -SOURCES=sys_graphicsView.qtt -TESTAPPS=graphicsViewTest -CONFIG+=systemtest - - - -target.path += \ - /usr/local/bin - -INSTALLS += \ - target
\ No newline at end of file diff --git a/tests/qtuitest/sys_graphicsView/sys_graphicsView.qtt b/tests/qtuitest/sys_graphicsView/sys_graphicsView.qtt deleted file mode 100644 index 9e23617..0000000 --- a/tests/qtuitest/sys_graphicsView/sys_graphicsView.qtt +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of QtUiTest. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -testcase = { - - //TODO: In Progress. Not expected to pass (or even work correctly) yet. - - launch_app: function() { - startApplication("graphicsViewTest"); - - print(getLabels()); - verifyImage("test1", "here is some text"); - verifyImage("test2", "and here is some more"); - prompt(activeWidgetInfo()); - } -}
\ No newline at end of file diff --git a/tests/qtuitest/sys_input/sys_input.pro b/tests/qtuitest/sys_input/sys_input.pro deleted file mode 100644 index 63c63f5..0000000 --- a/tests/qtuitest/sys_input/sys_input.pro +++ /dev/null @@ -1,11 +0,0 @@ -SOURCES=sys_input.qtt -TESTAPPS=testapp1 testapp2 testapp3 -CONFIG+=systemtest - - - -target.path += \ - /usr/local/bin - -INSTALLS += \ - target
\ No newline at end of file diff --git a/tests/qtuitest/sys_input/sys_input.qtt b/tests/qtuitest/sys_input/sys_input.qtt deleted file mode 100644 index 56a0908..0000000 --- a/tests/qtuitest/sys_input/sys_input.qtt +++ /dev/null @@ -1,363 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of QtUiTest. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -testcase = { - - activate_tabBar: function() { - startApplication("testapp1"); - - select( "First Tab", tabBar() ); - compare( getSelectedText(tabBar()), "First Tab" ); - - select( "Cow Tab", tabBar() ); - compare( getSelectedText(tabBar()), "Cow Tab" ); - - select( "First Tab", tabBar() ); - compare( getSelectedText(tabBar()), "First Tab" ); - - select( "Awesome Tab", tabBar() ); - compare( getSelectedText(tabBar()), "Awesome Tab" ); - }, - - enter_single_data: { - numeric: "0", - asterisk: "*", - percent: "%", - question: "?", - comma: ",", - lower1: "a", - upper: "B", - lower2: "z" - }, - - enter_single: function(character) { - startApplication("testapp1"); - select( "First Tab", tabBar() ); - enter(character, "Status"); - compare(getText("Status"), character); - - }, - - enter_text: function(text) { - startApplication("testapp1"); - - select( "First Tab", tabBar() ); - enter(text, "LineEdit1"); - compare( getText("Status"), "LineEdit1 text changed" ); - compare( getText("LineEdit1"), text ); - - enter("clear", "LineEdit2"); - compare( getText("Status"), "LineEdit2 text changed" ); - compare( getText("LineEdit2"), "clear" ); - - if (mousePreferred()) { - mouseClick("LineEdit1"); - keyClick(Qt.Key_Home); - mouseClick("LineEdit2"); - } - enter("overwrite", "LineEdit1"); - compare( getText("LineEdit1"), "overwrite" ); - }, - - enter_text_data: { - mixed_case: [ "MiXeD CASe" ], - punctuation: [ "!@#$%^&*()-=_+[]{}\|;:',./<>?`~" ], - allsorts: [ "$100! How Much?" ], - with_numbers: [ "1 2 3SD770 4 25 312" ], - in_dict: [ "hello kitty" ], - not_in_dict: [ "jtnerlnjas mtrnen" ], - long_str: [ "this is a really long string to test we can overwrite properly" ], - - // Test for bug: "Jimmy" sometimes gives "Jinny" in predictive keyboard. - jimmy: [ "Jimmy jimmy" ] - }, - - enter_QTextEdit: function(text) { - startApplication("testapp3"); - - select("Text", tabBar()); - - enter(text, "Text"); - compare( getText("Text"), text ); - - enter("overwrite", "Text"); - compare( getText("Text"), "overwrite" ); - }, - - enter_QTextEdit_data: { - single_line: [ "This is a single line" ], - //multi_lines: [ "This is\nmultiple lines of\n\ntext" ] - alotta_text: [ "This is a lot of text to ensure we get a scroll bar happening yes this is a lot of text to ensure we get a scroll bar happening yes" ] - }, - - enter_QTimeEdit: function(time, shouldPass) { - startApplication("testapp1"); - - select("Awesome Tab", tabBar()); - - if (!shouldPass) expectFail("Bad time given"); - enter(time, "Time"); - - compare( getValue("Time"), time ); - }, - - enter_QTimeEdit_data: { - simple1: [ new QTime(16, 55, 00), true ], - simple2: [ new QTime(14, 10, 38), true ], - sdigit1: [ new QTime(1, 33, 10), true ], - sdigit2: [ new QTime(19, 7, 11), true ], - sdigit3: [ new QTime(22, 21, 1), true ], - - bad1: [ new QTime(25, 21, 1), false ], - bad2: [ new QTime(22, 88, 1), false ], - bad3: [ new QTime(21, 21, -1), false ] - }, - - // enter() with QDateEdit fields. - enter_QDateEdit: function(date) { - startApplication("testapp1"); - - select("Awesome Tab", tabBar()); - - enter(date, "Date"); - - compare( getValue("Date"), date ); - - }, - - enter_QDateEdit_data: { - simple1: [ new Date(2000, 6, 15) ], - december: [ new Date(2000, 12, 15) ], - end_of_month: [ new Date(2002, 6, 30) ], - simple2: [ new Date(2004, 10, 11) ] - }, - - // enter() with QDateTimeEdit fields. - enter_QDateTimeEdit: function(date) { - startApplication("testapp1"); - - select("Awesome Tab", tabBar()); - - enter(date, "DateTime"); - - compare( getValue("DateTime"), date ); - - }, - - enter_QDateTimeEdit_data: { - simple1: [ new Date(2000, 6, 15, 17, 27, 0) ], - december: [ new Date(2000, 11, 15, 0, 30, 0) ], - end_of_month: [ new Date(2002, 5, 30, 12, 15, 0) ], - simple2: [ new Date(2004, 10, 11) ] - }, - - // Explicit mouse clicks on widgets - mouseClick: function() { - startApplication("testapp1"); - select( "Cow Tab", tabBar() ); - compare( getSelectedText(tabBar()), "Cow Tab" ); - - mouseClick("CowButton1"); - compare( getText("CowStatus"), "CowButton1 clicked" ); - - mouseClick("CowButton2"); - compare( getText("CowStatus"), "CowButton2 clicked" ); - - mouseClick("CowButton16"); - compare( getText("CowStatus"), "CowButton16 clicked" ); - - mouseClick("CowButton0"); - compare( getText("CowStatus"), "CowButton0 clicked" ); - }, - - activate_button: function() { - startApplication("testapp1"); - - select("First Tab", tabBar()); - compare( getSelectedText(tabBar()), "First Tab" ); - - select("Button1"); - compare( getText("Status"), "Button1 clicked" ); - select("Button2"); - compare( getText("Status"), "Button2 clicked" ); - }, - - activate_combobox: function() { - startApplication("testapp1"); - - select( "Cow Tab", tabBar() ); - - select( "Woof", "Cow Goes?" ); - compare( getText("CowStatus"), "Cow Goes? changed" ); - compare( getSelectedText("Cow Goes?"), "Woof" ); - - // To clear 'Status' - select( "CowButton0" ); - compare( getText("CowStatus"), "CowButton0 clicked" ); - - select( "Moo", "Cow Goes?" ); - compare( getText("CowStatus"), "Cow Goes? changed" ); - compare( getSelectedText("Cow Goes?"), "Moo" ); - }, - - activate_editable_combobox: function() { - startApplication("testapp1"); - - select( "First Tab", tabBar() ); - - select( "Yellow", "Colour" ); - compare( getText("Status"), "Colour changed" ); - compare( getSelectedText("Colour"), "Yellow" ); - - // To clear 'Status' - select("Button1"); - compare( getText("Status"), "Button1 clicked" ); - - select( "Blue", "Colour" ); - compare( getText("Status"), "Colour changed" ); - compare( getSelectedText("Colour"), "Blue" ); - }, - - scroll_scrollarea_vertical: function() { - startApplication("testapp1"); - - select( "Cow Tab", tabBar() ); - - select( "CowButton0" ); - compare( getText("CowStatus"), "CowButton0 clicked" ); - - // Scroll down to the bottom - select( "CowButton15" ); - compare( getText("CowStatus"), "CowButton15 clicked" ); - - // Scroll up to the top - select( "CowButton0" ); - compare( getText("CowStatus"), "CowButton0 clicked" ); - }, - - scroll_combobox: function() { - startApplication("testapp1"); - - select( "Cow Tab", tabBar() ); - - select( "Woof", "Cow Goes?" ); - compare( getText("CowStatus"), "Cow Goes? changed" ); - compare( getSelectedText("Cow Goes?"), "Woof" ); - - // This item is the last one in the combobox - select( "Choo choo!", "Cow Goes?" ); - compare( getText("CowStatus"), "Cow Goes? changed" ); - compare( getSelectedText("Cow Goes?"), "Choo choo!" ); - }, - - setChecked_checkbox: function() { - startApplication("testapp1"); - - select( "Awesome Tab", tabBar() ); - - select( "Clear" ); - compare( getText("Status"), "'Clear' clicked" ); - - setChecked( true, "Checkbox" ); - compare( getText("Status"), "'Checkbox' clicked" ); - verify( isChecked("Checkbox") ); - - select( "Clear" ); - compare( getText("Status"), "'Clear' clicked" ); - - setChecked( false, "Checkbox" ); - compare( getText("Status"), "'Checkbox' clicked" ); - verify( !isChecked("Checkbox") ); - - select( "Clear" ); - compare( getText("Status"), "'Clear' clicked" ); - - setChecked( true, "Checkbox" ); - compare( getText("Status"), "'Checkbox' clicked" ); - verify( isChecked("Checkbox") ); - }, - - select_groupbox_subitem: function() { - startApplication("testapp2"); - - setChecked(true, "Checkable"); - select("Checkable/Groupie"); - compare("'Groupie' clicked", getText("Status")); - - setChecked(false, "Checkable"); - expectFail("Can't select disabled button"); - select("Checkable/Groupie"); - }, - - select_from_popup: function() { - startApplication("testapp2"); - select( "Tab Two", tabBar() ); - - select("Popup"); - select("&No"); - compare("No", getText("Popup response")); - - select("Popup"); - select("&Yes"); - compare("Yes", getText("Popup response")); - }, - - enter_invisible: function() { - startApplication("testapp2"); - select( "Tab Two", tabBar() ); - - setChecked(true, "Checkbox"); - enter("hello world", "Silly 1"); - - setChecked(false, "Checkbox"); - expectFail("Can't enter text into non-visible widget"); - enter("hello again world", "Silly 2"); - }, - - select_menu: function() { - startApplication("testapp2"); - select( "Tab Free", tabBar() ); - - select("Menu Item #3", "Menu"); - compare("Menu Item #3", getText("Menu")); - } -} diff --git a/tests/qtuitest/sys_input/testdata/enter_invisible/failure_.txt b/tests/qtuitest/sys_input/testdata/enter_invisible/failure_.txt deleted file mode 100644 index 8c3ee3d..0000000 --- a/tests/qtuitest/sys_input/testdata/enter_invisible/failure_.txt +++ /dev/null @@ -1,48 +0,0 @@ -ERROR: Buddy widget for 'Silly 2' not found. -Available labels: Popup,Dialog,Popup response,Checkbox,CheckGroup,CheckGroup/Do Nothing -Application : -Active Widget: TestWidget[fvvvvvuvqpn9o] -Focus Widget : QCheckBox[40u930] -Buddypairs: - Label: QPushButton[40tjn8] 'Popup' -- Buddy: QPushButton[40tjn8] 'Popup' x:15 y:714 h:28 w:618 - Label: QGroupBox[40vi90] 'CheckGroup' -- Buddy: QGroupBox[40vi90] 'CheckGroup' x:15 y:853 h:68 w:618 - Label: QCheckBox[40u930] 'Checkbox' -- Buddy: QCheckBox[40u930] 'Checkbox' x:15 y:812 h:23 w:618 - Label: QPushButton[40u72o] 'Dialog' -- Buddy: QPushButton[40u72o] 'Dialog' x:15 y:748 h:28 w:618 - Label: QLabel[40ua88] 'Popup response' -- Buddy: QLineEdit[4146ho] '' x:128 y:782 h:24 w:505 - Label: QPushButton[413pv0] 'CheckGroup/Do Nothing' -- Buddy: QPushButton[413pv0] 'CheckGroup/Do Nothing' x:26 y:882 h:28 w:596 -Widgets without a buddy Label: - QTabBar[40icko] x:4 y:679 h:26 w:238 -Disabled widgets without a buddy Label: - QTabBar[40icko] x:4 y:679 h:26 w:238 -Buddy widgets sorted on position: - QTabBar[40icko] x:4 y:679 h:26 w:238 - QPushButton[40tjn8] x:15 y:714 h:28 w:618 - QPushButton[40u72o] x:15 y:748 h:28 w:618 - QLineEdit[4146ho] x:128 y:782 h:24 w:505 - QCheckBox[40u930] x:15 y:812 h:23 w:618 - QGroupBox[40vi90] x:15 y:853 h:68 w:618 - QPushButton[413pv0] x:26 y:882 h:28 w:596 -Location: /home/daviclar/build/qtuitest-rd/tests/qtuitest/sys_input/sys_input.js:333 -Also see failure_.png for a screenshot. -Application : -Active Widget: TestWidget[fvvvvvuvqpn9o] -Focus Widget : QCheckBox[40u930] -Buddypairs: - Label: QPushButton[40tjn8] 'Popup' -- Buddy: QPushButton[40tjn8] 'Popup' x:15 y:714 h:28 w:618 - Label: QGroupBox[40vi90] 'CheckGroup' -- Buddy: QGroupBox[40vi90] 'CheckGroup' x:15 y:853 h:68 w:618 - Label: QCheckBox[40u930] 'Checkbox' -- Buddy: QCheckBox[40u930] 'Checkbox' x:15 y:812 h:23 w:618 - Label: QPushButton[40u72o] 'Dialog' -- Buddy: QPushButton[40u72o] 'Dialog' x:15 y:748 h:28 w:618 - Label: QLabel[40ua88] 'Popup response' -- Buddy: QLineEdit[4146ho] '' x:128 y:782 h:24 w:505 - Label: QPushButton[413pv0] 'CheckGroup/Do Nothing' -- Buddy: QPushButton[413pv0] 'CheckGroup/Do Nothing' x:26 y:882 h:28 w:596 -Widgets without a buddy Label: - QTabBar[40icko] x:4 y:679 h:26 w:238 -Disabled widgets without a buddy Label: - QTabBar[40icko] x:4 y:679 h:26 w:238 -Buddy widgets sorted on position: - QTabBar[40icko] x:4 y:679 h:26 w:238 - QPushButton[40tjn8] x:15 y:714 h:28 w:618 - QPushButton[40u72o] x:15 y:748 h:28 w:618 - QLineEdit[4146ho] x:128 y:782 h:24 w:505 - QCheckBox[40u930] x:15 y:812 h:23 w:618 - QGroupBox[40vi90] x:15 y:853 h:68 w:618 - QPushButton[413pv0] x:26 y:882 h:28 w:596 diff --git a/tests/qtuitest/sys_input/testdata/select_groupbox_subitem/failure_.txt b/tests/qtuitest/sys_input/testdata/select_groupbox_subitem/failure_.txt deleted file mode 100644 index fadfa4b..0000000 --- a/tests/qtuitest/sys_input/testdata/select_groupbox_subitem/failure_.txt +++ /dev/null @@ -1,46 +0,0 @@ -Object QPushButton(0x817be90 "") was expected to emit pressed() within 2000 milliseconds, but it didn't. -Location: /home/daviclar/build/qtuitest-rd/tests/qtuitest/sys_input/sys_input.js:308 -Failed to save failure screenshot: AUT returned a null screenshot. -Application : -Active Widget: TestWidget[fvvvvvuvu9928] -Focus Widget : QGroupBox[410k10] -Buddypairs: - Label: QGroupBox[410k10] 'Checkable' -- Buddy: QGroupBox[410k10] 'Checkable' x:15 y:812 h:68 w:602 - Label: QPushButton[41eboo] 'Spacer 3' -- Buddy: QPushButton[41eboo] 'Spacer 3' x:15 y:1058 h:28 w:602 - Label: QPushButton[41bac0] 'Spacer 0' -- Buddy: QPushButton[41bac0] 'Spacer 0' x:15 y:956 h:28 w:602 - Label: QPushButton[40t330] 'Spacer 1' -- Buddy: QPushButton[40t330] 'Spacer 1' x:15 y:990 h:28 w:602 - Label: QPushButton[41e8d0] 'Spacer 4' -- Buddy: QPushButton[41e8d0] 'Spacer 4' x:15 y:1092 h:28 w:602 - Label: QPushButton[41ffkg] 'Checkable/Groupie' -- Buddy: QPushButton[41ffkg] 'Checkable/Groupie' x:26 y:841 h:28 w:580 - Label: QLabel[40ve50] 'Status' -- Buddy: QLineEdit[40ss1g] '' x:63 y:714 h:24 w:554 - Label: QPushButton[40tt90] 'Show Modal Dialog' -- Buddy: QPushButton[40tt90] 'Show Modal Dialog' x:15 y:778 h:28 w:602 - Label: QGroupBox[40vfro] 'Bug206084' -- Buddy: QLineEdit[41cfj0] '' x:26 y:915 h:24 w:580 - Label: QLabel[4161e8] 'Time' -- Buddy: QTimeEdit[41e2p0] '' x:63 y:1126 h:24 w:554 - Label: QPushButton[41ee20] 'Spacer 2' -- Buddy: QPushButton[41ee20] 'Spacer 2' x:15 y:1024 h:28 w:602 - Label: QPushButton[41f4k0] 'Do Nothing' -- Buddy: QPushButton[41f4k0] 'Do Nothing' x:15 y:744 h:28 w:602 -Widgets without a buddy Label: - QGroupBox[40vfro] x:15 y:886 h:64 w:602 - QScrollBar[415o30] x:626 y:705 h:452 w:16 - QScrollArea[4189ig] x:6 y:705 h:452 w:636 - QTabBar[40icko] x:4 y:679 h:26 w:238 -Disabled widgets without a buddy Label: - QGroupBox[40vfro] x:15 y:886 h:64 w:602 - QScrollBar[415o30] x:626 y:705 h:452 w:16 - QScrollArea[4189ig] x:6 y:705 h:452 w:636 - QTabBar[40icko] x:4 y:679 h:26 w:238 -Buddy widgets sorted on position: - QTabBar[40icko] x:4 y:679 h:26 w:238 - QScrollArea[4189ig] x:6 y:705 h:452 w:636 - QScrollBar[415o30] x:626 y:705 h:452 w:16 - QLineEdit[40ss1g] x:63 y:714 h:24 w:554 - QPushButton[41f4k0] x:15 y:744 h:28 w:602 - QPushButton[40tt90] x:15 y:778 h:28 w:602 - QGroupBox[410k10] x:15 y:812 h:68 w:602 - QPushButton[41ffkg] x:26 y:841 h:28 w:580 - QGroupBox[40vfro] x:15 y:886 h:64 w:602 - QLineEdit[41cfj0] x:26 y:915 h:24 w:580 - QPushButton[41bac0] x:15 y:956 h:28 w:602 - QPushButton[40t330] x:15 y:990 h:28 w:602 - QPushButton[41ee20] x:15 y:1024 h:28 w:602 - QPushButton[41eboo] x:15 y:1058 h:28 w:602 - QPushButton[41e8d0] x:15 y:1092 h:28 w:602 - QTimeEdit[41e2p0] x:63 y:1126 h:24 w:554 diff --git a/tests/qtuitest/sys_linguist/sys_linguist.pro b/tests/qtuitest/sys_linguist/sys_linguist.pro deleted file mode 100644 index 6a9c6c3..0000000 --- a/tests/qtuitest/sys_linguist/sys_linguist.pro +++ /dev/null @@ -1,10 +0,0 @@ -SOURCES=sys_linguist.qtt -CONFIG+=systemtest - - - -target.path += \ - /usr/local/bin - -INSTALLS += \ - target
\ No newline at end of file diff --git a/tests/qtuitest/sys_linguist/sys_linguist.qtt b/tests/qtuitest/sys_linguist/sys_linguist.qtt deleted file mode 100644 index a098cc5..0000000 --- a/tests/qtuitest/sys_linguist/sys_linguist.qtt +++ /dev/null @@ -1,152 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of QtUiTest. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - - -include("filedialog.qtt"); - -testcase = { - - //TODO: In Progress. Not expected to pass (or even work correctly) yet. - - init: function() { - // Start the application - startApplication("linguist"); - - // Open file - select("File/Open...", menuBar()); - FileDialog.openFile(baseDataPath() + "test_fr.ts"); - - // Make sure all views are shown - setChecked(true, "View/Views/Context", menuBar()); - setChecked(true, "View/Views/Strings", menuBar()); - setChecked(true, "View/Views/Phrases and guesses", menuBar()); - setChecked(true, "View/Views/Sources and Forms", menuBar()); - setChecked(true, "View/Views/Warnings", menuBar()); - - // Switch on all validation - setChecked(true, "Validation/Accelerators", menuBar()); - setChecked(true, "Validation/Ending Punctuation", menuBar()); - setChecked(true, "Validation/Phrase matches", menuBar()); - setChecked(true, "Validation/Place Marker Matches", menuBar()); - - // Switch off Length Variants - setChecked(false, "View/Length Variants", menuBar()); - - // Labels are above their buddy widgets - setLabelOrientation(LabelAbove); - }, - - check_translation_data: { - blue: [ "Colours", "blue", "bleu" ], - third: [ "Ordinals", "third", "troisième" ], - nine: [ "Numbers", "nine", "neuf" ] - }, - - check_translation: function(context, sourceText, translated) { - select( context, "Context" ); - select( sourceText, "Strings" ); - compare(getText("Source text"), sourceText); - compare(getText("French translation"), translated); - }, - - check_warnings_data: { - warn1: [ "Placemarkers", "Read error reading from %1: %2", - "Translation does not refer to the same place markers as in the source text." ], - warn2: [ "Accelerators", "&hello world", "Accelerator possibly missing in translation." ] - }, - - check_warnings: function(context, sourceText, warning) { - select( context, "Context" ); - select( sourceText, "Strings" ); - compare(getText("Source text"), sourceText); - verify(getList("Warnings").contains(warning)); - }, - - missing_translations: function() { - select( "Translation/Next Unfinished" ); - var list = new Array(); - var val = getSelectedValue("Context")[1] + " : " + getText("Source text"); - var first = val; - - do { - list.push(val); - select( "Translation/Next Unfinished" ); - var val = getSelectedValue("Context")[1] + " : " + getText("Source text"); - } while (val != first); - - verify(list.contains("Numbers : four")); - verify(list.contains("Ordinals : sixth")); - verify(list.contains("Colours : a mauvy shade of pinky russet")); - }, - - check_statistics: function() { - //TODO: Should also check word count, however this is not easy to do - // in JavaScript for Unicode strings. - - var sourceChars = 0; - var translatedChars = 0; - var sourceNonSpaceChars = 0; - var translatedNonSpaceChars = 0; - var first = getSelectedValue("Context")[1] + " : " + getText("Source text"); - - do { - var sourceText = getText("Source text"); - var translatedText = getText("French translation"); - sourceChars += sourceText.length; - translatedChars += translatedText.length; - - sourceNonSpaceChars += sourceText.replace(/\s/g, "").length; - translatedNonSpaceChars += translatedText.replace(/\s/g, "").length; - select( "Translation/Next" ); - var val = getSelectedValue("Context")[1] + " : " + getText("Source text"); - } while (val != first); - - select("View/Statistics", menuBar()); - var labels = getLabels(); - - compare(sourceNonSpaceChars, labels[labels.indexOf("Characters:")+1]); - compare(translatedNonSpaceChars, labels[labels.indexOf("Characters:")+2]); - compare(sourceChars, labels[labels.indexOf("Characters (with spaces):")+1]); - compare(translatedChars, labels[labels.indexOf("Characters (with spaces):")+2]); - } - -} diff --git a/tests/qtuitest/sys_linguist/testdata/test_fr.ts b/tests/qtuitest/sys_linguist/testdata/test_fr.ts deleted file mode 100644 index 60108f5..0000000 --- a/tests/qtuitest/sys_linguist/testdata/test_fr.ts +++ /dev/null @@ -1,158 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.0" language="fr"> -<context> - <name>Numbers</name> - <message> - <source>one</source> - <translation>un</translation> - </message> - <message> - <source>two</source> - <translation>deux</translation> - </message> - <message> - <source>three</source> - <translation>trois</translation> - </message> - <message> - <source>four</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>five</source> - <translation>cinq</translation> - </message> - <message> - <source>six</source> - <translation>six</translation> - </message> - <message> - <source>seven</source> - <translation>sept</translation> - </message> - <message> - <source>eight</source> - <translation>huit</translation> - </message> - <message> - <source>nine</source> - <translation>neuf</translation> - </message> - <message> - <source>ten</source> - <translation>dix</translation> - </message> -</context> -<context> - <name>Ordinals</name> - <message> - <source>first</source> - <translation>premier</translation> - </message> - <message> - <source>second</source> - <translation>deuxième</translation> - </message> - <message> - <source>third</source> - <translation>troisième</translation> - </message> - <message> - <source>fourth</source> - <translation>quatrième</translation> - </message> - <message> - <source>fifth</source> - <translation>cinquième</translation> - </message> - <message> - <source>sixth</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>seventh</source> - <translation>septième</translation> - </message> - <message> - <source>eighth</source> - <translation>huitième</translation> - </message> - <message> - <source>ninth</source> - <translation>neuvième</translation> - </message> - <message> - <source>tenth</source> - <translation>dixième.</translation> - </message> -</context> -<context> - <name>Colours</name> - <message> - <source>red</source> - <translation>rouge</translation> - </message> - <message> - <source>orange</source> - <translation>orange</translation> - </message> - <message> - <source>yellow</source> - <translation>jaune</translation> - </message> - <message> - <source>green</source> - <translation>vert</translation> - </message> - <message> - <source>blue</source> - <translation>bleu</translation> - </message> - <message> - <source>a mauvy shade of pinky russet</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Placemarkers</name> - <message> - <source>Read: %1</source> - <translation>Lecture : %1</translation> - </message> - <message> - <source>Write: %1</source> - <translation>Écriture : %1</translation> - </message> - <message> - <source>Delete: %1</source> - <translation>Supprimer: %1</translation> - </message> - <message> - <source>Read error reading from %1: %2</source> - <translation>Erreur de lecture sur %1</translation> - </message> - <message> - <source>Write error writing to %1: %2</source> - <translation>Erreur d'écriture sur %1: %2</translation> - </message> -</context> -<context> - <name>Accelerators</name> - <message> - <source>&hello world</source> - <translation>bonjour tout le monde</translation> - </message> - <message> - <source>&goodbye</source> - <translation>au &revoir</translation> - </message> -</context> -<context> - <name>Other</name> - <message> - <source>all for one, one for all.</source> - <translation>tout pour un, un pour tout</translation> - </message> -</context> -</TS> diff --git a/tests/qtuitest/testapps/fileDialogSaveApp/fileDialogSaveApp.pro b/tests/qtuitest/testapps/fileDialogSaveApp/fileDialogSaveApp.pro deleted file mode 100644 index a458154..0000000 --- a/tests/qtuitest/testapps/fileDialogSaveApp/fileDialogSaveApp.pro +++ /dev/null @@ -1,23 +0,0 @@ -###################################################################### -# Automatically generated by qmake (2.01a) Wed Jul 12 13:50:18 2006 -###################################################################### - -TEMPLATE = app -TARGET = -DEPENDPATH += . -INCLUDEPATH += . -INCLUDEPATH += $$SRCROOT/libqsystemtest -unix:!maemo* { - # avoid the need for make install on *nix - DESTDIR=$$BUILDROOT/bin -} - -# Input -SOURCES += main.cpp - - -target.path += \ - /usr/local/bin - -INSTALLS += \ - target diff --git a/tests/qtuitest/testapps/fileDialogSaveApp/main.cpp b/tests/qtuitest/testapps/fileDialogSaveApp/main.cpp deleted file mode 100644 index ac651f1..0000000 --- a/tests/qtuitest/testapps/fileDialogSaveApp/main.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include <QtGui> - -int main (int argc, char* argv[]) -{ - QApplication app( argc, argv ); - QFileDialog fd; - fd.show(); - - return app.exec(); -} diff --git a/tests/qtuitest/testapps/graphicsViewTest/graphicsViewTest.pro b/tests/qtuitest/testapps/graphicsViewTest/graphicsViewTest.pro deleted file mode 100644 index fa21ee2..0000000 --- a/tests/qtuitest/testapps/graphicsViewTest/graphicsViewTest.pro +++ /dev/null @@ -1,19 +0,0 @@ -TEMPLATE = app -TARGET = -DEPENDPATH += . -INCLUDEPATH += . -unix:!maemo* { - # avoid the need for make install on *nix - DESTDIR=$$BUILDROOT/bin -} - -HEADERS += mainwindow.h -SOURCES += main.cpp mainwindow.cpp -mac:DESTDIR=$$BUILDROOT/bin - - -target.path += \ - /usr/local/bin - -INSTALLS += \ - target
\ No newline at end of file diff --git a/tests/qtuitest/testapps/graphicsViewTest/main.cpp b/tests/qtuitest/testapps/graphicsViewTest/main.cpp deleted file mode 100644 index d5a6826..0000000 --- a/tests/qtuitest/testapps/graphicsViewTest/main.cpp +++ /dev/null @@ -1,15 +0,0 @@ - -#include <QtGui> - -#include "mainwindow.h" - -int main(int argv, char *args[]) -{ - QApplication gearsofwartactics(argv, args); - MainWindow mainWindow; - mainWindow.setGeometry(100, 100, 1024, 768); - mainWindow.show(); - - return gearsofwartactics.exec(); -} - diff --git a/tests/qtuitest/testapps/graphicsViewTest/mainwindow.cpp b/tests/qtuitest/testapps/graphicsViewTest/mainwindow.cpp deleted file mode 100644 index 45e3c88..0000000 --- a/tests/qtuitest/testapps/graphicsViewTest/mainwindow.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include <QtGui> - - -#include "mainwindow.h" - -MainWindow::MainWindow() -{ - const QString pixmapString = "qtlogo4.png"; - item = new QGraphicsPixmapItem(pixmapString); - - textItem = new QGraphicsTextItem("here is some text"); - textItem->setTextInteractionFlags(Qt::TextEditable); - QGraphicsTextItem *textItem2 = new QGraphicsTextItem("and here is some more"); - textItem2->setTextInteractionFlags(Qt::TextEditable); - textItem2->setPos(20, 30); - scene = new QGraphicsScene(); -// scene->addItem(item); - scene->addItem(textItem); - scene->addItem(textItem2); - scene->setBackgroundBrush(Qt::lightGray); - - view = new QGraphicsView(scene); - view->rotate(-30); - QHBoxLayout *layout = new QHBoxLayout; - layout->addWidget(view); - QLabel *label = new QLabel("hello world"); - layout->addWidget(label); - QWidget *widget = new QWidget; - widget->setLayout(layout); - - setCentralWidget(widget); - setWindowTitle(tr("Diagramscene")); - - -} diff --git a/tests/qtuitest/testapps/graphicsViewTest/mainwindow.h b/tests/qtuitest/testapps/graphicsViewTest/mainwindow.h deleted file mode 100644 index c8b68aa..0000000 --- a/tests/qtuitest/testapps/graphicsViewTest/mainwindow.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef MAINWINDOW_H -#define MAINWINDOW_H - -#include <QMainWindow> - -class QGraphicsView; -class QGraphicsScene; -class QGraphicsItem; -class QGraphicsTextItem; -class QGraphicsPixmapItem; - -class MainWindow : public QMainWindow -{ - Q_OBJECT - -public: - MainWindow(); -private: - - QGraphicsView *view; - QGraphicsScene *scene; - QGraphicsItem *item; - QGraphicsTextItem *textItem; - QGraphicsPixmapItem *gowtPixmapItem; -}; - -#endif diff --git a/tests/qtuitest/testapps/testapp1/main.cpp b/tests/qtuitest/testapps/testapp1/main.cpp deleted file mode 100644 index aa6c53c..0000000 --- a/tests/qtuitest/testapps/testapp1/main.cpp +++ /dev/null @@ -1,245 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of QtUiTest. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtGui> - -class TestWidget : public QTabWidget -{ -Q_OBJECT -public: - TestWidget(QWidget *parent = 0, Qt::WindowFlags f = 0); -private slots: - void setupWidgets(); - -private: - QLineEdit *testEdit; -}; -#include "main.moc" - -TestWidget::TestWidget(QWidget *parent, Qt::WindowFlags f) - : QTabWidget(parent) -{ - setWindowFlags(f); - setWindowTitle("testapp1"); - QTimer::singleShot(0, this, SLOT(setupWidgets())); -} - -void TestWidget::setupWidgets() { - { - QWidget *page = new QWidget(this); - QSignalMapper *sm = new QSignalMapper(page); - - QFormLayout *fl(new QFormLayout); - - QLineEdit *statusEdit = new QLineEdit; - fl->addRow("Status", statusEdit); - - QLineEdit *le1 = new QLineEdit; - QPushButton *pb1 = new QPushButton("Button1"); - QLineEdit *le2 = new QLineEdit; - QPushButton *pb2 = new QPushButton("Button2"); - - fl->addRow("LineEdit1", le1); - fl->addRow(pb1); - fl->addRow("LineEdit2", le2); - fl->addRow(pb2); - - QComboBox *ecb = new QComboBox; - ecb->setEditable(true); - ecb->addItem("Red"); - ecb->addItem("Green"); - ecb->addItem("Blue"); - ecb->addItem("Cyan"); - ecb->addItem("Magenta"); - ecb->addItem("Yellow"); - ecb->addItem("Black"); - ecb->addItem("White"); - fl->addRow("Colour", ecb); - - QMenu *menu = new QMenu(page); - QAction *action1 = menu->addAction("Action 1", sm, SLOT(map())); - QAction *action2 = menu->addAction("Action 2", sm, SLOT(map())); - QAction *actionWithSubmenu = menu->addAction("Submenu", sm, SLOT(map())); - for ( int i = 1; i <= 8; ++i ) { - QString menuName = QString("Menu Item #%1").arg(i); - menu->addAction(menuName); - } - - QAction *actionLast = menu->addAction("Last!", sm, SLOT(map())); - - QMenu *submenu = new QMenu(page); - actionWithSubmenu->setMenu(submenu); - QAction *subaction1 = submenu->addAction( "Subaction 1", sm, SLOT(map()) ); - QAction *subaction2 = submenu->addAction( "Subaction 2", sm, SLOT(map()) ); - - connect(le1, SIGNAL(textChanged(QString)), sm, SLOT(map())); - connect(le2, SIGNAL(textChanged(QString)), sm, SLOT(map())); - connect(pb1, SIGNAL(clicked()), sm, SLOT(map())); - connect(pb2, SIGNAL(clicked()), sm, SLOT(map())); - connect(ecb, SIGNAL(activated(int)), sm, SLOT(map())); - - sm->setMapping(le1, "LineEdit1 text changed"); - sm->setMapping(le2, "LineEdit2 text changed"); - sm->setMapping(pb1, "Button1 clicked"); - sm->setMapping(pb2, "Button2 clicked"); - sm->setMapping(ecb, "Colour changed"); - sm->setMapping(action1, "Action 1 activated"); - sm->setMapping(action2, "Action 2 activated"); - sm->setMapping(actionWithSubmenu, "Submenu activated"); - sm->setMapping(actionLast, "Last activated"); - sm->setMapping(subaction1, "Subaction 1 activated"); - sm->setMapping(subaction2, "Subaction 2 activated"); - - connect(sm, SIGNAL(mapped(QString)), statusEdit, SLOT(setText(QString))); - - page->setLayout(fl); - - addTab(page, "First Tab"); - } - - { - QWidget *page = new QWidget; - QSignalMapper *sm = new QSignalMapper(page); - - QFormLayout *fl(new QFormLayout); - - QLineEdit *statusEdit = new QLineEdit; - fl->addRow("CowStatus", statusEdit); - - QComboBox *cb = new QComboBox; - cb->addItem("Neigh"); - cb->addItem("Woof"); - cb->addItem("Moo"); - cb->addItem("Meow"); - cb->addItem("Quack"); - cb->addItem("Honk"); - cb->addItem("Vrooooom"); - cb->addItem("\"Hi Frank\""); - cb->addItem("Choo choo!"); - fl->addRow("Cow Goes?", cb); - connect(cb, SIGNAL(activated(int)), sm, SLOT(map())); - sm->setMapping(cb, "Cow Goes? changed"); - - for (int i = 0; i < 20; ++i) { - QString name( QString("CowButton%1").arg(i) ); - QPushButton *pb1 = new QPushButton(name); - fl->addRow(pb1); - connect(pb1, SIGNAL(clicked()), sm, SLOT(map())); - sm->setMapping(pb1, name + " clicked"); - } - - connect(sm, SIGNAL(mapped(QString)), statusEdit, SLOT(setText(QString))); - - page->setLayout(fl); - - QScrollArea *sa = new QScrollArea(this); - sa->setWidget(page); - sa->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - sa->setFocusPolicy(Qt::NoFocus); - sa->setFrameStyle(QFrame::NoFrame); - sa->setWidgetResizable(true); - addTab(sa, "Cow Tab"); - } - - { - QWidget *page = new QWidget; - QSignalMapper *sm = new QSignalMapper(page); - - QFormLayout *fl(new QFormLayout); - - QLineEdit *statusEdit = new QLineEdit; - fl->addRow("Status", statusEdit); - - QCheckBox *cb = new QCheckBox("Checkbox"); - cb->setChecked(false); - fl->addRow(cb); - - QPushButton *pb = new QPushButton("Clear"); - fl->addRow(pb); - - QTimeEdit *te = new QTimeEdit; - te->setTime(QTime(12, 30, 30)); - te->setDisplayFormat("hh:mm:ss"); - fl->addRow("Time", te); - - QDateEdit *de = new QDateEdit; - de->setDate(QDate(2001, 1, 1)); - fl->addRow("Date", de); - - QDateTimeEdit *dte = new QDateTimeEdit; - dte->setDate(QDate(2010, 12, 1)); - dte->setTime(QTime(15, 0, 0)); - dte->setDisplayFormat("dd MMMM yyyy hh:mm a"); - fl->addRow("DateTime", dte); - - connect(cb, SIGNAL(clicked()), sm, SLOT(map())); - connect(pb, SIGNAL(clicked()), sm, SLOT(map())); - connect(te, SIGNAL(editingFinished()), sm, SLOT(map())); - connect(de, SIGNAL(editingFinished()), sm, SLOT(map())); - connect(dte, SIGNAL(editingFinished()), sm, SLOT(map())); - sm->setMapping(cb, "'Checkbox' clicked"); - sm->setMapping(pb, "'Clear' clicked"); - sm->setMapping(te, "'Time' edited"); - sm->setMapping(de, "'Date' edited"); - sm->setMapping(dte, "'DateTime' edited"); - - connect(sm, SIGNAL(mapped(QString)), statusEdit, SLOT(setText(QString))); - - page->setLayout(fl); - - addTab(page, "Awesome Tab"); - } - - for (int i = 0; i < 5; ++i) { - QWidget* widget = new QWidget(this); - addTab(widget, QString("Distant Tab %1").arg(i)); - } -} - -int main(int argc, char** argv) -{ - QApplication app(argc, argv); - TestWidget tw; - tw.resize(640,480); - tw.show(); - return app.exec(); -} - diff --git a/tests/qtuitest/testapps/testapp1/testapp1.pro b/tests/qtuitest/testapps/testapp1/testapp1.pro deleted file mode 100644 index eedc1f0..0000000 --- a/tests/qtuitest/testapps/testapp1/testapp1.pro +++ /dev/null @@ -1,27 +0,0 @@ -SOURCES*=main.cpp -TEMPLATE=app -unix:!maemo* { - # avoid the need for make install on *nix - DESTDIR=$$BUILDROOT/bin -} - -QT+=network - -symbian { - TARGET.EPOCALLOWDLLDATA=1 - TARGET.CAPABILITY += AllFiles ReadDeviceData ReadUserData SwEvent WriteUserData NetworkServices -} - -win32 { - target.path=$$INSTALLROOT - INSTALLS+=target -} - -mac { - CONFIG-=app_bundle -} - -maemo5|maemo6 { - target.path = /usr/local/lib - INSTALLS += target -} diff --git a/tests/qtuitest/testapps/testapp2/main.cpp b/tests/qtuitest/testapps/testapp2/main.cpp deleted file mode 100644 index 43193c1..0000000 --- a/tests/qtuitest/testapps/testapp2/main.cpp +++ /dev/null @@ -1,262 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of QtUiTest. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtGui> - -class TestWidget : public QTabWidget -{ -Q_OBJECT -public: - TestWidget(QWidget *parent = 0, Qt::WindowFlags f = 0); -private slots: - void setupWidgets(); - void raiseDialog(); - void doPopup(); - void doDialog(); - void setButtonText(const QString &text); -private: - QLineEdit *popupEdit; - QPushButton *menuButton; -}; -#include "main.moc" - -TestWidget::TestWidget(QWidget *parent, Qt::WindowFlags f) - : QTabWidget(parent) -{ - setWindowFlags(f); - setWindowTitle("testapp2"); - QTimer::singleShot(0, this, SLOT(setupWidgets())); -} - -void TestWidget::setupWidgets() { - { - QWidget *page(new QWidget); - QFormLayout *fl(new QFormLayout); - QSignalMapper *sm(new QSignalMapper(page)); - - QLineEdit *statusEdit = new QLineEdit; - fl->addRow("Status", statusEdit); - QTimer::singleShot(0, statusEdit, SLOT(setFocus())); - - QPushButton *nothing = new QPushButton("Do Nothing"); - QPushButton *dialog = new QPushButton("Show Modal Dialog"); - connect(dialog, SIGNAL(pressed()), this, SLOT(raiseDialog())); - - QGroupBox *checkableGroupBox = new QGroupBox; - checkableGroupBox->setCheckable(true); - checkableGroupBox->setChecked(false); - checkableGroupBox->setTitle("Checkable"); - QPushButton *buttonInGroupBox = new QPushButton("Groupie"); - { - QFormLayout *subFl(new QFormLayout); - subFl->addRow(buttonInGroupBox); - checkableGroupBox->setLayout(subFl); - } - - /* - Test that a focusable widget located in a noncheckable group box - which contains no other focusable widgets can be referred to using - the group box label. - */ - QGroupBox *lineEditGroupBox = new QGroupBox; - { - lineEditGroupBox->setCheckable(false); - lineEditGroupBox->setTitle("Bug206084"); - QHBoxLayout* hbox = new QHBoxLayout; - hbox->addWidget(new QLineEdit); - lineEditGroupBox->setLayout(hbox); - } - - fl->addRow(nothing); - fl->addRow(dialog); - fl->addRow(checkableGroupBox); - fl->addRow(lineEditGroupBox); - - for (int i = 0; i < 5; ++i) { - fl->addRow(new QPushButton(QString("Spacer %1").arg(i))); - } - - QTimeEdit *te = new QTimeEdit; - te->setTime(QTime(12, 30)); - te->setDisplayFormat("hh:mm"); - fl->addRow("Time", te); - - connect(nothing, SIGNAL(clicked()), sm, SLOT(map())); - connect(checkableGroupBox, SIGNAL(clicked(bool)), sm, SLOT(map())); - connect(buttonInGroupBox, SIGNAL(clicked()), sm, SLOT(map())); - - sm->setMapping(nothing, "'Do Nothing' clicked"); - sm->setMapping(checkableGroupBox, "'Checkable' clicked"); - sm->setMapping(buttonInGroupBox, "'Groupie' clicked"); - - connect(sm, SIGNAL(mapped(QString)), statusEdit, SLOT(setText(QString))); - - page->setLayout(fl); - QScrollArea *sa = new QScrollArea(this); - sa->setWidget(page); - sa->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - sa->setFocusPolicy(Qt::NoFocus); - sa->setFrameStyle(QFrame::NoFrame); - sa->setWidgetResizable(true); - addTab(sa, "Tab One"); - } - - { - QWidget *page(new QWidget); - QFormLayout *fl(new QFormLayout); - - QPushButton *messageButton(new QPushButton("Popup")); - fl->addRow(messageButton); - connect(messageButton, SIGNAL(clicked()), this, SLOT(doPopup())); - - QPushButton *dialogButton(new QPushButton("Dialog")); - fl->addRow(dialogButton); - connect(dialogButton, SIGNAL(clicked()), this, SLOT(doDialog()), Qt::QueuedConnection); - - popupEdit = new QLineEdit; - fl->addRow("Popup response", popupEdit); - - QCheckBox *cb = new QCheckBox("Checkbox"); - - QLineEdit *sillyLineEdit1 = new QLineEdit; - QLineEdit *sillyLineEdit2 = new QLineEdit; - QLabel *sillyLabel1 = new QLabel("Silly 1"); - QLabel *sillyLabel2 = new QLabel("Silly 2"); - - sillyLineEdit1->setVisible(false); - sillyLineEdit2->setVisible(false); - sillyLabel1->setVisible(false); - sillyLabel2->setVisible(false); - - connect(cb, SIGNAL(toggled(bool)), sillyLineEdit1, SLOT(setVisible(bool))); - connect(cb, SIGNAL(toggled(bool)), sillyLineEdit2, SLOT(setVisible(bool))); - connect(cb, SIGNAL(toggled(bool)), sillyLabel1, SLOT(setVisible(bool))); - connect(cb, SIGNAL(toggled(bool)), sillyLabel2, SLOT(setVisible(bool))); - - fl->addRow(cb); - fl->addRow(sillyLabel1, sillyLineEdit1); - fl->addRow(sillyLabel2, sillyLineEdit2); - - QGroupBox *gb = new QGroupBox("CheckGroup"); - gb->setCheckable(true); - gb->setChecked(false); - { - QFormLayout *subFl(new QFormLayout); - subFl->addRow(new QPushButton("Do Nothing")); - gb->setLayout(subFl); - } - fl->addRow(gb); - - page->setLayout(fl); - addTab(page, "Tab Two"); - } - - { - QWidget *page(new QWidget); - QFormLayout *fl(new QFormLayout); - QSignalMapper *sm(new QSignalMapper(page)); - - menuButton = new QPushButton("Menu"); - QMenu *menu(new QMenu); - for ( int i = 1; i <= 6; ++i ) { - QString menuName = QString("Menu Item #%1").arg(i); - QAction *a = menu->addAction(menuName, sm, SLOT(map())); - sm->setMapping(a, a->text()); - } - menuButton->setMenu(menu); - fl->addRow("Menu", menuButton); - - connect(sm, SIGNAL(mapped(QString)), this, SLOT(setButtonText(QString))); - - QTimeEdit *te(new QTimeEdit); - te->setDisplayFormat("hh:mm:ss"); - te->setTime(QTime(12, 34, 56)); - fl->addRow("Time", te); - - QGroupBox *gb(new QGroupBox("Groupbox")); - QVBoxLayout *vb(new QVBoxLayout); - vb->addWidget( new QPushButton("Child Button 1") ); - vb->addWidget( new QPushButton("Child Button 2") ); - gb->setLayout(vb); - fl->addRow(gb); - - page->setLayout(fl); - addTab(page, "Tab Free"); - } - -} - -void TestWidget::raiseDialog() { - QDialog dlg; - QPushButton pb("Close", &dlg); - connect(&pb, SIGNAL(clicked()), &dlg, SLOT(accept())); - dlg.exec(); -} - -void TestWidget::doPopup() { - QString opt = ( - QMessageBox::warning(this, "A Message Box", "Please choose yes or no", - QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes) ? "Yes" : "No"; - popupEdit->setText(opt); -} - -void TestWidget::doDialog() { - QDialog dlg; - dlg.setWindowTitle("New Dialog"); - - QPushButton closeButton("Close", &dlg); - connect(&closeButton, SIGNAL(clicked()), &dlg, SLOT(accept())); - - dlg.exec(); -} - -void TestWidget::setButtonText(const QString &text) { - menuButton->setText(text); -} - -int main(int argc, char** argv) -{ - QApplication app(argc, argv); - TestWidget tw; - tw.resize(640,480); - tw.show(); - return app.exec(); -} diff --git a/tests/qtuitest/testapps/testapp2/testapp2.pro b/tests/qtuitest/testapps/testapp2/testapp2.pro deleted file mode 100644 index 07ae95a..0000000 --- a/tests/qtuitest/testapps/testapp2/testapp2.pro +++ /dev/null @@ -1,25 +0,0 @@ -SOURCES*=main.cpp -TEMPLATE=app -unix:!maemo* { - # avoid the need for make install on *nix - DESTDIR=$$BUILDROOT/bin -} - -symbian { - TARGET.EPOCALLOWDLLDATA=1 - TARGET.CAPABILITY += AllFiles ReadDeviceData ReadUserData SwEvent WriteUserData NetworkServices -} - -win32 { - target.path=$$INSTALLROOT - INSTALLS+=target -} - -mac { - CONFIG-=app_bundle -} - -maemo5|maemo6 { - target.path = /usr/local/lib - INSTALLS += target -} diff --git a/tests/qtuitest/testapps/testapp3/main.cpp b/tests/qtuitest/testapps/testapp3/main.cpp deleted file mode 100644 index 0763484..0000000 --- a/tests/qtuitest/testapps/testapp3/main.cpp +++ /dev/null @@ -1,142 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of QtUiTest. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtGui> - -class TestWidget : public QTabWidget -{ -Q_OBJECT -public: - TestWidget(QWidget *parent = 0, Qt::WindowFlags f = 0); -private slots: - void setupWidgets(); -}; -#include "main.moc" - -TestWidget::TestWidget(QWidget *parent, Qt::WindowFlags f) - : QTabWidget(parent) -{ - setWindowFlags(f); - setWindowTitle("testapp3"); - QTimer::singleShot(0, this, SLOT(setupWidgets())); -} - -void TestWidget::setupWidgets() { - { - QWidget *page(new QWidget); - QFormLayout *fl(new QFormLayout); - - QComboBox *cb = new QComboBox; - cb->addItems( QStringList() << "Off" << "Ask" << "On" ); - fl->addRow("Automatic", cb); - - cb = new QComboBox; - cb->addItems( QStringList() << "New York" << "Los Angeles" ); - fl->addRow("Time Zone", cb); - - page->setLayout(fl); - QScrollArea *sa = new QScrollArea(this); - sa->setWidget(page); - sa->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - sa->setFocusPolicy(Qt::NoFocus); - sa->setFrameStyle(QFrame::NoFrame); - sa->setWidgetResizable(true); - addTab(sa, "Time"); - } - - { - QWidget *page(new QWidget); - QFormLayout *fl(new QFormLayout); - - QTextEdit *textEdit = new QTextEdit; - fl->addRow("Text", textEdit); - - page->setLayout(fl); - addTab(page, "Text"); - } - - { - QWidget *page = new QWidget; - QSignalMapper *sm = new QSignalMapper(page); - - QFormLayout *fl(new QFormLayout); - - QLineEdit *statusEdit = new QLineEdit; - statusEdit->setFocusPolicy(Qt::NoFocus); - fl->addRow("Status", statusEdit); - - QPushButton *button1 = new QPushButton("NoFocus1"); - button1->setFocusPolicy(Qt::NoFocus); - button1->setShortcut(QKeySequence(Qt::Key_Select)); - connect(button1, SIGNAL(clicked()), sm, SLOT(map())); - sm->setMapping(button1, "NoFocus1 clicked"); - fl->addRow(button1); - - QPushButton *button2 = new QPushButton("NoFocus2"); - button2->setFocusPolicy(Qt::NoFocus); - button2->setShortcut(QKeySequence(Qt::Key_0)); - connect(button2, SIGNAL(clicked()), sm, SLOT(map())); - sm->setMapping(button2, "NoFocus2 clicked"); - fl->addRow(button2); - - connect(sm, SIGNAL(mapped(QString)), statusEdit, SLOT(setText(QString))); - page->setLayout(fl); - - QScrollArea *sa = new QScrollArea(this); - sa->setWidget(page); - sa->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - sa->setFocusPolicy(Qt::NoFocus); - sa->setFrameStyle(QFrame::NoFrame); - sa->setWidgetResizable(true); - addTab(sa, "Shortcuts"); - } - -} - -int main(int argc, char** argv) -{ - QApplication app(argc, argv); - TestWidget tw; - tw.resize(640,480); - tw.show(); - return app.exec(); -} - diff --git a/tests/qtuitest/testapps/testapp3/testapp3.pro b/tests/qtuitest/testapps/testapp3/testapp3.pro deleted file mode 100644 index 07ae95a..0000000 --- a/tests/qtuitest/testapps/testapp3/testapp3.pro +++ /dev/null @@ -1,25 +0,0 @@ -SOURCES*=main.cpp -TEMPLATE=app -unix:!maemo* { - # avoid the need for make install on *nix - DESTDIR=$$BUILDROOT/bin -} - -symbian { - TARGET.EPOCALLOWDLLDATA=1 - TARGET.CAPABILITY += AllFiles ReadDeviceData ReadUserData SwEvent WriteUserData NetworkServices -} - -win32 { - target.path=$$INSTALLROOT - INSTALLS+=target -} - -mac { - CONFIG-=app_bundle -} - -maemo5|maemo6 { - target.path = /usr/local/lib - INSTALLS += target -} diff --git a/tests/qtuitest/testapps/testapp4/main.cpp b/tests/qtuitest/testapps/testapp4/main.cpp deleted file mode 100644 index 5882949..0000000 --- a/tests/qtuitest/testapps/testapp4/main.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of QtUiTest. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtGui> -#include <QtCore> - -class TestWidget : public QWidget -{ -Q_OBJECT -public: - TestWidget(QWidget *parent = 0, Qt::WindowFlags f = 0); -private slots: - void setupWidgets(); -}; -#include "main.moc" - -TestWidget::TestWidget(QWidget *parent, Qt::WindowFlags f) - : QWidget(parent,f) -{ - setWindowTitle("testapp4"); - QTimer::singleShot(0, this, SLOT(setupWidgets())); -} - -void TestWidget::setupWidgets() { - - QTabWidget* tw = new QTabWidget; - QPushButton* tab1 = new QPushButton("A Button", this); - QPushButton* tab2 = new QPushButton("A Nother Button", this); - - tw->addTab(tab1, "Thirst"); - tw->addTab(tab2, "Sekond"); - - QLineEdit* le = new QLineEdit; - - QFormLayout* form = new QFormLayout; - form->addRow("Thing", le); - form->addRow(tw); - - setLayout(form); - - le->setFocus(); -} - -int main(int argc, char** argv) -{ - QApplication app(argc, argv); - TestWidget tw; - tw.resize(640,480); - tw.show(); - return app.exec(); -} - diff --git a/tests/qtuitest/testapps/testapp4/testapp4.pro b/tests/qtuitest/testapps/testapp4/testapp4.pro deleted file mode 100644 index 07ae95a..0000000 --- a/tests/qtuitest/testapps/testapp4/testapp4.pro +++ /dev/null @@ -1,25 +0,0 @@ -SOURCES*=main.cpp -TEMPLATE=app -unix:!maemo* { - # avoid the need for make install on *nix - DESTDIR=$$BUILDROOT/bin -} - -symbian { - TARGET.EPOCALLOWDLLDATA=1 - TARGET.CAPABILITY += AllFiles ReadDeviceData ReadUserData SwEvent WriteUserData NetworkServices -} - -win32 { - target.path=$$INSTALLROOT - INSTALLS+=target -} - -mac { - CONFIG-=app_bundle -} - -maemo5|maemo6 { - target.path = /usr/local/lib - INSTALLS += target -} diff --git a/tests/qtuitest/testapps/testapps.pro b/tests/qtuitest/testapps/testapps.pro deleted file mode 100644 index 13079d1..0000000 --- a/tests/qtuitest/testapps/testapps.pro +++ /dev/null @@ -1,8 +0,0 @@ -TEMPLATE=subdirs -SUBDIRS+= \ - testapp1 \ - testapp2 \ - testapp3 \ - testapp4 \ - graphicsViewTest \ - fileDialogSaveApp diff --git a/tests/qtuitest/tst_qalternatestack/tst_qalternatestack.cpp b/tests/qtuitest/tst_qalternatestack/tst_qalternatestack.cpp deleted file mode 100644 index 7b4e745..0000000 --- a/tests/qtuitest/tst_qalternatestack/tst_qalternatestack.cpp +++ /dev/null @@ -1,418 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of QtUiTest. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QTest> -#include <QObject> -#include <qalternatestack_p.h> -#include <QCoreApplication> -//#include <shared/qtopiaunittest.h> - -#ifdef Q_OS_UNIX -#include <signal.h> -#include <unistd.h> -#include <sys/syscall.h> -#include <string.h> -#include <errno.h> -#endif - -//TESTED_COMPONENT=QA: Testing Framework (18707) - -class tst_QAlternateStack : public QObject -{ - Q_OBJECT - -private slots: - void start(); - void switching(); - - void init(); - - void sigaltstack(); - - void multipleInstances(); - -private: - static void stack_entry(QAlternateStack*, QVariant const&); - - static void stack_entry1(QAlternateStack*, QVariant const&); - static void stack_entry2(QAlternateStack*, QVariant const&); - static void stack_entry3(QAlternateStack*, QVariant const&); - static void stack_entry4(QAlternateStack*, QVariant const&); - static void stack_entry_handler(QAlternateStack*,QVariant const&,int); - - int m_shouldSwitchFrom; - - QAlternateStack* m_stack; - QVariant m_data; - bool m_isActive; - bool m_isCurrentStack; - - QList<QPair<int,QAlternateStack*> > m_stackEntries; -}; - -class tst_QAlternateStackWithStackBuffer : public tst_QAlternateStack -{ - Q_OBJECT -}; - -#ifdef Q_OS_UNIX -extern char*& qalternatestack_stackbuf(); -extern int& qalternatestack_stackbuf_len(); -#endif - -int main(int argc, char** argv) -{ - QCoreApplication app(argc, argv); - - int ret = 0; - - // First, test the regular heap-allocated alternate stack. - { - tst_QAlternateStack test; - ret += QTest::qExec(&test, argc, argv); - } - -#ifdef Q_OS_UNIX - // Now try using memory allocated from the main stack only. - { - char buf[65536*4]; - qalternatestack_stackbuf() = buf; - qalternatestack_stackbuf_len() = 256*1024; - tst_QAlternateStackWithStackBuffer test; - ret += QTest::qExec(&test, argc, argv); - } -#endif - - return ret; -} - -void tst_QAlternateStack::stack_entry(QAlternateStack* stack, QVariant const& data) -{ - QVariantList list = data.toList(); - if (!list.count()) return; - if (!stack) return; - - tst_QAlternateStack* test = qobject_cast<tst_QAlternateStack*>(list.at(0).value<QObject*>()); - if (!test) return; - - test->m_stack = stack; - test->m_data = data; - test->m_isActive = stack->isActive(); - test->m_isCurrentStack = stack->isCurrentStack(); - - for (; test->m_shouldSwitchFrom > 0; --test->m_shouldSwitchFrom) { - stack->switchFrom(); - test->m_isActive = stack->isActive(); - test->m_isCurrentStack = stack->isCurrentStack(); - } -} - -void tst_QAlternateStack::stack_entry1(QAlternateStack* stack, QVariant const& data) -{ stack_entry_handler(stack, data, 1); } -void tst_QAlternateStack::stack_entry2(QAlternateStack* stack, QVariant const& data) -{ stack_entry_handler(stack, data, 2); } -void tst_QAlternateStack::stack_entry3(QAlternateStack* stack, QVariant const& data) -{ stack_entry_handler(stack, data, 3); } -void tst_QAlternateStack::stack_entry4(QAlternateStack* stack, QVariant const& data) -{ stack_entry_handler(stack, data, 4); } - -void tst_QAlternateStack::stack_entry_handler(QAlternateStack* stack, QVariant const& data, int number) -{ - QVariantList list = data.toList(); - if (!list.count()) return; - - tst_QAlternateStack* test = qobject_cast<tst_QAlternateStack*>(list.at(0).value<QObject*>()); - if (!test) return; - - test->m_stackEntries << qMakePair(number, stack); - test->m_stack = stack; - test->m_isActive = stack->isActive(); - test->m_isCurrentStack = stack->isCurrentStack(); - - // It is possible we've been called on a stack which overlaps some other memory. - // When this happens, try to increase the chances of causing a crash by corrupting memory. - static const int LEN = 32768; - char buf[LEN]; - for (int i = 0; i < LEN; i += 4) { - buf[i] = 0xDE; - buf[i+1] = 0xAD; - buf[i+2] = 0xBE; - buf[i+3] = 0xEF; - } - // Make sure compiler doesn't optimize it out - qChecksum(buf, LEN); -} - -/* - \req QTOPIA-78 - - \groups -*/ -void tst_QAlternateStack::start() -{ - if (!QAlternateStack::isAvailable()) { - QSKIP("QAlternateStack is not available on this platform.", SkipAll); - } - - QAlternateStack stack; - - QCOMPARE(stack.isActive(), false); - QCOMPARE(stack.isCurrentStack(), false); - - QVariantList list; - list.append( qVariantFromValue((QObject*)this) ); - - // Switch to the stack... - stack.start(tst_QAlternateStack::stack_entry, list); - // ... it should have returned almost immediately. - - // Check that our private members were set to the expected values. - QCOMPARE(m_stack, &stack); - QCOMPARE(m_data, qVariantFromValue(list)); - QCOMPARE(m_isActive, true); - QCOMPARE(m_isCurrentStack, true); - - QCOMPARE(stack.isActive(), false); - QCOMPARE(stack.isCurrentStack(), false); -} - -/* - \req QTOPIA-78 - - \groups -*/ -void tst_QAlternateStack::switching() -{ - if (!QAlternateStack::isAvailable()) { - QSKIP("QAlternateStack is not available on this platform.", SkipAll); - } - - QAlternateStack stack; - - QCOMPARE(stack.isActive(), false); - QCOMPARE(stack.isCurrentStack(), false); - - QVariantList list; - list.append( qVariantFromValue((QObject*)this) ); - - // Set it up so the alternate stack calls switchFrom() several times. - const int switchCount = 5; - m_shouldSwitchFrom = switchCount; - - stack.start(tst_QAlternateStack::stack_entry, list); - - for (int i = switchCount; i > 0; --i) { - // Check that our private members were set to the expected values. - QCOMPARE(m_stack, &stack); - QCOMPARE(m_data, qVariantFromValue(list)); - QCOMPARE(m_isActive, true); - QCOMPARE(m_isCurrentStack, true); - - QCOMPARE(m_shouldSwitchFrom, i); - - // Still active, since we switched using switchFrom(). - QCOMPARE(stack.isActive(), true); - QCOMPARE(stack.isCurrentStack(), false); - - // Switch to the stack... - stack.switchTo(); - } - - // No longer active. - QCOMPARE(m_shouldSwitchFrom, 0); - QCOMPARE(stack.isActive(), false); - QCOMPARE(stack.isCurrentStack(), false); -} - -char* addressof_dummy; -int got_signal; - -void test_sighandler(int signum) -{ - got_signal = signum; - - int dummy = 1; - addressof_dummy = (char*)&dummy; -} - -/* - \req QTOPIA-78 - - \groups - - Tests that sigaltstack() actually works on the target platform. - - On some platforms, like the Greenphone, sigaltstack seems to be broken - and always causes a segfault. When porting QtUitest to a new platform, - run this testfunction to make sure QAlternateStack will work properly. -*/ -void tst_QAlternateStack::sigaltstack() -{ -#ifdef Q_OS_UNIX - // isAvailable() returns false on platforms where sigaltstack is known - // to be broken. - if (!QAlternateStack::isAvailable()) { - QSKIP("QAlternateStack is not available on this platform.", SkipAll); - } - QByteArray buffer; - buffer.resize(SIGSTKSZ); - - stack_t stack; - stack.ss_sp = (qalternatestack_stackbuf() ? qalternatestack_stackbuf() : buffer.data()); - stack.ss_size = SIGSTKSZ; - stack.ss_flags = 0; - - QVERIFY( 0 == ::sigaltstack(&stack, 0) ); - - stack_t newstack; - QVERIFY( 0 == ::sigaltstack(0, &newstack) ); - QVERIFY(stack.ss_sp == newstack.ss_sp); - QVERIFY(stack.ss_size == newstack.ss_size); - QVERIFY(stack.ss_flags == newstack.ss_flags); - - struct sigaction action; - action.sa_handler = test_sighandler; - action.sa_flags = SA_ONSTACK; - sigemptyset(&action.sa_mask); - - QVERIFY2( 0 == sigaction(SIGUSR2, &action, 0), strerror(errno) ); - - struct sigaction newaction; - QVERIFY2( 0 == sigaction(SIGUSR2,0,&newaction), strerror(errno) ); - QVERIFY(newaction.sa_handler == action.sa_handler); - QVERIFY(newaction.sa_flags & SA_ONSTACK); - - addressof_dummy = 0; - got_signal = 0; - //qLog(Autotest) << "About to raise"; - - // Greenphone crashes here. - raise(SIGUSR2); - - QCOMPARE(got_signal, SIGUSR2); - //qLog(Autotest) << "dummy:" << (void*)addressof_dummy << "stack:" << stack.ss_sp; - QVERIFY( (addressof_dummy > (char*)stack.ss_sp) && (addressof_dummy < (char*)stack.ss_sp + stack.ss_size) ); -#else - QSKIP("Test not valid on this platform", SkipAll); -#endif -} - -void tst_QAlternateStack::multipleInstances() -{ - if (!QAlternateStack::isAvailable()) { - QSKIP("QAlternateStack is not available on this platform.", SkipAll); - } - - QVariantList list; - list.append( qVariantFromValue((QObject*)this) ); - - QAlternateStack stack1; - QAlternateStack stack2; - QAlternateStack stack3; - QAlternateStack stack4; - - QList<QAlternateStack*> stacks; - stacks << &stack1 << &stack2 << &stack3 << &stack4; - - // Verify the usual stack functions work as expected. - foreach (QAlternateStack* stack, stacks) { - m_stack = 0; - m_isActive = false; - m_isCurrentStack = false; - QVERIFY(!stack->isActive()); - QVERIFY(!stack->isCurrentStack()); - - stack->start(stack_entry1, list); - - QCOMPARE(m_stack, stack); - QVERIFY(m_isActive); - QVERIFY(m_isCurrentStack); - QVERIFY(!stack->isActive()); - QVERIFY(!stack->isCurrentStack()); - } - - { - QList<QPair<int,QAlternateStack*> > expected; - expected - << qMakePair(1, &stack1) - << qMakePair(1, &stack2) - << qMakePair(1, &stack3) - << qMakePair(1, &stack4) - ; - QCOMPARE(m_stackEntries, expected); - m_stackEntries.clear(); - } - - // Verify the correct functions all get called as expected. - stack1.start(stack_entry1, list); - stack4.start(stack_entry4, list); - stack2.start(stack_entry2, list); - stack3.start(stack_entry3, list); - stack1.start(stack_entry1, list); - stack4.start(stack_entry4, list); - stack3.start(stack_entry3, list); - - { - QList<QPair<int,QAlternateStack*> > expected; - expected - << qMakePair(1, &stack1) - << qMakePair(4, &stack4) - << qMakePair(2, &stack2) - << qMakePair(3, &stack3) - << qMakePair(1, &stack1) - << qMakePair(4, &stack4) - << qMakePair(3, &stack3) - ; - - QCOMPARE(m_stackEntries, expected); - } -} - -void tst_QAlternateStack::init() -{ - m_shouldSwitchFrom = 0; - m_stack = 0; - m_data = QVariant(); - m_isActive = false; - m_isCurrentStack = false; -} - -#include "tst_qalternatestack.moc" diff --git a/tests/qtuitest/tst_qalternatestack/tst_qalternatestack.pro b/tests/qtuitest/tst_qalternatestack/tst_qalternatestack.pro deleted file mode 100644 index ef73695..0000000 --- a/tests/qtuitest/tst_qalternatestack/tst_qalternatestack.pro +++ /dev/null @@ -1,19 +0,0 @@ -TEMPLATE=app -CONFIG+=unittest -QT = core -TARGET=tst_qalternatestack -CONFIG += qtestlib - -CONFIG-=debug_and_release_target - -SOURCES+= \ - tst_qalternatestack.cpp - -include($$SRCROOT/libqtuitest/libqtuitest.pri) - - -target.path += \ - /usr/local/bin - -INSTALLS += \ - target
\ No newline at end of file diff --git a/tests/qtuitest/tst_qelapsedtimer/tst_qelapsedtimer.cpp b/tests/qtuitest/tst_qelapsedtimer/tst_qelapsedtimer.cpp deleted file mode 100644 index feb2b56..0000000 --- a/tests/qtuitest/tst_qelapsedtimer/tst_qelapsedtimer.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of QtUiTest. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QTest> -#include <QObject> -#include <qtuitestelapsedtimer_p.h> - -//TESTED_COMPONENT=QA: Testing Framework (18707) - -class tst_QElapsedTimer : public QObject -{ - Q_OBJECT - -private slots: - void elapsed(); -}; - -QTEST_MAIN(tst_QElapsedTimer) - -/* - \req QTOPIA-78 - - \groups -*/ -void tst_QElapsedTimer::elapsed() -{ - QtUiTestElapsedTimer et; - et.start(); - - // Allow a lot of latency so the test doesn't break when the - // machine is under extreme load. - QVERIFY(et.elapsed() <= 1000); - - QTest::qWait(5000); - - QVERIFY(et.elapsed() >= 5000); - QVERIFY(et.elapsed() <= 30000); -} - -#include "tst_qelapsedtimer.moc" diff --git a/tests/qtuitest/tst_qelapsedtimer/tst_qelapsedtimer.pro b/tests/qtuitest/tst_qelapsedtimer/tst_qelapsedtimer.pro deleted file mode 100644 index a0754d7..0000000 --- a/tests/qtuitest/tst_qelapsedtimer/tst_qelapsedtimer.pro +++ /dev/null @@ -1,21 +0,0 @@ -TEMPLATE=app -CONFIG+=unittest -QT = core -CONFIG+=qtestlib - -TARGET=tst_qelapsedtimer - -CONFIG-=debug_and_release_target - -SOURCES+= \ - tst_qelapsedtimer.cpp - -include($$SRCROOT/libqtuitest/libqtuitest.pri) - - - -target.path += \ - /usr/local/bin - -INSTALLS += \ - target
\ No newline at end of file diff --git a/tests/qtuitest/tst_qinputgenerator/nativeevent.h b/tests/qtuitest/tst_qinputgenerator/nativeevent.h deleted file mode 100644 index f3b95ef..0000000 --- a/tests/qtuitest/tst_qinputgenerator/nativeevent.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef NATIVEEVENT_H -#define NATIVEEVENT_H - -#include <QList> -#include <QPair> -#include <QString> - -struct NativeEvent -{ - NativeEvent(void*); - - static bool isInteresting(void*); - - QString type; - QList<QPair<QString,QString> > things; -}; - -#endif - diff --git a/tests/qtuitest/tst_qinputgenerator/nativeevent_noop.cpp b/tests/qtuitest/tst_qinputgenerator/nativeevent_noop.cpp deleted file mode 100644 index 411f2d4..0000000 --- a/tests/qtuitest/tst_qinputgenerator/nativeevent_noop.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "nativeevent.h" - -NativeEvent::NativeEvent(void*) -{} - -bool NativeEvent::isInteresting(void*) -{ - static bool warned = false; - if (!warned) { - warned = true; - qWarning("Don't understand native events, only logging Qt events."); - } - - return false; -} - - diff --git a/tests/qtuitest/tst_qinputgenerator/nativeevent_x11.cpp b/tests/qtuitest/tst_qinputgenerator/nativeevent_x11.cpp deleted file mode 100644 index fc53441..0000000 --- a/tests/qtuitest/tst_qinputgenerator/nativeevent_x11.cpp +++ /dev/null @@ -1,85 +0,0 @@ -#include "nativeevent.h" - -#include <X11/Xlib.h> - -template <typename T> -QString hexstr(T const& thing) -{ return QString("0x%1").arg(thing, 8, 16, QLatin1Char('0')); } - -NativeEvent::NativeEvent(void* event) -{ - XEvent* e = static_cast<XEvent*>(event); - -#define GET_COMMON_THINGS(event) \ - things << qMakePair(QString("serial"), hexstr(event->serial)); \ - things << qMakePair(QString("send_event"), QString::number(event->send_event)); \ - things << qMakePair(QString("x"), QString::number(event->x)); \ - things << qMakePair(QString("y"), QString::number(event->y)); \ - things << qMakePair(QString("x_root"), QString::number(event->x_root)); \ - things << qMakePair(QString("y_root"), QString::number(event->y_root)); \ - things << qMakePair(QString("state"), hexstr(event->state)); \ - things << qMakePair(QString("same_screen"),QString("%1").arg(event->same_screen)); - - switch (e->type) { - case KeyPress: - case KeyRelease: { - if (e->type == KeyPress) type = "XKeyPressedEvent"; - if (e->type == KeyRelease) type = "XKeyReleasedEvent"; - XKeyEvent* xe = static_cast<XKeyEvent*>(event); - things << qMakePair(QString("keycode"), hexstr(xe->keycode)); - GET_COMMON_THINGS(xe); } - break; - - case ButtonPress: - case ButtonRelease: { - if (e->type == ButtonPress) type = "XButtonPressedEvent"; - if (e->type == ButtonRelease) type = "XButtonReleasedEvent"; - XButtonEvent* xe = static_cast<XButtonEvent*>(event); - things << qMakePair(QString("button"), hexstr(xe->button)); - GET_COMMON_THINGS(xe); } - break; - - case MotionNotify: { - type = "XMotionEvent"; - XMotionEvent* xe = static_cast<XMotionEvent*>(event); - GET_COMMON_THINGS(xe); } - break; - - case EnterNotify: - case LeaveNotify: { - if (e->type == EnterNotify) type = "XEnterWindowEvent"; - if (e->type == LeaveNotify) type = "XLeaveWindowEvent"; - XCrossingEvent* xe = static_cast<XCrossingEvent*>(event); - things << qMakePair(QString("focus"), QString("%1").arg(xe->focus)); - GET_COMMON_THINGS(xe); } - break; - - default: - type = QString("XEvent(type=%1)").arg(e->type); - break; - } -} - -/* Returns true if the event is related to key or mouse inputs */ -bool NativeEvent::isInteresting(void* event) -{ - if (!event) return false; - - XEvent* e = static_cast<XEvent*>(event); - switch (e->type) { - case KeyPress: - case KeyRelease: - case ButtonPress: - case ButtonRelease: - case MotionNotify: - case EnterNotify: - case LeaveNotify: - return true; - default: - break; - } - - return false; -} - - diff --git a/tests/qtuitest/tst_qinputgenerator/tst_qinputgenerator.cpp b/tests/qtuitest/tst_qinputgenerator/tst_qinputgenerator.cpp deleted file mode 100644 index 2c7d484..0000000 --- a/tests/qtuitest/tst_qinputgenerator/tst_qinputgenerator.cpp +++ /dev/null @@ -1,756 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of QtUiTest. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QAbstractEventDispatcher> -#include <QDebug> -#include <QObject> -#include <QTest> -#include <qinputgenerator_p.h> - -#include "nativeevent.h" - -//TESTED_COMPONENT=QA: Testing Framework (18707) - -struct TestKeyEvent { - enum Type { KeyPress, KeyRelease, KeyClick }; - - TestKeyEvent(TestKeyEvent::Type _type, Qt::Key _key, Qt::KeyboardModifiers _modifiers, - bool _autorepeat) - : type(_type) - , key(_key) - , modifiers(_modifiers) - , autorepeat(_autorepeat) - {} - - TestKeyEvent::Type type; - Qt::Key key; - Qt::KeyboardModifiers modifiers; - bool autorepeat; -}; - -typedef QList<TestKeyEvent> TestKeyEventList; -Q_DECLARE_METATYPE(TestKeyEventList); - -typedef QList<QKeyEvent> QKeyEventList; -Q_DECLARE_METATYPE(QKeyEventList); - -struct TestMouseEvent { - enum Type { - MouseButtonPress, - MouseButtonRelease, - MouseButtonClick - }; - - TestMouseEvent(TestMouseEvent::Type _type, const QPoint& _pos, Qt::MouseButtons _buttons) - : type(_type) - , pos(_pos) - , buttons(_buttons) - {} - - TestMouseEvent::Type type; - QPoint pos; - Qt::MouseButtons buttons; -}; - -typedef QList<TestMouseEvent> TestMouseEventList; -Q_DECLARE_METATYPE(TestMouseEventList); - -typedef QList<QMouseEvent> QMouseEventList; -Q_DECLARE_METATYPE(QMouseEventList); - -QString toString(QKeyEvent const& e) -{ - QString out; - out += (e.type() == QEvent::KeyPress) ? "press" : "release"; - out += ", " + QString("key:0x%1").arg(e.key(),8,16,QLatin1Char('0')); - out += "," + QString("modifiers:0x%1").arg(e.modifiers(),8,16,QLatin1Char('0')); - out += "," + QString("isAutoRepeat:%1").arg(e.isAutoRepeat()); - out += "," + QString("nativeModifiers:0x%1").arg(e.nativeModifiers(),8,16,QLatin1Char('0')); - out += "," + QString("nativeScanCode:0x%1").arg(e.nativeScanCode(),8,16,QLatin1Char('0')); - out += "," + QString("nativeVirtualKey:0x%1").arg(e.nativeVirtualKey(),8,16,QLatin1Char('0')); - out += ",text:" + e.text(); - /* - Only check count if it has some text. - When doing a 'Shift' key or similar, whether or not there's a count depends on - the platform, so we'll treat it as undefined. - */ - if (!e.text().isEmpty()) - out += "," + QString("count:%1").arg(e.count()); - return out; -} - -QString toString(QKeyEventList const& l) -{ - QString out; - QString sep = " "; - for (int i = 0; i < l.count(); ++i) { - out += sep + toString(l.at(i)); - sep = "\n "; - } - return out; -} - -QString toString(QPoint const& p) -{ - return QString("(%1,%2)").arg(p.x()).arg(p.y()); -} - -QString toString(Qt::MouseButton b) -{ - switch (b) { - case Qt::NoButton: - return "0"; - case Qt::LeftButton: - return "left"; - case Qt::RightButton: - return "right"; - case Qt::MidButton: - return "mid"; - case Qt::XButton1: - return "xbutton1"; - case Qt::XButton2: - return "xbutton2"; - default: - return QString("0x%1").arg(b, 8, 16, QLatin1Char('0')); - } -} - -QString toString(Qt::MouseButtons b) -{ - QString out; - if (!b || (b & (~Qt::MouseButtonMask))) { - out = QString("0x%1").arg(b,8,16,QLatin1Char('0')); - } - else { - static const Qt::MouseButton AllButtons[] = { - Qt::LeftButton, - Qt::RightButton, - Qt::MidButton, - Qt::XButton1, - Qt::XButton2 - }; - QString sep; - for (unsigned int i = 0; i < sizeof(AllButtons)/sizeof(AllButtons[0]); ++i) { - if (b & AllButtons[i]) { - out += sep + toString(Qt::MouseButton((int)(b & AllButtons[i]))); - sep = "|"; - } - } - } - return out; -} - -QString toString(QMouseEvent const& e) -{ - QString out; - switch (e.type()) { - case QEvent::MouseButtonPress: - out += "press"; - break; - case QEvent::MouseButtonRelease: - out += "release"; - break; - case QEvent::MouseButtonDblClick: - out += "doubleclick"; - break; - case QEvent::MouseMove: - out += "move"; - break; - default: - out += "unknown_type"; - } - out += ", "+ QString("pos:%1").arg(toString(e.pos())); - out += "," + QString("globalPos:%1").arg(toString(e.globalPos())); - out += "," + QString("button:%1").arg(toString(e.button())); - out += "," + QString("buttons:%1").arg(toString(e.buttons())); - out += "," + QString("modifiers:0x%1").arg(e.modifiers(),8,16,QLatin1Char('0')); - return out; -} - -QString toString(QMouseEventList const& l) -{ - QString out; - QString sep = " "; - for (int i = 0; i < l.count(); ++i) { - out += sep + toString(l.at(i)); - sep = "\n "; - } - return out; -} - -QString toString(NativeEvent const& e) -{ - QString out; - out += e.type; - - QString sep = " "; - typedef QPair<QString,QString> StringPair; - foreach (StringPair const& p, e.things) { - out += sep + p.first + ":" + p.second; - sep = ","; - } - - return out; -} - -namespace QTest { -template<> -inline bool qCompare(QKeyEvent const &e1, QKeyEvent const &e2, - const char* actual, const char* expected, const char* file, int line) -{ - return qCompare(toString(e1), toString(e2), actual, expected, file, line); -} -template<> -inline bool qCompare(QMouseEvent const &e1, QMouseEvent const &e2, - const char* actual, const char* expected, const char* file, int line) -{ - return qCompare(toString(e1), toString(e2), actual, expected, file, line); -} -} - - -class tst_QInputGenerator : public QObject -{ - Q_OBJECT - -public: - tst_QInputGenerator(); - void eventTest(); - -private slots: - void keyEvent(); - void keyEvent_data(); - void mouseEvent(); - void mouseEvent_data(); - void initTestCase(); - void init(); - -private: - template <typename T> - bool waitForCount(QList<T> const* list, int howmany, int timeout = 5000); - bool eventFilter(QObject*, QEvent*); - template <typename T1, typename T2> - static void dumpEvents(QList<T1> const& actual, QList<T2> const& expected); - static bool nativeEventFilter(void* event); - -private: - QList<QKeyEvent> m_keyEvents; - QList<QMouseEvent> m_mouseEvents; - QEventLoop* m_eventTestLoop; - QTime m_eventTestTime; - static tst_QInputGenerator* s_eventTestInstance; -}; -tst_QInputGenerator* tst_QInputGenerator::s_eventTestInstance = 0; - -tst_QInputGenerator::tst_QInputGenerator() - : QObject() - , m_keyEvents() - , m_mouseEvents() - , m_eventTestLoop(0) - , m_eventTestTime() -{ -} - -void tst_QInputGenerator::initTestCase() -{ - qApp->installEventFilter(this); -} - -void tst_QInputGenerator::init() -{ - m_keyEvents.clear(); - m_mouseEvents.clear(); -} - -void tst_QInputGenerator::keyEvent() -{ - QFETCH(TestKeyEventList, testEvents); - QFETCH(QKeyEventList, qtEvents); - - QWidget w; - w.setFocus(); - w.setFixedSize(1024, 768); - w.show(); - - QInputGenerator input; - - /* Simulate all test events. */ - while (testEvents.count()) { - TestKeyEvent next = testEvents.takeFirst(); - - if (next.type == TestKeyEvent::KeyPress) { - input.keyPress(next.key, next.modifiers, next.autorepeat); - } - else if (next.type == TestKeyEvent::KeyRelease) { - input.keyRelease(next.key, next.modifiers); - } - else if (next.type == TestKeyEvent::KeyClick) { - input.keyClick(next.key, next.modifiers); - } - } - - /* Wait until we get the expected amount of qt events. */ - if (m_keyEvents.count() < qtEvents.count()) { - bool waited = waitForCount(&m_keyEvents, qtEvents.count()); - if (!waited) { - dumpEvents(m_keyEvents, qtEvents); - } - QVERIFY2(waited, qPrintable(QString("Expected %1 QKeyEvent(s) but got %2").arg(qtEvents.count()).arg(m_keyEvents.count()))); - } - - /* Compare actual qt events with expected. */ - for (int i = 0; i < qtEvents.count(); ++i) { - const QKeyEvent& actual = m_keyEvents[i]; - const QKeyEvent& expected = qtEvents[i]; - if (!QTest::qCompare(actual, expected, "actual", "expected", __FILE__, __LINE__)) { - dumpEvents(m_keyEvents, qtEvents); - return; - } - } -} - -void tst_QInputGenerator::keyEvent_data() -{ - QTest::addColumn<TestKeyEventList>("testEvents"); - QTest::addColumn<QKeyEventList> ("qtEvents"); - - /* Make event definition a little less verbose... */ -#define TE(Type,K,Mod,Repeat) TestKeyEvent(TestKeyEvent::Key##Type, Qt::Key_##K, Mod, Repeat) -#define QE(Type,K,Mod,Text,Repeat,Count) QKeyEvent(QEvent::Key##Type, Qt::Key_##K, Mod, QLatin1String(Text), Repeat, Count) - QTest::newRow("a (press only)") - << (TestKeyEventList() << TE(Press, A, 0, false)) - << (QKeyEventList() << QE(Press, A, 0, "a", false, 1)) - ; - QTest::newRow("a (release only)") - << (TestKeyEventList() << TE(Release, A, 0, false)) - << (QKeyEventList() << QE(Release, A, 0, "a", false, 1)) - ; - QTest::newRow("autorepeat b") - << (TestKeyEventList() - << TE(Press, B, 0, false) - /* - << TE(Press, B, 0, true) - << TE(Press, B, 0, true) - << TE(Press, B, 0, true) - << TE(Press, B, 0, true) - << TE(Press, B, 0, true) - */ - << TE(Release, B, 0, false) - - ) - << (QKeyEventList() - << QE(Press, B, 0, "b", false, 1) - /* - << QE(Press, B, 0, "b", true, 1) - << QE(Press, B, 0, "b", true, 1) - << QE(Press, B, 0, "b", true, 1) - << QE(Press, B, 0, "b", true, 1) - << QE(Press, B, 0, "b", true, 1) - */ - << QE(Release, B, 0, "b", false, 1) - ) - ; - QTest::newRow("dog") - << (TestKeyEventList() - << TE(Click, D, 0, false) - << TE(Click, O, 0, false) - << TE(Click, G, 0, false) - ) - << (QKeyEventList() - << QE(Press, D, 0, "d", false, 1) << QE(Release, D, 0, "d", false, 1) - << QE(Press, O, 0, "o", false, 1) << QE(Release, O, 0, "o", false, 1) - << QE(Press, G, 0, "g", false, 1) << QE(Release, G, 0, "g", false, 1) - ) - ; - QTest::newRow("mIXEd caSE") - << (TestKeyEventList() - << TE(Click, M, 0, false) - << TE(Click, I, Qt::ShiftModifier, false) - << TE(Click, X, Qt::ShiftModifier, false) - << TE(Click, E, Qt::ShiftModifier, false) - << TE(Click, D, 0, false) - << TE(Click, Space, 0, false) - << TE(Click, C, 0, false) - << TE(Click, A, 0, false) - << TE(Click, S, Qt::ShiftModifier, false) - << TE(Click, E, Qt::ShiftModifier, false) - ) - << (QKeyEventList() - << QE(Press, M, 0, "m", false, 1) << QE(Release, M, 0, "m", false, 1) - << QE(Press, Shift, 0, "", false, 0) - << QE(Press, I, Qt::ShiftModifier, "I", false, 1) << QE(Release, I, Qt::ShiftModifier, "I", false, 1) - << QE(Press, X, Qt::ShiftModifier, "X", false, 1) << QE(Release, X, Qt::ShiftModifier, "X", false, 1) - << QE(Press, E, Qt::ShiftModifier, "E", false, 1) << QE(Release, E, Qt::ShiftModifier, "E", false, 1) - << QE(Release, Shift, Qt::ShiftModifier, "", false, 0) - << QE(Press, D, 0, "d", false, 1) << QE(Release, D, 0, "d", false, 1) - << QE(Press, Space, 0, " ", false, 1) << QE(Release, Space, 0, " ", false, 1) - << QE(Press, C, 0, "c", false, 1) << QE(Release, C, 0, "c", false, 1) - << QE(Press, A, 0, "a", false, 1) << QE(Release, A, 0, "a", false, 1) - << QE(Press, Shift, 0, "", false, 0) - << QE(Press, S, Qt::ShiftModifier, "S", false, 1) << QE(Release, S, Qt::ShiftModifier, "S", false, 1) - << QE(Press, E, Qt::ShiftModifier, "E", false, 1) << QE(Release, E, Qt::ShiftModifier, "E", false, 1) - ) - ; -#undef TE -#undef QE -} - -void tst_QInputGenerator::mouseEvent() -{ - QFETCH(TestMouseEventList, testEvents); - QFETCH(QMouseEventList, qtEvents); - - QWidget w1(0, Qt::FramelessWindowHint); - w1.setFocus(); - w1.setGeometry(0, 0, 100, 100); - w1.setMouseTracking(false); - w1.show(); - - QWidget w2(0, Qt::FramelessWindowHint); - w2.setFocus(); - w2.setGeometry(100, 0, 100, 100); - w2.setMouseTracking(false); - w2.show(); - - QWidget w3(0, Qt::FramelessWindowHint); - w3.setFocus(); - w3.setGeometry(0, 100, 100, 100); - w3.setMouseTracking(false); - w3.show(); - - QWidget w4(0, Qt::FramelessWindowHint); - w4.setFocus(); - w4.setGeometry(100, 100, 100, 100); - w4.setMouseTracking(false); - w4.show(); - - /* Make sure we go slow enough to avoid accidental double clicks */ - int dblclick = qApp->doubleClickInterval(); - QTest::qWait(dblclick); - - QInputGenerator input; - - /* Simulate all test events. */ - while (testEvents.count()) { - TestMouseEvent next = testEvents.takeFirst(); - - if (next.type == TestMouseEvent::MouseButtonPress) { - input.mousePress(next.pos, next.buttons); - } - else if (next.type == TestMouseEvent::MouseButtonRelease) { - input.mouseRelease(next.pos, next.buttons); - } - else if (next.type == TestMouseEvent::MouseButtonClick) { - input.mouseClick(next.pos, next.buttons); - } - } - - /* Wait until we get the expected amount of qt events. */ - if (m_mouseEvents.count() < qtEvents.count()) { - bool waited = waitForCount(&m_mouseEvents, qtEvents.count()); - if (!waited) { - dumpEvents(m_mouseEvents, qtEvents); - } - QVERIFY2(waited, qPrintable(QString("Expected %1 QMouseEvent(s) but got %2").arg(qtEvents.count()).arg(m_mouseEvents.count()))); - } - - /* Compare actual qt events with expected. */ - for (int i = 0; i < qtEvents.count(); ++i) { - const QMouseEvent& actual = m_mouseEvents[i]; - const QMouseEvent& expected = qtEvents[i]; - if (!QTest::qCompare(actual, expected, "actual", "expected", __FILE__, __LINE__)) { - dumpEvents(m_mouseEvents, qtEvents); - return; - } - } -} - -void tst_QInputGenerator::mouseEvent_data() -{ - QTest::addColumn<TestMouseEventList>("testEvents"); - QTest::addColumn<QMouseEventList> ("qtEvents"); - - /* - To test mapping of global to local positions, 4 widgets are laid out in a 2x2 grid. - Each widget is 100x100 in size. The widgets are arranged so they sit exactly in the - top left 200x200 of the screen. The widgets are asked to be frameless. - */ - - /* Make event definition a little less verbose... */ -#define TE(Type,Pos,Buttons) TestMouseEvent(TestMouseEvent::Mouse##Type, Pos, Buttons) -#define QE(Type,Pos,GlobalPos,Button,Buttons,Mod) QMouseEvent(QEvent::Mouse##Type, Pos, GlobalPos,Qt::MouseButton(Button),Buttons,Mod) - QTest::newRow("single left press, tl") - << (TestMouseEventList() << TE(ButtonPress, QPoint(50,50), Qt::LeftButton)) - << (QMouseEventList() << QE(ButtonPress, QPoint(50,50), QPoint(50,50), Qt::LeftButton, Qt::LeftButton, 0)) - ; - QTest::newRow("single left press, tr") - << (TestMouseEventList() << TE(ButtonPress, QPoint(150,50), Qt::LeftButton)) - << (QMouseEventList() << QE(ButtonPress, QPoint(50,50), QPoint(150,50), Qt::LeftButton, Qt::LeftButton, 0)) - ; - QTest::newRow("single left press, bl") - << (TestMouseEventList() << TE(ButtonPress, QPoint(25,150), Qt::LeftButton)) - << (QMouseEventList() << QE(ButtonPress, QPoint(25,50), QPoint(25,150), Qt::LeftButton, Qt::LeftButton, 0)) - ; - QTest::newRow("single left press, br") - << (TestMouseEventList() << TE(ButtonPress, QPoint(150,125),Qt::LeftButton)) - << (QMouseEventList() << QE(ButtonPress, QPoint(50,25), QPoint(150,125),Qt::LeftButton, Qt::LeftButton, 0)) - ; - - QTest::newRow("single right click, tl") - << (TestMouseEventList() << TE(ButtonClick, QPoint(50,50), Qt::RightButton)) - << (QMouseEventList() - << QE(ButtonPress, QPoint(50,50), QPoint(50,50), Qt::RightButton, Qt::RightButton, 0) - << QE(ButtonRelease, QPoint(50,50), QPoint(50,50), Qt::RightButton, 0, 0) - ) - ; - QTest::newRow("single right click, tr") - << (TestMouseEventList() << TE(ButtonClick, QPoint(150,50), Qt::RightButton)) - << (QMouseEventList() - << QE(ButtonPress, QPoint(50,50), QPoint(150,50), Qt::RightButton, Qt::RightButton, 0) - << QE(ButtonRelease, QPoint(50,50), QPoint(150,50), Qt::RightButton, 0, 0) - ) - ; - QTest::newRow("single right click, bl") - << (TestMouseEventList() << TE(ButtonClick, QPoint(25,150), Qt::RightButton)) - << (QMouseEventList() - << QE(ButtonPress, QPoint(25,50), QPoint(25,150), Qt::RightButton, Qt::RightButton, 0) - << QE(ButtonRelease, QPoint(25,50), QPoint(25,150), Qt::RightButton, 0, 0) - ) - ; - QTest::newRow("single right click, br") - << (TestMouseEventList() << TE(ButtonClick, QPoint(150,125),Qt::RightButton)) - << (QMouseEventList() - << QE(ButtonPress, QPoint(50,25), QPoint(150,125), Qt::RightButton, Qt::RightButton, 0) - << QE(ButtonRelease, QPoint(50,25), QPoint(150,125), Qt::RightButton, 0, 0) - ) - ; - - QTest::newRow("double middle click") - << (TestMouseEventList() - << TE(ButtonClick, QPoint(20,30),Qt::MidButton) - << TE(ButtonClick, QPoint(20,30),Qt::MidButton) - ) - << (QMouseEventList() - << QE(ButtonPress, QPoint(20,30), QPoint(20,30), Qt::MidButton, Qt::MidButton, 0) - << QE(ButtonRelease, QPoint(20,30), QPoint(20,30), Qt::MidButton, 0, 0) - << QE(ButtonDblClick, QPoint(20,30), QPoint(20,30), Qt::MidButton, Qt::MidButton, 0) - << QE(ButtonRelease, QPoint(20,30), QPoint(20,30), Qt::MidButton, 0, 0) - ) - ; - - QTest::newRow("middle drag") - << (TestMouseEventList() - << TE(ButtonPress, QPoint(20,30),Qt::MidButton) - << TE(ButtonPress, QPoint(20,31),Qt::MidButton) - << TE(ButtonPress, QPoint(21,32),Qt::MidButton) - << TE(ButtonPress, QPoint(21,33),Qt::MidButton) - << TE(ButtonPress, QPoint(22,34),Qt::MidButton) - << TE(ButtonPress, QPoint(22,35),Qt::MidButton) - << TE(ButtonPress, QPoint(23,36),Qt::MidButton) - << TE(ButtonPress, QPoint(23,37),Qt::MidButton) - << TE(ButtonPress, QPoint(24,38),Qt::MidButton) - << TE(ButtonPress, QPoint(24,39),Qt::MidButton) - << TE(ButtonRelease, QPoint(25,40),Qt::MidButton) - ) - << (QMouseEventList() - << QE(ButtonPress, QPoint(20,30), QPoint(20,30), Qt::MidButton, Qt::MidButton, 0) - /* Note, exactly how many move events we expect depends on platform... */ - << QE(Move, QPoint(25,40), QPoint(25,40), 0, Qt::MidButton, 0) - << QE(ButtonRelease, QPoint(25,40), QPoint(25,40), Qt::MidButton, 0, 0) - ) - ; - - QTest::newRow("multiple buttons with shaky hands") - << (TestMouseEventList() - << TE(ButtonPress, QPoint(110,120),Qt::MidButton) - << TE(ButtonPress, QPoint(110,125),Qt::RightButton) - << TE(ButtonPress, QPoint(105,105),Qt::LeftButton) - << TE(ButtonRelease, QPoint(105,107),Qt::RightButton) - << TE(ButtonRelease, QPoint(110,119),Qt::MidButton) - << TE(ButtonPress, QPoint(110,112),Qt::RightButton) - << TE(ButtonRelease, QPoint(103,102),Qt::LeftButton) - << TE(ButtonRelease, QPoint(111,103),Qt::RightButton) - ) - << (QMouseEventList() - << QE(ButtonPress, QPoint(10,20),QPoint(110,120), Qt::MidButton, Qt::MidButton, 0) - - << QE(Move, QPoint(10,25),QPoint(110,125), 0, Qt::MidButton, 0) - << QE(ButtonPress, QPoint(10,25),QPoint(110,125), Qt::RightButton, Qt::MidButton|Qt::RightButton, 0) - - << QE(Move, QPoint(5,5), QPoint(105,105), 0, Qt::MidButton|Qt::RightButton, 0) - << QE(ButtonPress, QPoint(5,5), QPoint(105,105), Qt::LeftButton, Qt::MidButton|Qt::RightButton|Qt::LeftButton, 0) - - << QE(Move, QPoint(5,7), QPoint(105,107), 0, Qt::MidButton|Qt::RightButton|Qt::LeftButton, 0) - << QE(ButtonRelease, QPoint(5,7), QPoint(105,107), Qt::RightButton, Qt::MidButton|Qt::LeftButton, 0) - - << QE(Move, QPoint(10,19),QPoint(110,119), 0, Qt::MidButton|Qt::LeftButton, 0) - << QE(ButtonRelease, QPoint(10,19),QPoint(110,119), Qt::MidButton, Qt::LeftButton, 0) - - << QE(Move, QPoint(10,12),QPoint(110,112), 0, Qt::LeftButton, 0) - << QE(ButtonPress, QPoint(10,12),QPoint(110,112), Qt::RightButton, Qt::LeftButton|Qt::RightButton, 0) - - << QE(Move, QPoint(3,2), QPoint(103,102), 0, Qt::LeftButton|Qt::RightButton, 0) - << QE(ButtonRelease, QPoint(3,2), QPoint(103,102), Qt::LeftButton, Qt::RightButton, 0) - - << QE(Move, QPoint(11,3), QPoint(111,103), 0, Qt::RightButton, 0) - << QE(ButtonRelease, QPoint(11,3), QPoint(111,103), Qt::RightButton, 0, 0) - ) - ; -#undef TE -#undef QE -} - -bool tst_QInputGenerator::nativeEventFilter(void* event) -{ - tst_QInputGenerator* that = tst_QInputGenerator::s_eventTestInstance; - if (!that || !that->m_eventTestLoop) return false; - - if (NativeEvent::isInteresting(event)) { - qDebug() << that->m_eventTestTime.elapsed() << qPrintable(toString(NativeEvent(event))); - that->m_eventTestLoop->quit(); - } - - return false; -} - -void tst_QInputGenerator::eventTest() -{ - qApp->installEventFilter(this); - QAbstractEventDispatcher* dispatch = QAbstractEventDispatcher::instance(); - dispatch->setEventFilter(tst_QInputGenerator::nativeEventFilter); - tst_QInputGenerator::s_eventTestInstance = this; - - m_eventTestTime.start(); - - QWidget w; - w.setFixedSize(800,600); - w.show(); - - QEventLoop loop; - m_eventTestLoop = &loop; - - qDebug() << "Running event test; use keyboard/mouse to interact with displayed widget."; - while (w.isVisible()) { - loop.exec(); - } - m_eventTestLoop = 0; -} - -bool tst_QInputGenerator::eventFilter(QObject* o, QEvent* e) -{ - QEvent::Type type = e->type(); - if (type == QEvent::KeyPress || type == QEvent::KeyRelease) { - if (m_eventTestLoop) { - qDebug() << m_eventTestTime.elapsed() << "key" << qPrintable(toString(*static_cast<QKeyEvent*>(e))); - m_eventTestLoop->quit(); - goto end; - } - m_keyEvents << *static_cast<QKeyEvent*>(e); - } - else if (type >= QEvent::MouseButtonPress && type <= QEvent::MouseMove) { - /* - Even when mouse tracking is turned off, Qt still generates events for mouse - moves on some platforms. Discard them, since it's unpredictable how many - there might be. - */ - QMouseEvent* me = static_cast<QMouseEvent*>(e); - if (type == QEvent::MouseMove && o->isWidgetType() - && !static_cast<QWidget*>(o)->hasMouseTracking() && !me->buttons()) { - } - else { - if (m_eventTestLoop) { - qDebug() << m_eventTestTime.elapsed() << "mouse" << qPrintable(toString(*me)); - m_eventTestLoop->quit(); - goto end; - } - m_mouseEvents << *me; - } - } - -end: - return QObject::eventFilter(o,e); -} - -template <typename T> -bool tst_QInputGenerator::waitForCount(QList<T> const* list, int howmany, int timeout) -{ - while (list->count() < howmany && timeout > 0) { - QTest::qWait(10); - timeout -= 10; - } - return (list->count() >= howmany); -} - -template <typename T1, typename T2> -void tst_QInputGenerator::dumpEvents(QList<T1> const& actual, QList<T2> const& expected) -{ - qWarning("Events leading up to failure:"); - qWarning("Actual:"); - for (int i = 0; i < actual.count(); ++i) { - qWarning(qPrintable(QString(" %1").arg(toString(actual.at(i))))); - } - qWarning("Expected:"); - for (int i = 0; i < expected.count(); ++i) { - qWarning(qPrintable(QString(" %1").arg(toString(expected.at(i))))); - } -} - -#include "tst_qinputgenerator.moc" - -int main(int argc, char** argv) -{ - QApplication app(argc, argv); - - bool eventTest = false; - for (int i = 0; i < argc; ++i) { - if (QByteArray(argv[i]) == "eventTest") { - eventTest = true; - } - } - - tst_QInputGenerator test; - if (eventTest) { - test.eventTest(); - return 0; - } - return QTest::qExec(&test, argc, argv); -} - diff --git a/tests/qtuitest/tst_qinputgenerator/tst_qinputgenerator.pro b/tests/qtuitest/tst_qinputgenerator/tst_qinputgenerator.pro deleted file mode 100644 index d8ab687..0000000 --- a/tests/qtuitest/tst_qinputgenerator/tst_qinputgenerator.pro +++ /dev/null @@ -1,27 +0,0 @@ -TEMPLATE=app -CONFIG+=unittest -QT = core gui -TARGET=tst_qinputgenerator -CONFIG+=qtestlib - -CONFIG-=debug_and_release_target - -SOURCES+= \ - tst_qinputgenerator.cpp - -unix:!mac:!embedded:!symbian { - SOURCES+=nativeevent_x11.cpp -} -else { - SOURCES+=nativeevent_noop.cpp -} - -include($$SRCROOT/libqtuitest/libqtuitest.pri) - - - -target.path += \ - /usr/local/bin - -INSTALLS += \ - target
\ No newline at end of file diff --git a/tests/qtuitest/tst_qtestprotocol/testprotocol.cpp b/tests/qtuitest/tst_qtestprotocol/testprotocol.cpp deleted file mode 100644 index a597d08..0000000 --- a/tests/qtuitest/tst_qtestprotocol/testprotocol.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of QtUiTest. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "testprotocol.h" - -QList<QTestMessage>& TestProtocol::messages() -{ return m_messages; } - -void TestProtocol::processMessage(QTestMessage* message) -{ m_messages << *message; } - diff --git a/tests/qtuitest/tst_qtestprotocol/testprotocol.h b/tests/qtuitest/tst_qtestprotocol/testprotocol.h deleted file mode 100644 index ed926c6..0000000 --- a/tests/qtuitest/tst_qtestprotocol/testprotocol.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of QtUiTest. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef TESTPROTOCOL_H -#define TESTPROTOCOL_H - -#include "qtestprotocol_p.h" - -/* - Test protocol which simply stores received messages in a list. -*/ -class TestProtocol : public QTestProtocol -{ - Q_OBJECT - -public: - QList<QTestMessage>& messages(); - -protected: - void processMessage(QTestMessage*); - -private: - QList<QTestMessage> m_messages; -}; - -#endif - diff --git a/tests/qtuitest/tst_qtestprotocol/testprotocolserver.cpp b/tests/qtuitest/tst_qtestprotocol/testprotocolserver.cpp deleted file mode 100644 index 9ad77cc..0000000 --- a/tests/qtuitest/tst_qtestprotocol/testprotocolserver.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of QtUiTest. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "testprotocolserver.h" - -TestProtocolServer::TestProtocolServer(QObject* parent) - : QTcpServer(parent) -{} - -TestProtocolServer::~TestProtocolServer() -{} - -TestProtocol* TestProtocolServer::nextPendingConnection() -{ - if (!m_pendingConnections.count()) - return 0; - return m_pendingConnections.takeFirst(); -} - -bool TestProtocolServer::hasPendingConnections() const -{ return m_pendingConnections.count(); } - -void TestProtocolServer::incomingConnection(int socket) -{ - if (m_pendingConnections.count() >= maxPendingConnections()) - return; - - TestProtocol* ret = new TestProtocol; - ret->setParent(this); - ret->setSocket(socket); - m_pendingConnections << ret; -} - diff --git a/tests/qtuitest/tst_qtestprotocol/testprotocolserver.h b/tests/qtuitest/tst_qtestprotocol/testprotocolserver.h deleted file mode 100644 index b6c2e39..0000000 --- a/tests/qtuitest/tst_qtestprotocol/testprotocolserver.h +++ /dev/null @@ -1,72 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of QtUiTest. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef TESTPROTOCOLSERVER_H -#define TESTPROTOCOLSERVER_H - -#include <QTcpServer> -#include <QList> - -#include "testprotocol.h" - -/* - TCP server which creates QTestProtocols instead of QTcpSockets. -*/ -class TestProtocolServer : public QTcpServer -{ - Q_OBJECT - -public: - TestProtocolServer(QObject* =0); - virtual ~TestProtocolServer(); - - virtual TestProtocol* nextPendingConnection(); - virtual bool hasPendingConnections() const; - -protected: - virtual void incomingConnection(int); - -private: - QList<TestProtocol*> m_pendingConnections; -}; - -#endif - diff --git a/tests/qtuitest/tst_qtestprotocol/tst_qtestprotocol.cpp b/tests/qtuitest/tst_qtestprotocol/tst_qtestprotocol.cpp deleted file mode 100644 index cba330e..0000000 --- a/tests/qtuitest/tst_qtestprotocol/tst_qtestprotocol.cpp +++ /dev/null @@ -1,192 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of QtUiTest. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QTest> - -// for m_map -#define protected public -# include "qtestprotocol_p.h" -#undef protected - -#include "testprotocol.h" -#include "testprotocolserver.h" - -//TESTED_COMPONENT=QA: Testing Framework (18707) - -class tst_QTestProtocol : public QObject -{ - Q_OBJECT - -private slots: - void postMessage(); - void postMessage_data(); -}; - -QTEST_MAIN(tst_QTestProtocol) - -/* - Comparison for QTestMessage. -*/ -namespace QTest { -template<> -inline bool qCompare - (QTestMessage const &m1, QTestMessage const &m2, - const char* actual, const char* expected, const char* file, int line) -{ -#define COMPARE_MEMBER(a,b,args...) \ - qCompare(a.args, b.args, \ - qPrintable(QString("%1.%2").arg(actual).arg(#args)), \ - qPrintable(QString("%1.%2").arg(expected).arg(#args)), \ - file, line) - - return COMPARE_MEMBER(m1,m2,event()) - && COMPARE_MEMBER(m1,m2,toString()) - && COMPARE_MEMBER(m1,m2,m_map); - -#undef COMPARE_MEMBER -} -} - -/* - \req QTOPIA-78 - - \groups - Simply tests that messages can be sent correctly without becoming corrupt. -*/ -void tst_QTestProtocol::postMessage_data() -{ - QTest::addColumn<QTestMessage>("message"); - - QTest::newRow("empty") - << QTestMessage(); - - QTest::newRow("simple, no map") - << QTestMessage("foo"); - - { - QVariantMap vm; - vm["foo"] = 1; - vm["bar"] = "Hello."; - - QTest::newRow("simple, small map") - << QTestMessage("foobar", vm); - } - - { - QByteArray ba; - while (ba.size() < 1024*1024*10) - ba.append("zoop"); - - QVariantMap vm; - vm["aaa"] = "A"; - vm["bbb"] = ba; - vm["ccc"] = "C"; - - QTest::newRow("10 Mb") - << QTestMessage("big_test", vm); - } -} - -// Will try to wait for the condition while allowing event processing -#define QTRY_COMPARE(__expr, __expected) \ - do { \ - const int __step = 50; \ - const int __timeout = 5000; \ - if ((__expr) != (__expected)) { \ - QTest::qWait(0); \ - } \ - for (int __i = 0; __i < __timeout && ((__expr) != (__expected)); __i+=__step) { \ - QTest::qWait(__step); \ - } \ - QCOMPARE(__expr, __expected); \ - } while(0) - -void tst_QTestProtocol::postMessage() -{ - // Start a server to listen for connections. - TestProtocolServer server; - QVERIFY(server.listen()); - - // Create a test protocol which connects to the server. - TestProtocol* clientP = new TestProtocol; - clientP->setParent(&server); - clientP->connect( "127.0.0.1", server.serverPort() ); - - QVERIFY( clientP->waitForConnected(1000) ); - QVERIFY( server.hasPendingConnections() ); - - // Get the protocol which should have been created on the server side - TestProtocol* serverP = server.nextPendingConnection(); - QVERIFY( serverP ); - // Should be no further connections - QVERIFY( !server.hasPendingConnections() ); - - // OK, now we have two peers. They should both be connected by now. - QVERIFY( clientP->isConnected() ); - QVERIFY( serverP->isConnected() ); - - QList<QTestMessage>& clientMessages = clientP->messages(); - QList<QTestMessage>& serverMessages = serverP->messages(); - - QFETCH(QTestMessage, message); - - // Try sending the message from client to server. - uint post_id = clientP->postMessage(message); - QVERIFY(post_id); - QCOMPARE(serverMessages.count(), 0); - QTRY_COMPARE(serverMessages.count(), 1); - - // Verify the message is OK. - QCOMPARE(serverMessages.takeFirst(), message); - - - // Try sending the message from server to client. - post_id = serverP->postMessage(message); - QVERIFY(post_id); - QCOMPARE(clientMessages.count(), 0); - QTRY_COMPARE(clientMessages.count(), 1); - - // Verify the message is OK. - QCOMPARE(clientMessages.takeFirst(), message); -} - -#include "tst_qtestprotocol.moc" - diff --git a/tests/qtuitest/tst_qtestprotocol/tst_qtestprotocol.pro b/tests/qtuitest/tst_qtestprotocol/tst_qtestprotocol.pro deleted file mode 100644 index 6244019..0000000 --- a/tests/qtuitest/tst_qtestprotocol/tst_qtestprotocol.pro +++ /dev/null @@ -1,25 +0,0 @@ -TEMPLATE=app -CONFIG+=unittest -QT = core network -TARGET=tst_qtestprotocol -CONFIG+=qtestlib - -include($$SRCROOT/libqtuitest/libqtuitest.pri) - -CONFIG-=debug_and_release_target - -SOURCES+= \ - tst_qtestprotocol.cpp \ - testprotocol.cpp \ - testprotocolserver.cpp - -HEADERS+= \ - testprotocol.h \ - testprotocolserver.h - - -target.path += \ - /usr/local/bin - -INSTALLS += \ - target
\ No newline at end of file diff --git a/tests/qtuitest/tst_qtuitestnamespace/tst_qtuitestnamespace.cpp b/tests/qtuitest/tst_qtuitestnamespace/tst_qtuitestnamespace.cpp deleted file mode 100644 index d40723e..0000000 --- a/tests/qtuitest/tst_qtuitestnamespace/tst_qtuitestnamespace.cpp +++ /dev/null @@ -1,898 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of QtUiTest. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QT_NO_DEBUG -#define QT_NO_DEBUG 1 -#endif - -#include <QAction> -#include <QCoreApplication> -#include <QObject> -#include <QtTest/QTest> - -#include <qalternatestack_p.h> -#include <qtuitestconnectionmanager_p.h> -#include <qtuitestnamespace.h> - -#include <QTime> -#include <QTimer> - -class tst_QtUiTestNamespace : public QObject -{ - Q_OBJECT - -private slots: - void wait(); - void connectFirst(); - void connectFirstIsFirst(); - void connectFirstDestruction(); - void connectFirstInvalid(); - void connectFirstDefaultParam(); - void disconnectFirstInvalid(); - void disconnectFirstWildcards(); -}; - -int g_exit_code; -int g_argc; -char** g_argv; -bool g_test_done; -QObject* g_test; - -void run_test(QAlternateStack*,QVariant const&) -{ - g_exit_code = QTest::qExec(g_test, g_argc, g_argv); - g_test_done = true; -} - -int main(int argc, char** argv) -{ - QCoreApplication app(argc, argv); - tst_QtUiTestNamespace test; - g_test = &test; - g_argc = argc; - g_argv = argv; - - // Most QtUiTest code runs in an alternate stack, while the original - // stack runs the event loop. - // Try to replicate that behavior for this test. - QAlternateStack stack; - - g_test_done = false; - stack.start(run_test); - while (!g_test_done) { - app.processEvents(QEventLoop::WaitForMoreEvents); - } - return g_exit_code; -} - -/* - Event loop where 'exec' is a slot, for convenience. -*/ -class TestEventLoop : public QEventLoop -{ - Q_OBJECT -public: - TestEventLoop(QObject* parent =0) - : QEventLoop(parent), - m_execCount(0), - m_exitCount(0) - {} - - int m_execCount; - int m_exitCount; - -public slots: - int exec(QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents) - { - ++m_execCount; - int ret = QEventLoop::exec(flags); - ++m_exitCount; - return ret; - } -}; - -/* - Class for emitting a particular integer value. -*/ -class Emitter : public QObject -{ - Q_OBJECT - -public: - Emitter(QObject* parent =0) - : QObject(parent) - {} - - void emitValue(int value) - { - emit valueChanged(value); - emit valueChanged2(value); - emit valueChangedWithDefault(value); - } - - enum Values { DefaultValue = 1338 }; - -signals: - void valueChanged(int); - void valueChanged2(int); - void valueChangedWithDefault(int = DefaultValue); -}; - -/* - Class for receiving an emitted value. -*/ -class Receiver : public QObject -{ - Q_OBJECT - -public: - Receiver(QObject* parent =0) - : QObject(parent) - {} - - QList<int> values; - QList<int> values2; - - enum Values { DefaultValue = 1337 }; - -public slots: - void receive(int value) - { values << value; } - - void receive2(int value) - { values2 << value; } - - void receiveMultipliedByTwo(int value) - { values << 2*value; } - - void receiveDefault(int value = DefaultValue) - { values << value; } - - void clear() - { values.clear(); } - - void clear2() - { values2.clear(); } -}; - -// Verify that \a actual is bounded by \a min and \a max. -#define QCOMPARE_BOUNDED(actual, min, max) \ - do { \ - QVERIFY2(actual >= min && actual <= max, qPrintable(QString( \ - "actual %1, expected to be in range %2 .. %3" \ - ).arg(actual).arg(min).arg(max))); \ - } while(0) - -/* - The most important test ever written. - - Verify that we can wait() for an arbitrary amount of time, while processing - events, without hanging if a nested event loop occurs. - - See bug 194361. -*/ -void tst_QtUiTestNamespace::wait() -{ - { - QTime t; - t.start(); - - QtUiTest::wait(1000); - - QCOMPARE_BOUNDED(t.elapsed(), 1000, 30000); - } - - // OK, so we can wait when there are no nested event loops. - // Big deal. The real test is: if we have a nested event loop, can we - // avoid hanging. - { - TestEventLoop loop; - - QTime t; - t.start(); - - // The nested event loop will run for 2.5 seconds. - // But we only want to wait for 1 second. - // What on earth will happen... ??? - QTimer::singleShot(0, &loop, SLOT(exec())); - QTimer::singleShot(2500, &loop, SLOT(quit())); - QtUiTest::wait(1000); - - // Verify the loop really did exec. - QCOMPARE(loop.m_execCount, 1); - // Verify the loop really hasn't exited yet. - QCOMPARE(loop.m_exitCount, 0); - // Verify that we've waited for about as long as we wanted to wait. - QCOMPARE_BOUNDED(t.elapsed(), 1000, 30000); - - // OK, now check inner loop really does exit, to ensure we haven't - // screwed things up by switching stacks. - for (int i = 0; i < 5000 && !loop.m_exitCount; i+=100, QtUiTest::wait(100)) - {} - QCOMPARE(loop.m_exitCount, 1); - QCOMPARE_BOUNDED(t.elapsed(), 2500, 30000); - } -} - -/* - Tests QtUiTest::connectFirst(), which works like QObject::connect but guarantees - that the connection comes before all existing connections. -*/ -void tst_QtUiTestNamespace::connectFirst() -{ - QtUiTestConnectionManager* cm = QtUiTestConnectionManager::instance(); - if (cm->m_connections.count()) - QSKIP("Test cannot proceed; previous test left connection manager in incorrect state", SkipAll); - - { - // Basic connection - Emitter e; - Receiver r; - - QVERIFY(QtUiTest::connectFirst(&e, SIGNAL(valueChanged(int)), &r, SLOT(receive(int)))); - QCOMPARE(cm->m_connections.count(), 1); - - e.emitValue(1024); - e.emitValue(1025); - QCOMPARE(r.values, QList<int>() << 1024 << 1025); - r.values.clear(); - - // Basic disconnection - QVERIFY(QtUiTest::disconnectFirst(&e, SIGNAL(valueChanged(int)), &r, SLOT(receive(int)))); - QCOMPARE(cm->m_connections.count(), 0); - - e.emitValue(1027); - QCOMPARE(r.values, QList<int>()); - } - - { - // Multiply-connected - Emitter e1, e2; - Receiver r1, r2; - - QVERIFY(QtUiTest::connectFirst(&e1, SIGNAL(valueChanged(int)), &r1, SLOT(receive(int)))); - QCOMPARE(cm->m_connections.count(), 1); - - QVERIFY(QtUiTest::connectFirst(&e1, SIGNAL(valueChanged(int)), &r1, SLOT(receive(int)))); - QCOMPARE(cm->m_connections.count(), 2); - - QVERIFY(QtUiTest::connectFirst(&e1, SIGNAL(valueChanged(int)), &r1, SLOT(receive(int)))); - QCOMPARE(cm->m_connections.count(), 3); - - // Connect to another object to make sure it doesn't just happen to work when all - // connections are identical. - QVERIFY(QtUiTest::connectFirst(&e2, SIGNAL(valueChanged2(int)), &r2, SLOT(receive2(int)))); - QCOMPARE(cm->m_connections.count(), 4); - - e1.emitValue(128); - e1.emitValue(129); - QCOMPARE(r1.values, QList<int>() << 128 << 128 << 128 << 129 << 129 << 129); - QCOMPARE(r1.values2, QList<int>()); - QCOMPARE(r2.values, QList<int>()); - QCOMPARE(r2.values2, QList<int>()); - r1.values.clear(); - - e2.emitValue(130); - e2.emitValue(150); - QCOMPARE(r1.values, QList<int>()); - QCOMPARE(r1.values2, QList<int>()); - QCOMPARE(r2.values, QList<int>()); - QCOMPARE(r2.values2, QList<int>() << 130 << 150); - r2.values2.clear(); - - // Disconnecting something which is multiply-connected - QVERIFY(QtUiTest::disconnectFirst(&e1, SIGNAL(valueChanged(int)), &r1, SLOT(receive(int)))); - QCOMPARE(cm->m_connections.count(), 1); - - e1.emitValue(1280); - e1.emitValue(1290); - QCOMPARE(r1.values, QList<int>()); - QCOMPARE(r1.values2, QList<int>()); - QCOMPARE(r2.values, QList<int>()); - QCOMPARE(r2.values2, QList<int>()); - r1.values.clear(); - - e2.emitValue(1300); - e2.emitValue(1500); - QCOMPARE(r1.values, QList<int>()); - QCOMPARE(r1.values2, QList<int>()); - QCOMPARE(r2.values, QList<int>()); - QCOMPARE(r2.values2, QList<int>() << 1300 << 1500); - r2.values2.clear(); - - QVERIFY(QtUiTest::disconnectFirst(&e2, SIGNAL(valueChanged2(int)), &r2, SLOT(receive2(int)))); - QCOMPARE(cm->m_connections.count(), 0); - - e2.emitValue(280); - e2.emitValue(290); - QCOMPARE(r1.values, QList<int>()); - QCOMPARE(r1.values2, QList<int>()); - QCOMPARE(r2.values, QList<int>()); - QCOMPARE(r2.values2, QList<int>()); - - } - - { - // Large number of connections - QList<Emitter*> emitters; - QList<Receiver*> receivers; - - static const int LARGE = 1000; - while (emitters.count() < LARGE) { - emitters << new Emitter; - receivers << new Receiver; - } - - for (int i = 0; i < LARGE; ++i) { - QVERIFY(QtUiTest::connectFirst(emitters.at(i), SIGNAL(valueChanged(int)), receivers.at(i), SLOT(receive(int)))); - QVERIFY(QtUiTest::connectFirst(emitters.at(i), SIGNAL(valueChanged(int)), receivers.at(i), SLOT(receive(int)))); - QVERIFY(QtUiTest::connectFirst(emitters.at(i), SIGNAL(valueChanged2(int)), receivers.at(LARGE-i-1), SLOT(receive2(int)))); - QVERIFY(QtUiTest::connectFirst(emitters.at(i), SIGNAL(valueChanged2(int)), receivers.at(LARGE-i-1), SLOT(receive2(int)))); - QCOMPARE(cm->m_connections.count(), (i+1)*4); - } - - for (int i = 0; i < LARGE; ++i) { - emitters.at(i)->emitValue(i); - } - - for (int i = 0; i < LARGE; ++i) { - // receiver at i should have received (twice): - // value: i - // value2: LARGE-i-1 - QCOMPARE( receivers.at(i)->values, QList<int>() << i << i ); - QCOMPARE( receivers.at(i)->values2, QList<int>() << (LARGE-i-1) << (LARGE-i-1) ); - receivers.at(i)->values.clear(); - receivers.at(i)->values2.clear(); - } - - // Disconnect half of the objects. - for (int i = 0; i < LARGE; i += 2) { - QVERIFY(QtUiTest::disconnectFirst(emitters.at(i), SIGNAL(valueChanged(int)), 0, 0)); - QVERIFY(QtUiTest::disconnectFirst(emitters.at(i), SIGNAL(valueChanged2(int)), 0, 0)); - } - QCOMPARE(cm->m_connections.count(), LARGE*2); - - for (int i = 0; i < LARGE; ++i) { - emitters.at(i)->emitValue(i); - } - - for (int i = 0; i < LARGE; ++i) { - if (i % 2) { - QCOMPARE( receivers.at(i)->values, QList<int>() << i << i); - receivers.at(i)->values.clear(); - } else { - QCOMPARE( receivers.at(i)->values, QList<int>() ); - } - - if (!(i % 2)) { - QCOMPARE( receivers.at(i)->values2, QList<int>() << (LARGE-i-1) << (LARGE-i-1)); - receivers.at(i)->values2.clear(); - } else { - QCOMPARE( receivers.at(i)->values2, QList<int>() ); - } - } - - // Delete half of the objects. - for (int i = 0; i < LARGE/2; ++i) { - delete receivers.takeLast(); - delete emitters.takeLast(); - } - // All the `2' connections have been severed - QCOMPARE(cm->m_connections.count(), LARGE/2); - - for (int i = 0; i < LARGE/2; ++i) { - emitters.at(i)->emitValue(i); - } - - for (int i = 0; i < LARGE/2; ++i) { - if (i % 2) { - QCOMPARE( receivers.at(i)->values, QList<int>() << i << i); - receivers.at(i)->values.clear(); - } else { - QCOMPARE( receivers.at(i)->values, QList<int>() ); - } - QCOMPARE( receivers.at(i)->values2, QList<int>() ); - } - - // Delete the rest. - while (receivers.count()) { - delete receivers.takeFirst(); - delete emitters.takeFirst(); - } - QCOMPARE(cm->m_connections.count(), 0); - } -} - - -void tst_QtUiTestNamespace::connectFirstIsFirst() -{ - QtUiTestConnectionManager* cm = QtUiTestConnectionManager::instance(); - if (cm->m_connections.count()) - QSKIP("Test cannot proceed; previous test left connection manager in incorrect state", SkipAll); - - // Tests that connectFirst really does what its name says: establishes a connection which is - // activated _before_ all QObject::connect connections. - Emitter e; - Receiver r; - - static const int LARGE = 200; - - QVERIFY(QtUiTest::connectFirst(&e, SIGNAL(valueChanged(int)), &r, SLOT(receive(int)))); - - for (int i = 0; i < LARGE; ++i) - QVERIFY(QObject::connect (&e, SIGNAL(valueChanged(int)), &r, SLOT(receiveMultipliedByTwo(int)))); - - QVERIFY(QtUiTest::connectFirst(&e, SIGNAL(valueChanged(int)), &r, SLOT(receive(int)))); - - for (int i = 0; i < LARGE; ++i) - QVERIFY(QObject::connect (&e, SIGNAL(valueChanged(int)), &r, SLOT(receiveMultipliedByTwo(int)))); - - QVERIFY(QtUiTest::connectFirst(&e, SIGNAL(valueChanged(int)), &r, SLOT(receive(int)))); - - e.emitValue(1); - QCOMPARE(r.values.count(), LARGE*2+3); - - // Verify that the QtUiTest-connected signals came first - for (int i = 0; i < 3; ++i) - QCOMPARE(r.values.at(i), 1); - for (int i = 0; i < LARGE*2; ++i) - QCOMPARE(r.values.at(i+3), 2); -} - -void tst_QtUiTestNamespace::connectFirstDestruction() -{ - QtUiTestConnectionManager* cm = QtUiTestConnectionManager::instance(); - if (cm->m_connections.count()) - QSKIP("Test cannot proceed; previous test left connection manager in incorrect state", SkipAll); - - { - // Verify connections are destroyed when sender is destroyed - Receiver r; - { - Emitter e; - - QVERIFY(QtUiTest::connectFirst(&e, SIGNAL(valueChanged(int)), &r, SLOT(receive(int)))); - QCOMPARE(cm->m_connections.count(), 1); - } - QCOMPARE(cm->m_connections.count(), 0); - } - - { - // Verify connections are destroyed when receiver is destroyed - Emitter e; - { - Receiver r; - - QVERIFY(QtUiTest::connectFirst(&e, SIGNAL(valueChanged(int)), &r, SLOT(receive(int)))); - QCOMPARE(cm->m_connections.count(), 1); - } - QCOMPARE(cm->m_connections.count(), 0); - } -} - -void tst_QtUiTestNamespace::connectFirstInvalid() -{ - QtUiTestConnectionManager* cm = QtUiTestConnectionManager::instance(); - if (cm->m_connections.count()) - QSKIP("Test cannot proceed; previous test left connection manager in incorrect state", SkipAll); - - Emitter e; - Receiver r; - - QVERIFY(!QtUiTest::connectFirst(0, 0, 0, 0)); - QVERIFY(!cm->m_connections.count()); - - QVERIFY(!QtUiTest::connectFirst(&e, 0, 0, 0)); - QVERIFY(!cm->m_connections.count()); - - QVERIFY(!QtUiTest::connectFirst(&e, 0, &r, 0)); - QVERIFY(!cm->m_connections.count()); - - QVERIFY(!QtUiTest::connectFirst(0, 0, &r, 0)); - QVERIFY(!cm->m_connections.count()); - - QVERIFY(!QtUiTest::connectFirst(&e, SIGNAL(notexist()), &r, 0)); - QVERIFY(!cm->m_connections.count()); - - QVERIFY(!QtUiTest::connectFirst(&e, SIGNAL(valueChanged(int)), &r, 0)); - QVERIFY(!cm->m_connections.count()); - - QVERIFY(!QtUiTest::connectFirst(&e, SIGNAL(valueChanged(int)), &r, SLOT(notexist()))); - QVERIFY(!cm->m_connections.count()); - - QVERIFY(!QtUiTest::connectFirst(&e, SIGNAL(notexist()), &r, SLOT(receive(int)))); - QVERIFY(!cm->m_connections.count()); -} - -void tst_QtUiTestNamespace::disconnectFirstInvalid() -{ - QtUiTestConnectionManager* cm = QtUiTestConnectionManager::instance(); - if (cm->m_connections.count()) - QSKIP("Test cannot proceed; previous test left connection manager in incorrect state", SkipAll); - - Emitter e; - Receiver r; - - QVERIFY(!QtUiTest::disconnectFirst(0, 0, 0, 0)); - QVERIFY(!cm->m_connections.count()); - - // Not an error but there are no connections - QVERIFY(!QtUiTest::disconnectFirst(&e, 0, 0, 0)); - QVERIFY(!cm->m_connections.count()); - - // Not an error but there are no connections - QVERIFY(!QtUiTest::disconnectFirst(&e, 0, &r, 0)); - QVERIFY(!cm->m_connections.count()); - - QVERIFY(!QtUiTest::disconnectFirst(0, 0, &r, 0)); - QVERIFY(!cm->m_connections.count()); - - QVERIFY(!QtUiTest::disconnectFirst(&e, SIGNAL(notexist()), &r, 0)); - QVERIFY(!cm->m_connections.count()); - - // Not an error but there are no connections - QVERIFY(!QtUiTest::disconnectFirst(&e, SIGNAL(valueChanged(int)), &r, 0)); - QVERIFY(!cm->m_connections.count()); - - QVERIFY(!QtUiTest::disconnectFirst(&e, SIGNAL(valueChanged(int)), &r, SLOT(notexist()))); - QVERIFY(!cm->m_connections.count()); - - QVERIFY(!QtUiTest::disconnectFirst(&e, SIGNAL(notexist2()), &r, SLOT(receive(int)))); - QVERIFY(!cm->m_connections.count()); - - // Not an error but there are no connections - QVERIFY(!QtUiTest::disconnectFirst(&e, SIGNAL(valueChanged(int)), &r, SLOT(receive(int)))); - QVERIFY(!cm->m_connections.count()); -} - -/* - Tests QtUiTest::connectFirst() for signals/slots which have default parameters. -*/ -void tst_QtUiTestNamespace::connectFirstDefaultParam() -{ - QtUiTestConnectionManager* cm = QtUiTestConnectionManager::instance(); - if (cm->m_connections.count()) - QSKIP("Test cannot proceed; previous test left connection manager in incorrect state", SkipAll); - - { // x,x - Emitter e; - Receiver r; - - QVERIFY(QtUiTest::connectFirst(&e, SIGNAL(valueChangedWithDefault(int)), &r, SLOT(receiveDefault(int)))); - QCOMPARE(cm->m_connections.count(), 1); - e.emitValue(-99); - QCOMPARE(r.values, QList<int>() << -99); - } - - { // x,0 - Emitter e; - Receiver r; - - QVERIFY(QtUiTest::connectFirst(&e, SIGNAL(valueChangedWithDefault(int)), &r, SLOT(receiveDefault()))); - QCOMPARE(cm->m_connections.count(), 1); - e.emitValue(129); - QCOMPARE(r.values, QList<int>() << r.DefaultValue); - } - - { // 0,x: can't work - Emitter e; - Receiver r; - - QVERIFY(!QtUiTest::connectFirst(&e, SIGNAL(valueChangedWithDefault()), &r, SLOT(receiveDefault(int)))); - QCOMPARE(cm->m_connections.count(), 0); - } - - { // 0,0 - Emitter e; - Receiver r; - - QVERIFY(QtUiTest::connectFirst(&e, SIGNAL(valueChangedWithDefault()), &r, SLOT(receiveDefault()))); - QCOMPARE(cm->m_connections.count(), 1); - e.emitValue(130); - - QEXPECT_FAIL("", "Bug 227908: signals with default parameters are discarded by QtUiTest::connectFirst()", Abort); - - QCOMPARE(r.values.count(), 1); - QCOMPARE(r.values, QList<int>() << r.DefaultValue); - } -} - -void tst_QtUiTestNamespace::disconnectFirstWildcards() -{ - QtUiTestConnectionManager* cm = QtUiTestConnectionManager::instance(); - if (cm->m_connections.count()) - QSKIP("Test cannot proceed; previous test left connection manager in incorrect state", SkipAll); - -#define INIT() \ - Receiver r1; Emitter e1; \ - Receiver r2; Emitter e2a; Emitter e2b; \ - Receiver r3a; Receiver r3b; Emitter e3; \ - Receiver r4a; Receiver r4b; Emitter e4; \ -\ - QVERIFY(QtUiTest::connectFirst(&e1, SIGNAL(valueChanged(int)), &r1, SLOT(receive(int)))); \ - QVERIFY(QtUiTest::connectFirst(&e1, SIGNAL(valueChanged(int)), &r1, SLOT(receive2(int)))); \ -\ - QVERIFY(QtUiTest::connectFirst(&e2a, SIGNAL(valueChanged(int)), &r2, SLOT(receive(int)))); \ - QVERIFY(QtUiTest::connectFirst(&e2a, SIGNAL(valueChanged(int)), &r2, SLOT(receive2(int)))); \ - QVERIFY(QtUiTest::connectFirst(&e2b, SIGNAL(valueChanged(int)), &r2, SLOT(receive(int)))); \ - QVERIFY(QtUiTest::connectFirst(&e2b, SIGNAL(valueChanged(int)), &r2, SLOT(receive2(int)))); \ -\ - QVERIFY(QtUiTest::connectFirst(&e3, SIGNAL(valueChanged(int)), &r3a, SLOT(receive(int)))); \ - QVERIFY(QtUiTest::connectFirst(&e3, SIGNAL(valueChanged(int)), &r3a, SLOT(receive(int)))); \ - QVERIFY(QtUiTest::connectFirst(&e3, SIGNAL(valueChanged(int)), &r3b, SLOT(receive(int)))); \ - QVERIFY(QtUiTest::connectFirst(&e3, SIGNAL(valueChanged(int)), &r3b, SLOT(receive2(int)))); \ -\ - QVERIFY(QtUiTest::connectFirst(&e4, SIGNAL(valueChanged(int)), &r4a, SLOT(receive(int)))); \ - QVERIFY(QtUiTest::connectFirst(&e4, SIGNAL(valueChanged(int)), &r4a, SLOT(receive2(int)))); \ - QVERIFY(QtUiTest::connectFirst(&e4, SIGNAL(valueChanged2(int)), &r4a, SLOT(receive(int)))); \ - QVERIFY(QtUiTest::connectFirst(&e4, SIGNAL(valueChanged2(int)), &r4a, SLOT(receive2(int)))); \ - QVERIFY(QtUiTest::connectFirst(&e4, SIGNAL(valueChanged(int)), &r4b, SLOT(receive(int)))); \ - QVERIFY(QtUiTest::connectFirst(&e4, SIGNAL(valueChanged(int)), &r4b, SLOT(receive2(int)))); \ - QVERIFY(QtUiTest::connectFirst(&e4, SIGNAL(valueChanged2(int)), &r4b, SLOT(receive(int)))); \ - QVERIFY(QtUiTest::connectFirst(&e4, SIGNAL(valueChanged2(int)), &r4b, SLOT(receive2(int)))); - - { - INIT(); - - // Verify connections for correctness - QCOMPARE(cm->m_connections.count(), 18); - - e1. emitValue(10); - e2a.emitValue(20); - e2b.emitValue(21); - e3. emitValue(30); - e4. emitValue(40); - QCOMPARE(r1.values, QList<int>() << 10); - QCOMPARE(r1.values2, QList<int>() << 10); - QCOMPARE(r2.values, QList<int>() << 20 << 21); - QCOMPARE(r2.values2, QList<int>() << 20 << 21); - QCOMPARE(r3a.values, QList<int>() << 30 << 30); - QCOMPARE(r3a.values2, QList<int>()); - QCOMPARE(r3b.values, QList<int>() << 30); - QCOMPARE(r3b.values2, QList<int>() << 30); - QCOMPARE(r4a.values, QList<int>() << 40 << 40); - QCOMPARE(r4a.values2, QList<int>() << 40 << 40); - QCOMPARE(r4b.values, QList<int>() << 40 << 40); - QCOMPARE(r4b.values2, QList<int>() << 40 << 40); - } - - { - INIT(); - - // All of these disconnects should fail: - // 0,0,0,0 - // 0,0,0,x - // 0,0,x,0 - // 0,0,x,x - // 0,x,0,0 - // 0,x,0,x - // 0,x,x,0 - // 0,x,x,x - QVERIFY(!QtUiTest::disconnectFirst(0, 0, 0, 0)); - QVERIFY(!QtUiTest::disconnectFirst(0, 0, 0, SLOT(receive(int)))); - QVERIFY(!QtUiTest::disconnectFirst(0, 0, &r1, 0)); - QVERIFY(!QtUiTest::disconnectFirst(0, 0, &r1, SLOT(receive(int)))); - QVERIFY(!QtUiTest::disconnectFirst(0, SIGNAL(valueChanged(int)), 0, 0)); - QVERIFY(!QtUiTest::disconnectFirst(0, SIGNAL(valueChanged2(int)), 0, SLOT(receive(int)))); - QVERIFY(!QtUiTest::disconnectFirst(0, SIGNAL(valueChanged(int)), &r1, 0)); - QVERIFY(!QtUiTest::disconnectFirst(0, SIGNAL(valueChanged2(int)), &r2, SLOT(receive2(int)))); - QCOMPARE(cm->m_connections.count(), 18); - } - - { - INIT(); - - // Test x,0,0,0 - QVERIFY(QtUiTest::disconnectFirst(&e4,0,0,0)); - QCOMPARE(cm->m_connections.count(), 10); - - e1. emitValue(10); - e2a.emitValue(20); - e2b.emitValue(21); - e3. emitValue(30); - e4. emitValue(40); - QCOMPARE(r1.values, QList<int>() << 10); - QCOMPARE(r1.values2, QList<int>() << 10); - QCOMPARE(r2.values, QList<int>() << 20 << 21); - QCOMPARE(r2.values2, QList<int>() << 20 << 21); - QCOMPARE(r3a.values, QList<int>() << 30 << 30); - QCOMPARE(r3a.values2, QList<int>()); - QCOMPARE(r3b.values, QList<int>() << 30); - QCOMPARE(r3b.values2, QList<int>() << 30); - QCOMPARE(r4a.values, QList<int>()); - QCOMPARE(r4a.values2, QList<int>()); - QCOMPARE(r4b.values, QList<int>()); - QCOMPARE(r4b.values2, QList<int>()); - } - - { - INIT(); - - // Test x,0,0,x: should fail - QVERIFY(!QtUiTest::disconnectFirst(&e4, 0, 0, SLOT(receive2(int)))); - QCOMPARE(cm->m_connections.count(), 18); - } - - { - INIT(); - - // Test x,0,x,0 - QVERIFY(QtUiTest::disconnectFirst(&e4, 0, &r4a, 0)); - QCOMPARE(cm->m_connections.count(), 14); - - e1. emitValue(10); - e2a.emitValue(20); - e2b.emitValue(21); - e3. emitValue(30); - e4. emitValue(40); - QCOMPARE(r1.values, QList<int>() << 10); - QCOMPARE(r1.values2, QList<int>() << 10); - QCOMPARE(r2.values, QList<int>() << 20 << 21); - QCOMPARE(r2.values2, QList<int>() << 20 << 21); - QCOMPARE(r3a.values, QList<int>() << 30 << 30); - QCOMPARE(r3a.values2, QList<int>()); - QCOMPARE(r3b.values, QList<int>() << 30); - QCOMPARE(r3b.values2, QList<int>() << 30); - QCOMPARE(r4a.values, QList<int>()); - QCOMPARE(r4a.values2, QList<int>()); - QCOMPARE(r4b.values, QList<int>() << 40 << 40); - QCOMPARE(r4b.values2, QList<int>() << 40 << 40); - } - - { - INIT(); - - // Test x,0,x,x - QVERIFY(QtUiTest::disconnectFirst(&e4, 0, &r4a, SLOT(receive2(int)))); - - QCOMPARE(cm->m_connections.count(), 16); - - e1. emitValue(10); - e2a.emitValue(20); - e2b.emitValue(21); - e3. emitValue(30); - e4. emitValue(40); - QCOMPARE(r1.values, QList<int>() << 10); - QCOMPARE(r1.values2, QList<int>() << 10); - QCOMPARE(r2.values, QList<int>() << 20 << 21); - QCOMPARE(r2.values2, QList<int>() << 20 << 21); - QCOMPARE(r3a.values, QList<int>() << 30 << 30); - QCOMPARE(r3a.values2, QList<int>()); - QCOMPARE(r3b.values, QList<int>() << 30); - QCOMPARE(r3b.values2, QList<int>() << 30); - QCOMPARE(r4a.values, QList<int>() << 40 << 40); - QCOMPARE(r4a.values2, QList<int>()); - QCOMPARE(r4b.values, QList<int>() << 40 << 40); - QCOMPARE(r4b.values2, QList<int>() << 40 << 40); - } - - { - INIT(); - - // Test x,x,0,0 - QVERIFY(QtUiTest::disconnectFirst(&e4, SIGNAL(valueChanged(int)), 0, 0)); - QCOMPARE(cm->m_connections.count(), 14); - - e1. emitValue(10); - e2a.emitValue(20); - e2b.emitValue(21); - e3. emitValue(30); - e4. emitValue(40); - QCOMPARE(r1.values, QList<int>() << 10); - QCOMPARE(r1.values2, QList<int>() << 10); - QCOMPARE(r2.values, QList<int>() << 20 << 21); - QCOMPARE(r2.values2, QList<int>() << 20 << 21); - QCOMPARE(r3a.values, QList<int>() << 30 << 30); - QCOMPARE(r3a.values2, QList<int>()); - QCOMPARE(r3b.values, QList<int>() << 30); - QCOMPARE(r3b.values2, QList<int>() << 30); - QCOMPARE(r4a.values, QList<int>() << 40); - QCOMPARE(r4a.values2, QList<int>() << 40); - QCOMPARE(r4b.values, QList<int>() << 40); - QCOMPARE(r4b.values2, QList<int>() << 40); - } - - { - INIT(); - - // Test x,x,0,x: should fail - QVERIFY(!QtUiTest::disconnectFirst(&e2a, SIGNAL(valueChanged(int)), 0, SLOT(receive(int)))); - - QCOMPARE(cm->m_connections.count(), 18); - } - - { - INIT(); - - // Test x,x,x,0 - QVERIFY(QtUiTest::disconnectFirst(&e1, SIGNAL(valueChanged(int)), &r1, 0)); - - QCOMPARE(cm->m_connections.count(), 16); - - e1. emitValue(10); - e2a.emitValue(20); - e2b.emitValue(21); - e3. emitValue(30); - e4. emitValue(40); - QCOMPARE(r1.values, QList<int>()); - QCOMPARE(r1.values2, QList<int>()); - QCOMPARE(r2.values, QList<int>() << 20 << 21); - QCOMPARE(r2.values2, QList<int>() << 20 << 21); - QCOMPARE(r3a.values, QList<int>() << 30 << 30); - QCOMPARE(r3a.values2, QList<int>()); - QCOMPARE(r3b.values, QList<int>() << 30); - QCOMPARE(r3b.values2, QList<int>() << 30); - QCOMPARE(r4a.values, QList<int>() << 40 << 40); - QCOMPARE(r4a.values2, QList<int>() << 40 << 40); - QCOMPARE(r4b.values, QList<int>() << 40 << 40); - QCOMPARE(r4b.values2, QList<int>() << 40 << 40); - } - - { - INIT(); - - // Test x,x,x,x - QVERIFY(QtUiTest::disconnectFirst(&e3, SIGNAL(valueChanged(int)), &r3a, SLOT(receive(int)))); - - QCOMPARE(cm->m_connections.count(), 16); - - e1. emitValue(10); - e2a.emitValue(20); - e2b.emitValue(21); - e3. emitValue(30); - e4. emitValue(40); - QCOMPARE(r1.values, QList<int>() << 10); - QCOMPARE(r1.values2, QList<int>() << 10); - QCOMPARE(r2.values, QList<int>() << 20 << 21); - QCOMPARE(r2.values2, QList<int>() << 20 << 21); - QCOMPARE(r3a.values, QList<int>()); - QCOMPARE(r3a.values2, QList<int>()); - QCOMPARE(r3b.values, QList<int>() << 30); - QCOMPARE(r3b.values2, QList<int>() << 30); - QCOMPARE(r4a.values, QList<int>() << 40 << 40); - QCOMPARE(r4a.values2, QList<int>() << 40 << 40); - QCOMPARE(r4b.values, QList<int>() << 40 << 40); - QCOMPARE(r4b.values2, QList<int>() << 40 << 40); - } - -} - -#include "tst_qtuitestnamespace.moc" diff --git a/tests/qtuitest/tst_qtuitestnamespace/tst_qtuitestnamespace.pro b/tests/qtuitest/tst_qtuitestnamespace/tst_qtuitestnamespace.pro deleted file mode 100644 index 6c5a505..0000000 --- a/tests/qtuitest/tst_qtuitestnamespace/tst_qtuitestnamespace.pro +++ /dev/null @@ -1,20 +0,0 @@ -TEMPLATE=app -CONFIG+=unittest -QT = core gui -TARGET=tst_qtuitestnamespace -CONFIG+=qtestlib - -CONFIG-=debug_and_release_target - -include($$SRCROOT/libqtuitest/libqtuitest.pri) - -SOURCES+= \ - tst_qtuitestnamespace.cpp - - - -target.path += \ - /usr/local/bin - -INSTALLS += \ - target diff --git a/tests/qtuitest/tst_qtuitestwidgets/tst_qtuitestwidgets.cpp b/tests/qtuitest/tst_qtuitestwidgets/tst_qtuitestwidgets.cpp deleted file mode 100644 index 544d030..0000000 --- a/tests/qtuitest/tst_qtuitestwidgets/tst_qtuitestwidgets.cpp +++ /dev/null @@ -1,554 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of QtUiTest. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QTest> - -#define private public -#include <qtuitestwidgets_p.h> -#undef private - -#include <qtuitestnamespace.h> - -#include <QLabel> -#include <QCheckBox> -#include <qplugin.h> - -//TESTED_COMPONENT=QA: Testing Framework (18707) - -using namespace QtUiTest; - -class tst_QtUiTestWidgets : public QObject -{ - Q_OBJECT - -private slots: - void cast_zero(); - void cast_inherit_single(); - void cast_self(); - void cast(); - void cast_unregistered(); - - void cleanup(); -}; - -QTEST_MAIN(tst_QtUiTestWidgets) - -class WidgetObject : public QObject, public Widget -{ - Q_OBJECT - Q_INTERFACES(QtUiTest::Widget) - -public: - WidgetObject(QObject *_wrappee) - : QObject(), wrappee(_wrappee), geometryCalls(0) - { ++constructed; } - - virtual ~WidgetObject() - { ++destructed; } - - virtual const QRect& geometry() const - { ++geometryCalls; static QRect nullRect; return nullRect; } - - virtual QRect rect() const - { return QRect(); } - - virtual bool isVisible() const - { return false; } - - virtual QRegion visibleRegion() const - { return QRegion(); } - - virtual QRegion childrenVisibleRegion() const - { return QRegion(); } - - virtual const QObjectList &children() const - { static QObjectList c; return c; } - - virtual QObject *parent() const - { return 0; } - - virtual QString windowTitle() const - { return QString(); } - - virtual QPoint mapToGlobal(QPoint const&) const - { return QPoint(); } - - virtual QPoint mapFromGlobal(QPoint const&) const - { return QPoint(); } - - virtual bool setFocus() - { return false; } - - virtual bool setEditFocus(bool) - { return false; } - - virtual void focusOutEvent() - {} - - virtual bool hasFocus() const - { return false; } - - virtual bool hasEditFocus() const - { return false; } - - virtual bool ensureVisibleRegion(QRegion const&) - { return false; } - - QObject *wrappee; - mutable int geometryCalls; - - static int constructed; - static int destructed; -}; -int WidgetObject::constructed = 0; -int WidgetObject::destructed = 0; - -class TextWidgetObject : public WidgetObject, public TextWidget -{ - Q_OBJECT - Q_INTERFACES(QtUiTest::TextWidget) - -public: - TextWidgetObject(QObject *_wrappee) - : WidgetObject(_wrappee) - { ++constructed; } - - virtual ~TextWidgetObject() - { ++destructed; } - - virtual QString text() const - { - QLabel const *label = qobject_cast<QLabel*>(wrappee); - return label ? label->text() : QString(); - } - - virtual QString selectedText() const - { return text(); } - - static int constructed; - static int destructed; - - static QObject* constructor(QObject* wrappee) - { return new TextWidgetObject(wrappee); } -}; -int TextWidgetObject::constructed = 0; -int TextWidgetObject::destructed = 0; - - -class TestableCheckBox : public QCheckBox, - public Widget, public CheckWidget, public TextWidget -{ - Q_OBJECT - Q_INTERFACES( - QtUiTest::Widget - QtUiTest::CheckWidget - QtUiTest::TextWidget) - -public: - TestableCheckBox(QWidget *parent = 0) - : QCheckBox(parent) - { ++constructed; } - - virtual ~TestableCheckBox() - { ++destructed; } - - virtual const QRect& geometry() const - { return QCheckBox::geometry(); } - - virtual QRect rect() const - { return QCheckBox::rect(); } - - virtual bool isVisible() const - { return QCheckBox::isVisible(); } - - virtual QRegion visibleRegion() const - { return QCheckBox::visibleRegion(); } - - virtual QRegion childrenVisibleRegion() const - { return QRegion(); } - - virtual const QObjectList &children() const - { return QCheckBox::children(); } - - virtual QObject *parent() const - { return QCheckBox::parent(); } - - virtual QString windowTitle() const - { return QCheckBox::windowTitle(); } - - virtual QString text() const - { return QCheckBox::text(); } - - virtual QString selectedText() const - { return QCheckBox::text(); } - - virtual bool isTristate() const - { return QCheckBox::isTristate(); } - - virtual Qt::CheckState checkState() const - { return QCheckBox::checkState(); } - - virtual QPoint mapToGlobal(QPoint const &p) const - { return QCheckBox::mapToGlobal(p); } - - virtual QPoint mapFromGlobal(QPoint const &p) const - { return QCheckBox::mapFromGlobal(p); } - - virtual bool setFocus() - { QCheckBox::setFocus(); return true; } - - virtual bool setEditFocus(bool) - { return false; } - - virtual void focusOutEvent() - {} - - virtual bool ensureVisibleRegion(QRegion const&) - { return false; } - - virtual bool hasFocus() const - { return QCheckBox::hasFocus(); } - - virtual bool hasEditFocus() const - { return hasFocus(); } - - static QObject* constructor(QObject* wrappee) - { return qobject_cast<TestableCheckBox*>(wrappee); } - - static int constructed; - static int destructed; -}; -int TestableCheckBox::constructed = 0; -int TestableCheckBox::destructed = 0; - - -class TestWidgetFactory : public QObject, public WidgetFactory -{ - Q_OBJECT - Q_INTERFACES(QtUiTest::WidgetFactory) - - public: - QObject* create(QObject *wrappee) - { - QObject *ret = 0; - if (!ret && wrappee->inherits("QLabel")) - ret = new TextWidgetObject(wrappee); - if (!ret && wrappee->inherits("QWidget")) - ret = new WidgetObject(wrappee); - return ret; - } - - QStringList keys() const - { return QStringList() << "QLabel" << "QWidget"; } -}; -Q_EXPORT_PLUGIN2(testwidgetfactory, TestWidgetFactory) - -Q_IMPORT_PLUGIN(testwidgetfactory) - - -/* - \req QTOPIA-78 - - \groups -*/ -void tst_QtUiTestWidgets::cast_unregistered() -{ - // Test that casting without calling registerClass fails. - QObject obj; - QVERIFY(!qtuitest_cast<Widget*>(&obj)); - // Cast again to ensure any caching code path gets executed. - QVERIFY(!qtuitest_cast<Widget*>(&obj)); -} - -/* - \req QTOPIA-78 - - \groups -*/ -void tst_QtUiTestWidgets::cast() -{ - QtUiTestWidgets::instance()->clear(); - - QCOMPARE(WidgetObject::constructed, 0); - QCOMPARE(WidgetObject::destructed, 0); - - Widget *wrapper = 0; - WidgetObject *wo = 0; - - { - QWidget widget; - - QtUiTestWidgets::instance()->refreshPlugins(); - - QCOMPARE(WidgetObject::constructed, 0); - QCOMPARE(WidgetObject::destructed, 0); - - wrapper = qtuitest_cast<Widget*>(&widget); - wo = static_cast<WidgetObject*>(wrapper); - QVERIFY(wrapper); - QVERIFY(wo); - QCOMPARE(wo->wrappee, &widget); - QCOMPARE(wo->geometryCalls, 0); - - QCOMPARE(WidgetObject::constructed, 1); - QCOMPARE(WidgetObject::destructed, 0); - - // Cast something that's already a wrapper - QCOMPARE(qtuitest_cast<Widget*>(wo), wrapper); - - QCOMPARE(WidgetObject::constructed, 1); - QCOMPARE(WidgetObject::destructed, 0); - - // Verify that WidgetObject's functions are really being called - wrapper->geometry(); - QCOMPARE(wo->geometryCalls, 1); - - // Cast again and verify that it returns the object we already have - QCOMPARE( qtuitest_cast<Widget*>(&widget), wrapper ); - QCOMPARE(WidgetObject::constructed, 1); - QCOMPARE(WidgetObject::destructed, 0); - - // Delete wrapped object and verify that testwidget gets deleted - } - QCOMPARE(WidgetObject::constructed, 1); - QCOMPARE(WidgetObject::destructed, 1); - - // Construct and test again - { - QWidget widget; - wrapper = qtuitest_cast<Widget*>(&widget); - wo = static_cast<WidgetObject*>(wrapper); - QVERIFY(wrapper); - QVERIFY(wo); - QCOMPARE(wo->wrappee, &widget); - QCOMPARE(wo->geometryCalls, 0); - - QCOMPARE(WidgetObject::constructed, 2); - QCOMPARE(WidgetObject::destructed, 1); - - // Delete wrapper without deleting object - delete wrapper; - QCOMPARE(WidgetObject::constructed, 2); - QCOMPARE(WidgetObject::destructed, 2); - - // Verify new wrapper can be obtained after deleting old wrapper - wrapper = qtuitest_cast<Widget*>(&widget); - wo = static_cast<WidgetObject*>(wrapper); - QVERIFY(wrapper); - QVERIFY(wo); - QCOMPARE(wo->wrappee, &widget); - QCOMPARE(wo->geometryCalls, 0); - - QCOMPARE(WidgetObject::constructed, 3); - QCOMPARE(WidgetObject::destructed, 2); - - QCOMPARE( qtuitest_cast<Widget*>(&widget), wrapper ); - QCOMPARE(WidgetObject::constructed, 3); - QCOMPARE(WidgetObject::destructed, 2); - } - QCOMPARE(WidgetObject::constructed, 3); - QCOMPARE(WidgetObject::destructed, 3); -} - -/* - \req QTOPIA-78 - - \groups - Test case where an interface is implemented by a class which inherits a - class which implements one other interface. -*/ -void tst_QtUiTestWidgets::cast_inherit_single() -{ - QCOMPARE(WidgetObject::constructed, 0); - QCOMPARE(WidgetObject::destructed, 0); - QCOMPARE(TextWidgetObject::constructed, 0); - QCOMPARE(TextWidgetObject::destructed, 0); - - QtUiTestWidgets::instance()->refreshPlugins(); - - Widget *w; - TextWidget *tw; - - { - QWidget widget; - QLabel label; - - w = qtuitest_cast<Widget*>(&widget); - tw = qtuitest_cast<TextWidget*>(&label); - - QVERIFY(w); - QVERIFY(tw); - QCOMPARE(TextWidgetObject::constructed, 1); - QCOMPARE(TextWidgetObject::destructed, 0); - - /* One or more widget objects may have been constructed while finding - * the interfaces for QLabel. However there should be exactly 2 - * still existing. */ - QCOMPARE(WidgetObject::constructed - WidgetObject::destructed, 2); - - QCOMPARE(tw->text(), QString()); - label.setText("Hi there"); - QCOMPARE(tw->text(), QString("Hi there")); - } - - QCOMPARE(TextWidgetObject::constructed, 1); - QCOMPARE(TextWidgetObject::destructed, 1); - QCOMPARE(WidgetObject::constructed - WidgetObject::destructed, 0); -} - -/* - \req QTOPIA-78 - - \groups - Test casting of a widget class which implements its own interfaces. -*/ -void tst_QtUiTestWidgets::cast_self() -{ - QtUiTestWidgets::instance()->clear(); - - QCOMPARE( TestableCheckBox::constructed, 0 ); - QCOMPARE( TestableCheckBox::destructed, 0 ); - - Widget *w; - TextWidget *tw; - CheckWidget *cw; - - { - TestableCheckBox tcb; - QCheckBox *cb = &tcb; - - QCOMPARE( TestableCheckBox::constructed, 1 ); - QCOMPARE( TestableCheckBox::destructed, 0 ); - - /* Doesn't need to be registered before cast. */ - QVERIFY( w = qtuitest_cast<Widget*>(&tcb) ); - QVERIFY( tw = qtuitest_cast<TextWidget*>(&tcb) ); - QVERIFY( cw = qtuitest_cast<CheckWidget*>(&tcb) ); - - QCOMPARE( w, &tcb ); - QCOMPARE( tw, &tcb ); - QCOMPARE( cw, &tcb ); - - /* However, should still work when other classes are registered...*/ - QtUiTestWidgets::instance()->refreshPlugins(); - QCOMPARE( qtuitest_cast<Widget*>(&tcb), w ); - QCOMPARE( qtuitest_cast<TextWidget*>(&tcb), tw ); - QCOMPARE( qtuitest_cast<CheckWidget*>(&tcb), cw ); - QCOMPARE( WidgetObject::constructed, 0 ); - QCOMPARE( WidgetObject::destructed, 0 ); - - QCOMPARE( TestableCheckBox::constructed, 1 ); - QCOMPARE( TestableCheckBox::destructed, 0 ); - - /* Use it a bit and make sure it works as expected. */ - QCOMPARE( w->geometry(), tcb.geometry() ); - - tcb.setText("Walk the Dog"); - QCOMPARE( tw->text(), tcb.text() ); - - tcb.setTristate(true); - cb->setCheckState(Qt::PartiallyChecked); - QCOMPARE( cw->isTristate(), tcb.isTristate() ); - QCOMPARE( cw->checkState(), tcb.checkState() ); - } - - /* Ensure we didn't double-delete */ - QCOMPARE( TestableCheckBox::constructed, 1 ); - QCOMPARE( TestableCheckBox::destructed, 1 ); - - /* Ensure we can make another one with no problems */ - { - TestableCheckBox tcb; - - QCOMPARE( TestableCheckBox::constructed, 2 ); - QCOMPARE( TestableCheckBox::destructed, 1 ); - - QVERIFY( w = qtuitest_cast<Widget*>(&tcb) ); - QVERIFY( tw = qtuitest_cast<TextWidget*>(&tcb) ); - QVERIFY( cw = qtuitest_cast<CheckWidget*>(&tcb) ); - - QCOMPARE( w, &tcb ); - QCOMPARE( tw, &tcb ); - QCOMPARE( cw, &tcb ); - } - QCOMPARE( TestableCheckBox::constructed, 2 ); - QCOMPARE( TestableCheckBox::destructed, 2 ); - - /* Ensure casting a null pointer has no ill effects */ - w = qtuitest_cast<Widget*>( static_cast<TestableCheckBox*>(0) ); - QVERIFY( !w ); - - QCOMPARE( TestableCheckBox::constructed, 2 ); - QCOMPARE( TestableCheckBox::destructed, 2 ); - - QCOMPARE( WidgetObject::constructed, 0 ); - QCOMPARE( WidgetObject::destructed, 0 ); -} - -/* - \req QTOPIA-78 - - \groups -*/ -void tst_QtUiTestWidgets::cast_zero() -{ - QtUiTestWidgets::instance()->clear(); - - QVERIFY( !qtuitest_cast<Widget*>(static_cast<QObject*>(0)) ); - - QtUiTestWidgets::instance()->refreshPlugins(); - - QVERIFY( !qtuitest_cast<Widget*>(static_cast<QObject*>(0)) ); -} - -void tst_QtUiTestWidgets::cleanup() -{ - QtUiTestWidgets::instance()->clear(); - QtUiTestWidgets::instance()->refreshPlugins(); - WidgetObject::constructed = 0; - WidgetObject::destructed = 0; - TextWidgetObject::constructed = 0; - TextWidgetObject::destructed = 0; - TestableCheckBox::constructed = 0; - TestableCheckBox::destructed = 0; -} - -#include "tst_qtuitestwidgets.moc" diff --git a/tests/qtuitest/tst_qtuitestwidgets/tst_qtuitestwidgets.pro b/tests/qtuitest/tst_qtuitestwidgets/tst_qtuitestwidgets.pro deleted file mode 100644 index c86258f..0000000 --- a/tests/qtuitest/tst_qtuitestwidgets/tst_qtuitestwidgets.pro +++ /dev/null @@ -1,27 +0,0 @@ -TEMPLATE=app -CONFIG+=unittest -CONFIG+=qtestlib -QT = core gui - -TARGET=tst_qtuitestwidgets - -CONFIG-=debug_and_release_target - -SOURCES+= \ - tst_qtuitestwidgets.cpp - -DEFINES+=QT_STATICPLUGIN - -include($$SRCROOT/libqtuitest/libqtuitest.pri) - -symbian { - LIBS+=-L$$OUT_PWD -lqtwidgets -} - - - -target.path += \ - /usr/local/bin - -INSTALLS += \ - target
\ No newline at end of file |
