add a simple autotest for corona layouts
This commit is contained in:
parent
054a38b9d0
commit
719590dea3
@ -4,8 +4,10 @@ set_package_properties(Qt5Test PROPERTIES PURPOSE "Required for tests")
|
|||||||
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR})
|
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
||||||
include(ECMMarkAsTest)
|
include(ECMMarkAsTest)
|
||||||
|
include(ECMAddTests)
|
||||||
|
|
||||||
find_package(KF5CoreAddons REQUIRED)
|
find_package(KF5CoreAddons REQUIRED)
|
||||||
|
find_package(Qt5Widgets REQUIRED)
|
||||||
|
|
||||||
# add_definitions( -DKDESRCDIR=${CMAKE_CURRENT_SOURCE_DIR} )
|
# add_definitions( -DKDESRCDIR=${CMAKE_CURRENT_SOURCE_DIR} )
|
||||||
|
|
||||||
@ -36,6 +38,12 @@ PLASMA_UNIT_TESTS(
|
|||||||
|
|
||||||
add_executable(storagetest storagetest.cpp ../src/plasma/private/storage.cpp ../src/plasma/private/storagethread.cpp)
|
add_executable(storagetest storagetest.cpp ../src/plasma/private/storage.cpp ../src/plasma/private/storagethread.cpp)
|
||||||
target_link_libraries(storagetest Qt5::Gui Qt5::Test Qt5::Sql KF5::KIOCore KF5::Plasma KF5::CoreAddons )
|
target_link_libraries(storagetest Qt5::Gui Qt5::Test Qt5::Sql KF5::KIOCore KF5::Plasma KF5::CoreAddons )
|
||||||
|
|
||||||
|
|
||||||
|
set(coronatest_srcs coronatest.cpp)
|
||||||
|
qt5_add_resources(coronatest_srcs coronatestresources.qrc)
|
||||||
|
ecm_add_test(${coronatest_srcs} TEST_NAME coronatest LINK_LIBRARIES Qt5::Gui Qt5::Widgets Qt5::Test KF5::KIOCore KF5::Plasma KF5::CoreAddons)
|
||||||
|
|
||||||
add_test(plasma-storagetest storagetest)
|
add_test(plasma-storagetest storagetest)
|
||||||
ecm_mark_as_test(storagetest)
|
ecm_mark_as_test(storagetest)
|
||||||
|
|
||||||
|
117
autotests/coronatest.cpp
Normal file
117
autotests/coronatest.cpp
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
/********************************************************************************
|
||||||
|
* Copyright 2010 by Martin Blumenstingl <darklight.xdarklight@googlemail.com> *
|
||||||
|
* *
|
||||||
|
* This library is free software; you can redistribute it and/or *
|
||||||
|
* modify it under the terms of the GNU Library General Public *
|
||||||
|
* License as published by the Free Software Foundation; either *
|
||||||
|
* version 2 of the License, or (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This library is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||||||
|
* Library General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU Library General Public License *
|
||||||
|
* along with this library; see the file COPYING.LIB. If not, write to *
|
||||||
|
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, *
|
||||||
|
* Boston, MA 02110-1301, USA. *
|
||||||
|
*********************************************************************************/
|
||||||
|
|
||||||
|
#include "coronatest.h"
|
||||||
|
#include <ksycoca.h>
|
||||||
|
#include <QStandardPaths>
|
||||||
|
#include <QApplication>
|
||||||
|
|
||||||
|
/*virtual Plasma::Applet *SimpleLoader::internalLoadApplet(const QString &name, uint appletId = 0,
|
||||||
|
const QVariantList &args = QVariantList())
|
||||||
|
{
|
||||||
|
returh new Plasma::Applet();
|
||||||
|
}*/
|
||||||
|
|
||||||
|
QRect SimpleCorona::screenGeometry(int screen) const
|
||||||
|
{
|
||||||
|
//completely arbitrary, still not tested
|
||||||
|
return QRect(100*screen, 100, 100, 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void runKBuildSycoca()
|
||||||
|
{
|
||||||
|
QProcess proc;
|
||||||
|
const QString kbuildsycoca = QStandardPaths::findExecutable(KBUILDSYCOCA_EXENAME);
|
||||||
|
QVERIFY(!kbuildsycoca.isEmpty());
|
||||||
|
QStringList args;
|
||||||
|
args << "--testmode";
|
||||||
|
proc.setProcessChannelMode(QProcess::MergedChannels); // silence kbuildsycoca output
|
||||||
|
proc.start(kbuildsycoca, args);
|
||||||
|
|
||||||
|
//qDebug() << "waiting for signal";
|
||||||
|
//QSignalSpy spy(KSycoca::self(), SIGNAL(databaseChanged(QStringList)));
|
||||||
|
//QVERIFY(spy.wait(10000));
|
||||||
|
//qDebug() << "got signal";
|
||||||
|
|
||||||
|
proc.waitForFinished();
|
||||||
|
QCOMPARE(proc.exitStatus(), QProcess::NormalExit);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CoronaTest::initTestCase()
|
||||||
|
{
|
||||||
|
if (!KSycoca::isAvailable()) {
|
||||||
|
runKBuildSycoca();
|
||||||
|
}
|
||||||
|
|
||||||
|
QStandardPaths::setTestModeEnabled(true);
|
||||||
|
m_corona = new SimpleCorona;
|
||||||
|
|
||||||
|
m_configDir = QDir(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation));
|
||||||
|
m_configDir.removeRecursively();
|
||||||
|
|
||||||
|
QVERIFY(m_configDir.mkpath("."));
|
||||||
|
|
||||||
|
QVERIFY(QFile::copy(QStringLiteral(":/plasma-test-appletsrc"), m_configDir.filePath(QStringLiteral("plasma-test-appletsrc"))));
|
||||||
|
}
|
||||||
|
|
||||||
|
void CoronaTest::cleanupTestCase()
|
||||||
|
{
|
||||||
|
m_configDir.removeRecursively();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CoronaTest::restore()
|
||||||
|
{
|
||||||
|
m_corona->loadLayout("plasma-test-appletsrc");
|
||||||
|
QCOMPARE(m_corona->containments().count(), 1);
|
||||||
|
QCOMPARE(m_corona->containments().first()->applets().count(), 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CoronaTest::startupCompletion()
|
||||||
|
{
|
||||||
|
//startup completion signals
|
||||||
|
QEXPECT_FAIL("", "TODO: complete startup", Continue);
|
||||||
|
QVERIFY(m_corona->isStartupCompleted());
|
||||||
|
QEXPECT_FAIL("", "TODO: complete uiReady signals", Continue);
|
||||||
|
QVERIFY(m_corona->containments().first()->isUiReady());
|
||||||
|
|
||||||
|
//TODO: applet creation and deletion
|
||||||
|
}
|
||||||
|
|
||||||
|
//this test has to be the last, since systemimmutability
|
||||||
|
//can't be programmatically unlocked
|
||||||
|
void CoronaTest::immutability()
|
||||||
|
{
|
||||||
|
//immutability
|
||||||
|
QCOMPARE(m_corona->immutability(), Plasma::Types::Mutable);
|
||||||
|
m_corona->setImmutability(Plasma::Types::UserImmutable);
|
||||||
|
QCOMPARE(m_corona->immutability(), Plasma::Types::UserImmutable);
|
||||||
|
|
||||||
|
m_corona->setImmutability(Plasma::Types::Mutable);
|
||||||
|
QCOMPARE(m_corona->immutability(), Plasma::Types::Mutable);
|
||||||
|
|
||||||
|
m_corona->setImmutability(Plasma::Types::SystemImmutable);
|
||||||
|
QCOMPARE(m_corona->immutability(), Plasma::Types::SystemImmutable);
|
||||||
|
//can't unlock systemimmutable
|
||||||
|
m_corona->setImmutability(Plasma::Types::Mutable);
|
||||||
|
QCOMPARE(m_corona->immutability(), Plasma::Types::SystemImmutable);
|
||||||
|
}
|
||||||
|
|
||||||
|
QTEST_MAIN(CoronaTest)
|
||||||
|
|
61
autotests/coronatest.h
Normal file
61
autotests/coronatest.h
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright 2014 Marco Martin <mart@kde.org> *
|
||||||
|
* *
|
||||||
|
* This library is free software; you can redistribute it and/or *
|
||||||
|
* modify it under the terms of the GNU Library General Public *
|
||||||
|
* License as published by the Free Software Foundation; either *
|
||||||
|
* version 2 of the License, or (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This library is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||||||
|
* Library General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU Library General Public License *
|
||||||
|
* along with this library; see the file COPYING.LIB. If not, write to *
|
||||||
|
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, *
|
||||||
|
* Boston, MA 02110-1301, USA. *
|
||||||
|
*******************************************************************************/
|
||||||
|
#ifndef CORONATEST_H
|
||||||
|
#define CORONATEST_H
|
||||||
|
|
||||||
|
#include <QtTest/QtTest>
|
||||||
|
|
||||||
|
#include "plasma/corona.h"
|
||||||
|
|
||||||
|
/*class SimpleLoader : public Plasma::PluginLoader
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
protected:
|
||||||
|
virtual Applet *internalLoadApplet(const QString &name, uint appletId = 0,
|
||||||
|
const QVariantList &args = QVariantList());
|
||||||
|
};*/
|
||||||
|
|
||||||
|
class SimpleCorona : public Plasma::Corona
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
QRect screenGeometry(int) const;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class CoronaTest : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public Q_SLOTS:
|
||||||
|
void initTestCase();
|
||||||
|
void cleanupTestCase();
|
||||||
|
|
||||||
|
private Q_SLOTS:
|
||||||
|
void restore();
|
||||||
|
void startupCompletion();
|
||||||
|
void immutability();
|
||||||
|
|
||||||
|
private:
|
||||||
|
SimpleCorona *m_corona;
|
||||||
|
QDir m_configDir;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
5
autotests/coronatestresources.qrc
Normal file
5
autotests/coronatestresources.qrc
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<!DOCTYPE RCC><RCC version="1.0">
|
||||||
|
<qresource>
|
||||||
|
<file>plasma-test-appletsrc</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
18
autotests/plasma-test-appletsrc
Normal file
18
autotests/plasma-test-appletsrc
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
|
||||||
|
[Containments][1]
|
||||||
|
formfactor=0
|
||||||
|
immutability=1
|
||||||
|
lastScreen=0
|
||||||
|
location=0
|
||||||
|
plugin=invalid
|
||||||
|
|
||||||
|
[Containments][1][Applets][2]
|
||||||
|
immutability=1
|
||||||
|
plugin=invalid
|
||||||
|
|
||||||
|
[Containments][1][Applets][3]
|
||||||
|
immutability=1
|
||||||
|
plugin=invalid
|
||||||
|
|
||||||
|
[General]
|
||||||
|
immutability=1
|
Loading…
Reference in New Issue
Block a user