From 94cbafa832d42245bec279fd56ca4416d75c2ce2 Mon Sep 17 00:00:00 2001 From: Daniel Thor Kristjansson Date: Mon, 21 Jan 2013 13:25:30 -0500 Subject: [PATCH] Add unit testing for MythTimer. Refs #11255. --- mythtv/libs/libmythbase/test/.gitignore | 1 + .../libs/libmythbase/test/test_mythtimer.cpp | 3 + mythtv/libs/libmythbase/test/test_mythtimer.h | 112 ++++++++++++++++++ .../libs/libmythbase/test/test_mythtimer.pro | 14 +++ 4 files changed, 130 insertions(+) create mode 100644 mythtv/libs/libmythbase/test/.gitignore create mode 100644 mythtv/libs/libmythbase/test/test_mythtimer.cpp create mode 100644 mythtv/libs/libmythbase/test/test_mythtimer.h create mode 100644 mythtv/libs/libmythbase/test/test_mythtimer.pro diff --git a/mythtv/libs/libmythbase/test/.gitignore b/mythtv/libs/libmythbase/test/.gitignore new file mode 100644 index 00000000000..3c5edc79a02 --- /dev/null +++ b/mythtv/libs/libmythbase/test/.gitignore @@ -0,0 +1 @@ +test_mythtimer diff --git a/mythtv/libs/libmythbase/test/test_mythtimer.cpp b/mythtv/libs/libmythbase/test/test_mythtimer.cpp new file mode 100644 index 00000000000..97c5940e5d7 --- /dev/null +++ b/mythtv/libs/libmythbase/test/test_mythtimer.cpp @@ -0,0 +1,3 @@ +#include "test_mythtimer.h" + +QTEST_MAIN(TestMythTimer) diff --git a/mythtv/libs/libmythbase/test/test_mythtimer.h b/mythtv/libs/libmythbase/test/test_mythtimer.h new file mode 100644 index 00000000000..59466de74a1 --- /dev/null +++ b/mythtv/libs/libmythbase/test/test_mythtimer.h @@ -0,0 +1,112 @@ +/* + * Class TestMythTimer + * + * Copyright (C) Daniel Kristjansson 2013 + * + * This program 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; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include "mythtimer.h" + +class TestMythTimer: public QObject +{ + Q_OBJECT + + private slots: + void StartsNotRunning(void) + { + MythTimer t; + QVERIFY(!t.isRunning()); + } + + void StartsOnStart(void) + { + MythTimer t; + t.start(); + QVERIFY(t.isRunning()); + } + + void TimeElapsesAfterStart(void) + { + MythTimer t; + t.start(); + usleep(52 * 1000); + QVERIFY(t.elapsed() > 50); + } + + void TimeElapsesAfterRestart(void) + { + MythTimer t; + t.restart(); + usleep(52 * 1000); + QVERIFY(t.elapsed() > 50); + } + + void TimeDoesNotElapseImmediatelyAfterConstruction(void) + { + MythTimer t; + usleep(52 * 1000); + QVERIFY(t.elapsed() == 0); + } + + void TimeElapsesContinually(void) + { + MythTimer t; + t.start(); + usleep(52 * 1000); + QVERIFY(t.elapsed() > 50); + usleep(50 * 1000); + QVERIFY(t.elapsed() > 100); + } + + void TimeResetsOnRestart(void) + { + MythTimer t; + t.start(); + usleep(52 * 1000); + QVERIFY(t.restart() > 50); + usleep(52 * 1000); + QVERIFY(t.elapsed() > 50 && t.elapsed() < 75); + } + + void AddMSecsWorks(void) + { + MythTimer t; + t.start(); + t.addMSecs(-25); + usleep(52 * 1000); + QVERIFY(t.elapsed() > 25 && t.elapsed() < 30); + } + + void AddMSecsIsResetOnStart(void) + { + MythTimer t; + t.addMSecs(-25); + t.start(); + usleep(52 * 1000); + QVERIFY(t.elapsed() > 50); + } + + void AddMSecsIsResetOnRestart(void) + { + MythTimer t; + t.addMSecs(-25); + t.restart(); + usleep(52 * 1000); + QVERIFY(t.elapsed() > 50); + } +}; diff --git a/mythtv/libs/libmythbase/test/test_mythtimer.pro b/mythtv/libs/libmythbase/test/test_mythtimer.pro new file mode 100644 index 00000000000..ca5eef9ec66 --- /dev/null +++ b/mythtv/libs/libmythbase/test/test_mythtimer.pro @@ -0,0 +1,14 @@ +include ( ../../../settings.pro ) + +CONFIG += qtestlib +TEMPLATE = app +TARGET = test_mythtimer +DEPENDPATH += . .. +INCLUDEPATH += . .. + +# Input +HEADERS += test_mythtimer.h +SOURCES += test_mythtimer.cpp + +HEADERS += mythtimer.h +SOURCES += mythtimer.cpp