QmlDesigner: remove outdated tests

Change-Id: I761d2af520f55d4a4bf405ede83af9228d7d7abb
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@theqtcompany.com>
This commit is contained in:
Tim Jenssen
2016-06-10 15:56:55 +02:00
parent 178d12280b
commit 4d008299f3
8 changed files with 0 additions and 656 deletions

View File

@@ -1,16 +0,0 @@
include(../../../../../qtcreator.pri)
#include(../../../../../src/plugins/qmldesigner/config.pri)
QT += testlib
CONFIG += testcase
##DEFINES += DONT_MESS_WITH_QDEBUG
INCLUDEPATH += $$IDE_SOURCE_TREE/src/plugins/qmldesigner/designercore/include
TARGET = tst_bauhaus
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += testbauhaus.cpp
HEADERS += testbauhaus.h
DEFINES += WORKDIR=\\\"$$DESTDIR\\\"

View File

@@ -1,7 +0,0 @@
#!/usr/bin/perl
($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime();
$filename = "../../../../../../bauhaustests/$yearOffset-$month-$dayOfMonth.log";
system("git rev-parse HEAD >$filename");
system("./tst_bauhaus >>$filename");

View File

@@ -1,131 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#include "testbauhaus.h"
#include <QProcess>
#include <QFileInfo>
#include <QDir>
#include <QDebug>
TestBauhaus::TestBauhaus()
: QObject()
{
foreach (const QString &string, QProcess::systemEnvironment()) {
if (string.contains("qtdir", Qt::CaseInsensitive)) {
m_qtDir = string.split("=").last();
break;
}
}
Q_ASSERT(!m_qtDir.isEmpty());
m_creatorDir = QString(WORKDIR) + "../../../../..";
#ifdef Q_OS_WIN
m_executable = m_creatorDir + "/bin/qtcreator.exe";
#else
m_executable = m_creatorDir + "/bin/qtcreator";
#endif
Q_ASSERT(QFileInfo(m_executable).exists());
}
bool TestBauhaus::loadFile(const QString &fileName)
{
QProcess process;
qDebug() << "starting: " << fileName;
Q_ASSERT(QFileInfo(fileName).exists());
process.start(m_executable, QStringList() << fileName);
if (!process.waitForStarted())
return false;
if (!QProcess::Running == process.state()) {
return false;
}
QTest::qWait(10000);
if (!QProcess::Running == process.state()) {
return false;
}
return true;
}
QStringList findAllQmlFiles(const QDir &dir)
{
QStringList files;
foreach (const QString &file, dir.entryList(QStringList() << "*.qml", QDir::Files)) {
files += dir.absoluteFilePath(file);
}
foreach (const QString &directory, dir.entryList(QStringList(), QDir::AllDirs | QDir::NoDotAndDotDot))
files += findAllQmlFiles(QDir(dir.absoluteFilePath(directory)));
return files;
}
void TestBauhaus::loadExamples_data()
{
QTest::addColumn<QString>("filePath");
foreach (const QString &file, findAllQmlFiles(QDir(m_qtDir + "/examples/declarative"))) {
QTest::newRow("file") << file;
}
}
void TestBauhaus::loadExamples()
{
QFETCH(QString, filePath);
if (!loadFile(filePath))
QFAIL(filePath.toAscii());
}
void TestBauhaus::loadDemos_data()
{
QTest::addColumn<QString>("filePath");
foreach (const QString &file, findAllQmlFiles(QDir(m_qtDir + "/demos/declarative"))) {
QTest::newRow("file") << file;
}
}
void TestBauhaus::loadDemos()
{
QFETCH(QString, filePath);
if (!loadFile(filePath))
QFAIL(filePath.toAscii());
}
void TestBauhaus::loadCreator_data()
{
QTest::addColumn<QString>("filePath");
foreach (const QString &file, findAllQmlFiles(QDir(m_creatorDir))) {
QTest::newRow("file") << file;
}
}
void TestBauhaus::loadCreator()
{
QFETCH(QString, filePath);
if (!loadFile(filePath))
QFAIL(filePath.toAscii());
}
QTEST_MAIN(TestBauhaus);

View File

@@ -1,52 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#pragma once
#include <QObject>
#include <QtTest>
class TestBauhaus : public QObject
{
Q_OBJECT
public:
TestBauhaus();
private slots:
void loadExamples_data();
void loadExamples();
void loadDemos_data();
void loadDemos();
void loadCreator_data();
void loadCreator();
private:
bool loadFile(const QString &file);
QString m_executable;
QString m_creatorDir;
QString m_qtDir;
};

View File

@@ -1,22 +0,0 @@
include(../../../../../qtcreator.pri)
TEMPLATE = app
QT += script declarative webkit testlib
CONFIG += testcase
CONFIG += console
CONFIG -= app_bundle
include($$IDE_SOURCE_TREE/src/plugins/qmldesigner/config.pri)
include($$IDE_SOURCE_TREE/src/plugins/qmldesigner/designercore/designercore.pri)
include($$IDE_SOURCE_TREE/src/libs/qmljs/qmljs-lib.pri)
HEADERS+=$$IDE_SOURCE_TREE/src/libs/utils/changeset.h
SOURCES+=$$IDE_SOURCE_TREE/src/libs/utils/changeset.cpp
#DEFINES+=QTCREATOR_UTILS_STATIC_LIB QML_BUILD_STATIC_LIB
INCLUDEPATH += $$IDE_SOURCE_TREE/src/plugins/qmldesigner/designercore/include
INCLUDEPATH += $$IDE_SOURCE_TREE/src/plugins/qmldesigner/components/propertyeditor
SOURCES += testpropertyeditor.cpp
SOURCES += ../testview.cpp
HEADERS += testpropertyeditor.h
HEADERS += ../testview.h
RESOURCES += ../data/testfiles.qrc

View File

@@ -1,376 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#include "testpropertyeditor.h"
#include "../testview.h"
#include <memory>
#include <cstdio>
#include <metainfo.h>
#include <model.h>
#include <modelnode.h>
#include <variantproperty.h>
#include <bytearraymodifier.h>
#include <invalididexception.h>
#include <invalidmodelnodeexception.h>
#include <nodeproperty.h>
#include <propertyeditor.h>
#include <QDebug>
#include <QDir>
#include <QSpinBox>
#include <QLineEdit>
#include <QStackedWidget>
#include <QDeclarativeView>
#include <QVariant>
using namespace QmlDesigner;
#include <cstdio>
#include "../common/statichelpers.cpp"
static void inspectPropertyEditor(ModelNode node, QWidget* propWidget)
{
if (!propWidget)
return;
QStackedWidget * stackedWidget = qobject_cast<QStackedWidget *> (propWidget);
QVERIFY(stackedWidget);
QDeclarativeView *view = qobject_cast<QDeclarativeView*>(stackedWidget->currentWidget());
QVERIFY(view);
QLineEdit * idLineEdit = view->findChild<QLineEdit* >("IdLineEdit");
if (!idLineEdit)
return ;
QCOMPARE(idLineEdit->text(), node.id());
if (node.hasProperty("width")) {
QSpinBox * widthSpinBox = view->findChild<QSpinBox* >("WidthSpinBox");
QVERIFY(widthSpinBox);
QCOMPARE(widthSpinBox->value(), node.variantProperty("width").value().toInt());
}
if (node.hasProperty("height")) {
QSpinBox * heightSpinBox = view->findChild<QSpinBox* >("HeightSpinBox");
QVERIFY(heightSpinBox);
QCOMPARE(heightSpinBox->value(), node.variantProperty("height").value().toInt());// this can be dangerous
}
if (node.hasProperty("x")) {
QSpinBox * xSpinBox = view->findChild<QSpinBox* >("XSpinBox");
QVERIFY(xSpinBox);
QCOMPARE(xSpinBox->value(), node.variantProperty("x").value().toInt()); // this can be dangerous
}
if (node.hasProperty("y")) {
QSpinBox * ySpinBox = view->findChild<QSpinBox* >("YSpinBox");
QVERIFY(ySpinBox);
QCOMPARE(ySpinBox->value(), node.variantProperty("y").value().toInt());
}
}
static void selectThrough(ModelNode node, QWidget* propWidget = 0)
{
QVERIFY(node.isValid());
int numberOfProperties = node.propertyNames().count();
QList<AbstractProperty> properties = node.properties();
node.view()->clearSelectedModelNodes();
node.view()->selectModelNode(node);
QString name = node.id();
qApp->processEvents();
QTest::qSleep(100);
qApp->processEvents();
QTest::qSleep(100);
qApp->processEvents();
inspectPropertyEditor(node, propWidget);
//selecting should not effect any properties at all!
QCOMPARE(node.propertyNames().count(), numberOfProperties);
foreach (const AbstractProperty &property, properties)
if (property.isVariantProperty()) {
QCOMPARE(property.toVariantProperty().value(), node.variantProperty(property.name()).value());
}
QList<ModelNode> childNodes = node.allDirectSubModelNodes();
foreach (const ModelNode &childNode, childNodes)
selectThrough(childNode, propWidget);
}
static QWidget * setupPropertyEditor(QWidget *widget, Model *model)
{
PropertyEditor *properties = new PropertyEditor(widget);
QString qmlDir = QDir::cleanPath(qApp->applicationDirPath() + QString("/../shared/propertyeditor/"));
qDebug() << qmlDir;
properties->setQmlDir(qmlDir);
model->attachView(properties);
QWidget *pane = properties->createPropertiesPage();
pane->setParent(widget);
widget->show();
widget->resize(300, 800);
qApp->processEvents();
pane->resize(300, 800);
pane->move(0,0);
qApp->processEvents();
QTest::qSleep(100);
return pane;
}
static void loadFileAndTest(const QString &fileName)
{
QFile file(fileName);
QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Text));
QList<QDeclarativeError> errors;
//std::auto_ptr<ByteArrayModifier> modifier1(ByteArrayModifier::create(QString(file.readAll())));
//std::auto_ptr<Model> model1(Model::create(modifier1.get(), QUrl::fromLocalFile(file.fileName()), &errors));
QScopedPointer<Model> model1(Model::create("Item"));
QVERIFY(model1.data());
QScopedPointer<TestView> view(new TestView);
QVERIFY(view.data());
model1->attachView(view.data());
QVERIFY(model1.data());
std::auto_ptr<QWidget> widget(new QWidget());
QWidget *propWidget = setupPropertyEditor(widget.get(), model1.data());
selectThrough(view->rootModelNode(), propWidget);
}
TestPropertyEditor::TestPropertyEditor()
: QObject()
{
}
void TestPropertyEditor::initTestCase()
{
#ifndef QDEBUG_IN_TESTS
qInstallMsgHandler(testMessageOutput);
#endif
Exception::setShouldAssert(false);
}
void TestPropertyEditor::createCoreModel()
{
try {
std::auto_ptr<QWidget> widget(new QWidget());
QScopedPointer<Model> model(Model::create("import Qt 4.6\n Item {}"));
QVERIFY(model.data());
QScopedPointer<TestView> view(new TestView);
QVERIFY(view.data());
model->attachView(view.data());
QVERIFY(model.data());
setupPropertyEditor(widget.get(), model.data());
QVERIFY(view->rootModelNode().isValid());
int numberOfProperties = view->rootModelNode().propertyNames().count();
selectThrough(view->rootModelNode());
QCOMPARE(view->rootModelNode().propertyNames().count(), numberOfProperties);
} catch (Exception &) {
QFAIL("Exception thrown");
}
}
void TestPropertyEditor::loadEmptyCoreModel()
{
/* QList<QDeclarativeError> errors;
QFile file(":/fx/empty.qml");
QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Text));
std::auto_ptr<QWidget> widget(new QWidget());
std::auto_ptr<ByteArrayModifier> modifier1(ByteArrayModifier::create(QString(file.readAll())));
std::auto_ptr<Model> model1(Model::create(modifier1.get(), QUrl(), &errors));
foreach (const QDeclarativeError &error, errors)
QFAIL(error.toString().toLatin1());
QVERIFY(model1.get());
setupPropertyEditor(widget.get(), model1.get());
selectThrough(model1->rootNode());
std::auto_ptr<ByteArrayModifier> modifier2(ByteArrayModifier::create("import Qt 4.6\n Item{}"));
std::auto_ptr<Model> model2(Model::create(modifier2.get(), QUrl(), &errors));
foreach (const QDeclarativeError &error, errors)
QFAIL(error.toString().toLatin1());
QVERIFY(model2.get());
QVERIFY(compareTree(model1->rootNode(), model2->rootNode()));*/
}
void TestPropertyEditor::createSubNode()
{
std::auto_ptr<QWidget> widget(new QWidget());
QScopedPointer<Model> model(Model::create("import Qt 4.6\n Item {}"));
QVERIFY(model.data());
QScopedPointer<TestView> view(new TestView);
QVERIFY(view.data());
model->attachView(view.data());
setupPropertyEditor(widget.get(), model.data());
QVERIFY(view->rootModelNode().isValid());
selectThrough(view->rootModelNode());
ModelNode childNode = view->createModelNode("Qt/Rectangle", 4, 6);
view->rootModelNode().nodeListProperty("data").reparentHere(childNode);
QVERIFY(childNode.isValid());
QVERIFY(view->rootModelNode().allDirectSubModelNodes().contains(childNode));
QVERIFY(childNode.parentProperty().parentModelNode() == view->rootModelNode());
QCOMPARE(childNode.type(), QString("Qt/Rectangle"));
selectThrough(childNode);
QVERIFY(childNode.id().isEmpty());
childNode.setId("Blah");
QCOMPARE(childNode.id(), QString("Blah"));
QCOMPARE(childNode.id(), QString("Blah"));
}
void TestPropertyEditor::createRect()
{
try {
std::auto_ptr<QWidget> widget(new QWidget());
QScopedPointer<Model> model(Model::create("import Qt 4.6\n Item {}"));
QVERIFY(model.data());
QScopedPointer<TestView> view(new TestView);
QVERIFY(view.data());
model->attachView(view.data());
setupPropertyEditor(widget.get(), model.data());
QVERIFY(view->rootModelNode().isValid());
//selectThrough(view->rootModelNode());
ModelNode childNode = view->createModelNode("Qt/Rectangle", 4, 6);
view->rootModelNode().nodeListProperty("data").reparentHere(childNode);
QVERIFY(childNode.isValid());
QVERIFY(view->rootModelNode().allDirectSubModelNodes().contains(childNode));
QVERIFY(childNode.parentProperty().parentModelNode() == view->rootModelNode());
QCOMPARE(childNode.type(), QString("Qt/Rectangle"));
QVERIFY(childNode.id().isEmpty());
childNode.setId("Rect01");
QCOMPARE(childNode.id(), QString("Rect01"));
childNode.variantProperty("x") = 100;
QCOMPARE(QmlObjectNode(childNode).instanceValue("x").toInt(), 100);
childNode.variantProperty("y") = 100;
QCOMPARE(QmlObjectNode(childNode).instanceValue("y").toInt(), 100);
childNode.variantProperty("width") = 100;
QCOMPARE(QmlObjectNode(childNode).instanceValue("width").toInt(), 100);
childNode.variantProperty("height") = 100;
QCOMPARE(QmlObjectNode(childNode).instanceValue("height").toInt(), 100);
selectThrough(childNode);
QCOMPARE(childNode.propertyNames().count(), 4);
QCOMPARE(childNode.variantProperty("scale").value(), QVariant());
} catch (Exception &) {
QFAIL("Exception thrown");
}
}
void TestPropertyEditor::removeNode()
{
std::auto_ptr<QWidget> widget(new QWidget());
QScopedPointer<Model> model(Model::create("import Qt 4.6\n Item {}"));
QVERIFY(model.data());
QScopedPointer<TestView> view(new TestView);
QVERIFY(view.data());
model->attachView(view.data());
setupPropertyEditor(widget.get(), model.data());
QCOMPARE(view->rootModelNode().allDirectSubModelNodes().count(), 0);
selectThrough(view->rootModelNode());
ModelNode childNode = view->createModelNode("Qt/Rectangle", 4, 6);
view->rootModelNode().nodeListProperty("data").reparentHere(childNode);
QVERIFY(childNode.isValid());
QCOMPARE(view->rootModelNode().allDirectSubModelNodes().count(), 1);
QVERIFY(view->rootModelNode().allDirectSubModelNodes().contains(childNode));
QVERIFY(childNode.parentProperty().parentModelNode() == view->rootModelNode());
selectThrough(childNode);
ModelNode subChildNode = view->createModelNode("Qt/Rectangle", 4, 6);
childNode.nodeListProperty("data").reparentHere(subChildNode);
QVERIFY(subChildNode.isValid());
QCOMPARE(childNode.allDirectSubModelNodes().count(), 1);
QVERIFY(childNode.allDirectSubModelNodes().contains(subChildNode));
QVERIFY(subChildNode.parentProperty().parentModelNode() == childNode);
selectThrough(subChildNode);
childNode.destroy();
QCOMPARE(view->rootModelNode().allDirectSubModelNodes().count(), 0);
QVERIFY(!view->rootModelNode().allDirectSubModelNodes().contains(childNode));
QVERIFY(!childNode.isValid());
QVERIFY(!subChildNode.isValid());
}
void TestPropertyEditor::loadWelcomeScreen()
{
loadFileAndTest(QCoreApplication::applicationDirPath() + "/../shared/welcomescreen.qml");
}
void TestPropertyEditor::loadHelloWorld()
{
loadFileAndTest(":/fx/helloworld.qml");
}
void TestPropertyEditor::cleanupTestCase()
{
MetaInfo::clearGlobal();
}
QTEST_MAIN(TestPropertyEditor);

View File

@@ -1,50 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#pragma once
#include <QObject>
#include <QtTest>
class TestPropertyEditor : public QObject
{
Q_OBJECT
public:
TestPropertyEditor();
private slots:
void initTestCase();
void cleanupTestCase();
void createCoreModel();
void loadEmptyCoreModel();
void createSubNode();
void createRect();
void removeNode();
void loadWelcomeScreen();
void loadHelloWorld();
};

View File

@@ -1,5 +1,3 @@
TEMPLATE = subdirs TEMPLATE = subdirs
#SUBDIRS += bauhaustests
SUBDIRS += coretests SUBDIRS += coretests
#SUBDIRS += propertyeditortests