From a4d6f58f3c81bd97bbd8715ed14fab3c5b51aeab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=BCrz?= Date: Thu, 31 Mar 2016 18:07:57 +0200 Subject: [PATCH] add test structure --- doc/images/state-based-rule.odg | Bin 0 -> 11932 bytes plugins/guh-generateplugininfo | 8 +- server/time/calendaritem.cpp | 1 - server/time/timemanager.cpp | 6 +- server/time/timemanager.h | 1 - tests/auto/auto.pro | 2 +- tests/auto/timemanager/testtimemanager.cpp | 86 +++++++++++++++++++++ tests/auto/timemanager/timemanager.pro | 6 ++ 8 files changed, 99 insertions(+), 11 deletions(-) create mode 100644 doc/images/state-based-rule.odg create mode 100644 tests/auto/timemanager/testtimemanager.cpp create mode 100644 tests/auto/timemanager/timemanager.pro diff --git a/doc/images/state-based-rule.odg b/doc/images/state-based-rule.odg new file mode 100644 index 0000000000000000000000000000000000000000..386c3cffacc3cde43e62768c2aad72b9a08ff345 GIT binary patch literal 11932 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 t`O7Mw)90UA=6`zrIUT$t(_eN=^*5 # +# Copyright (C) 2015-2016 Simon Stuerz # # Copyright (C) 2014 Michael Zanetti # # # -# This file is part of guh-cli. # +# This file is part of guh. # # # -# guh-cli is free software: you can redistribute it and/or modify # +# guh is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # # the Free Software Foundation, version 2 of the License. # # # -# guh-cli is distributed in the hope that it will be useful, # +# guh 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 General Public License for more details. # diff --git a/server/time/calendaritem.cpp b/server/time/calendaritem.cpp index 13254021..df5cb27c 100644 --- a/server/time/calendaritem.cpp +++ b/server/time/calendaritem.cpp @@ -198,7 +198,6 @@ bool CalendarItem::evaluateWeekly(const QDateTime &dateTime) const // and end of this calendar item from the previouse week return true; - } else if (dateTime >= startDateTime && dateTime < endDateTime) { // Return true if the current time is between start // and end of this calendar item diff --git a/server/time/timemanager.cpp b/server/time/timemanager.cpp index ce42516c..479cf28f 100644 --- a/server/time/timemanager.cpp +++ b/server/time/timemanager.cpp @@ -24,7 +24,6 @@ \ingroup rules \inmodule core - */ /*! \fn void guhserver::TimeManager::tick() @@ -70,12 +69,12 @@ QByteArray TimeManager::timeZone() const return m_timeZone.id(); } -/*! Sets the \a timeZone of this \l{TimeManager}. */ +/*! Sets the \a timeZone of this \l{TimeManager}. Allowed values according to the \l{http://www.iana.org/time-zones}{IANA database}. */ void TimeManager::setTimeZone(const QByteArray &timeZone) { if (!QTimeZone(timeZone).isValid()) { qCWarning(dcTimeManager()) << "Invalid time zone" << timeZone; - qCWarning(dcTimeManager()) << "Using default system timezone" << QTimeZone::systemTimeZoneId(); + qCWarning(dcTimeManager()) << "Using system time zone" << QTimeZone::systemTimeZoneId(); m_timeZone = QTimeZone(QTimeZone::systemTimeZoneId()); } else { qCDebug(dcTimeManager()) << "Set time zone" << timeZone; @@ -107,7 +106,6 @@ void TimeManager::guhTimeout() emit tick(); QDateTime currentDateTime = QDateTime::currentDateTimeUtc(); - //qCDebug(dcTimeManager) << "Time changed" << currentDateTime.toTimeZone(m_timeZone).time().toString("hh:mm:ss"); // Minute based guh time if (m_dateTime.time().minute() != currentDateTime.toTimeZone(m_timeZone).time().minute()) { diff --git a/server/time/timemanager.h b/server/time/timemanager.h index 26322857..3f730efe 100644 --- a/server/time/timemanager.h +++ b/server/time/timemanager.h @@ -51,7 +51,6 @@ signals: void dateChanged(const QDate ¤tDate); void timeChanged(const QTime ¤tTime); - private slots: void guhTimeout(); diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro index 523016d7..e6e59d47 100644 --- a/tests/auto/auto.pro +++ b/tests/auto/auto.pro @@ -17,5 +17,5 @@ SUBDIRS = versioning \ websocketserver \ logging \ restlogging \ - coap \ + timemanager \ diff --git a/tests/auto/timemanager/testtimemanager.cpp b/tests/auto/timemanager/testtimemanager.cpp new file mode 100644 index 00000000..7f9feb26 --- /dev/null +++ b/tests/auto/timemanager/testtimemanager.cpp @@ -0,0 +1,86 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * * + * Copyright (C) 2015 Simon Stuerz * + * Copyright (C) 2014 Michael Zanetti * + * * + * This file is part of guh. * + * * + * Guh is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, version 2 of the License. * + * * + * Guh 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 General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with guh. If not, see . * + * * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#include "guhtestbase.h" +#include "guhcore.h" +#include "time/timemanager.h" +#include "devicemanager.h" +#include "mocktcpserver.h" + +#include +#include +#include +#include + +using namespace guhserver; + +class TestTimeManager: public GuhTestBase +{ + Q_OBJECT + +private slots: + void changeTimeZone_data(); + void changeTimeZone(); + +}; + + + + +void TestTimeManager::changeTimeZone_data() +{ + QTest::addColumn("timeZoneId"); + QTest::addColumn("valid"); + + QTest::newRow("valid timezone: Asia/Tokyo") << QByteArray("Asia/Tokyo") << true; + QTest::newRow("valid timezone: America/Lima") << QByteArray("America/Lima") << true; + QTest::newRow("valid timezone: Africa/Harare") << QByteArray("Africa/Harare") << true; + QTest::newRow("invalid timezone: Mars/Diacria") << QByteArray("Mars/Diacria") << false; + QTest::newRow("invalid timezone: Moon/Kepler") << QByteArray("Moon/Kepler") << false; +} + +void TestTimeManager::changeTimeZone() +{ + QFETCH(QByteArray, timeZoneId); + QFETCH(bool, valid); + + QTimeZone currentTimeZone(GuhCore::instance()->timeManager()->timeZone()); + QTimeZone newTimeZone(timeZoneId); + + + QDateTime currentDateTime = GuhCore::instance()->timeManager()->currentDateTime(); + qDebug() << currentDateTime.toString(); + + GuhCore::instance()->timeManager()->setTimeZone(timeZoneId); + + QDateTime newDateTime = GuhCore::instance()->timeManager()->currentDateTime(); + qDebug() << newDateTime.toString(); + + int offsetOriginal = currentTimeZone.offsetFromUtc(currentDateTime); + int offsetNew = newTimeZone.offsetFromUtc(newDateTime); + + if (valid) + QVERIFY(offsetOriginal != offsetNew); + +} + +#include "testtimemanager.moc" +QTEST_MAIN(TestTimeManager) diff --git a/tests/auto/timemanager/timemanager.pro b/tests/auto/timemanager/timemanager.pro new file mode 100644 index 00000000..d8d26188 --- /dev/null +++ b/tests/auto/timemanager/timemanager.pro @@ -0,0 +1,6 @@ +TARGET = testtimemanager + +include(../../../guh.pri) +include(../autotests.pri) + +SOURCES += testtimemanager.cpp