/*
* Copyright (C) 2014 Canonical Ltd.
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 3, as published
* by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranties of
* MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see .
*/
#include "System.h"
#include
#include
#include
#include
#include
class SystemTest: public QObject
{
Q_OBJECT
public:
SystemTest();
private Q_SLOTS:
void testEnable();
void testDisable();
void testNoticeChanges();
private:
void enable();
void disable();
bool isEnabled();
QTemporaryDir dir;
QDir enableDir;
QFile enableFile;
};
SystemTest::SystemTest()
{
qputenv("HOME", dir.path().toUtf8());
enableDir.setPath(dir.path() + "/.config/ubuntu-system-settings");
enableFile.setFileName(enableDir.filePath("wizard-has-run"));
}
void SystemTest::enable()
{
enableFile.remove();
QCOMPARE(isEnabled(), true);
}
void SystemTest::disable()
{
enableDir.mkpath(".");
enableFile.open(QIODevice::WriteOnly);
enableFile.close();
QCOMPARE(isEnabled(), false);
}
bool SystemTest::isEnabled()
{
return !enableFile.exists();
}
void SystemTest::testEnable()
{
disable();
System system;
QVERIFY(!system.wizardEnabled());
system.setWizardEnabled(true);
QVERIFY(system.wizardEnabled());
QVERIFY(isEnabled());
}
void SystemTest::testDisable()
{
enable();
System system;
QVERIFY(system.wizardEnabled());
system.setWizardEnabled(false);
QVERIFY(!system.wizardEnabled());
QVERIFY(!isEnabled());
}
void SystemTest::testNoticeChanges()
{
enable();
System system;
QSignalSpy spy(&system, SIGNAL(wizardEnabledChanged()));
// System only guarantees its signals work correcty when using its own set
// methods (i.e. it won't necessarily notice if we modify the file behind
// the scenes). This is because watching all parent directories of the
// wizard-has-run file with QFileSystemWatcher is a nightmare and waste of
// resources for the corner case it is. So we'll just test the set method.
system.setWizardEnabled(false);
QTRY_COMPARE(spy.count(), 1);
system.setWizardEnabled(true);
QTRY_COMPARE(spy.count(), 2);
system.setWizardEnabled(false);
QTRY_COMPARE(spy.count(), 3);
system.setWizardEnabled(true);
QTRY_COMPARE(spy.count(), 4);
}
QTEST_MAIN(SystemTest)
#include "tst_system.moc"