rbutil: Update and fix unit tests.

- Fix changed dependencies and provide real stubs.
- Update to use QTest global data for test table, so individual test
  vector entries show up as individual tests. That way a single
  comparison failing doesn't make all appear as failed and provide
  better indication what went wrong.

Change-Id: I69681c3acd5ceceb4c8ceb1feb341e90a65dd603
This commit is contained in:
Dominik Riebeling 2020-11-29 21:04:08 +01:00
parent b064a6cbb5
commit 3300815c44
3 changed files with 76 additions and 25 deletions

View file

@ -0,0 +1,31 @@
#include "playerbuildinfo.h"
#include "rbsettings.h"
#include "rockboxinfo.h"
// not used by the test, just to make things compile.
QVariant RbSettings::value(RbSettings::UserSettings setting)
{
(void)setting;
return QVariant();
}
// not used in the test. If used the test will crash!
PlayerBuildInfo* PlayerBuildInfo::instance()
{
return nullptr;
}
QVariant PlayerBuildInfo::value(PlayerBuildInfo::DeviceInfo item, QString target)
{
(void)item;
(void)target;
return QVariant();
}
RockboxInfo::RockboxInfo(QString, QString)
{
}

View file

@ -28,17 +28,17 @@ class TestVersionCompare : public QObject
Q_OBJECT Q_OBJECT
private slots: private slots:
void testCompare(); void testCompare();
void testCompare_data();
void testTrim(); void testTrim();
void testTrim_data();
}; };
struct compvector { struct {
const char* first; const char* first;
const char* second; const char* second;
const int expected; const int expected;
}; } const compdata[] =
const struct compvector compdata[] =
{ {
{ "1.2.3", "1.2.3 ", 0 }, { "1.2.3", "1.2.3 ", 0 },
{ "1.2.3", " 1.2.3", 0 }, { "1.2.3", " 1.2.3", 0 },
@ -74,12 +74,10 @@ const struct compvector compdata[] =
{ "prog-1.2a-64bit.tar.bz2","prog-1.2.3-64bit.tar.bz2", 1 }, { "prog-1.2a-64bit.tar.bz2","prog-1.2.3-64bit.tar.bz2", 1 },
}; };
struct trimvector { struct {
const char* input; const char* input;
const QString expected; const QString expected;
}; } const trimdata[] =
const struct trimvector trimdata[] =
{ {
{ "prog-1.2-64bit.tar.bz2", "1.2" }, { "prog-1.2-64bit.tar.bz2", "1.2" },
{ "prog-1.2.tar.bz2", "1.2" }, { "prog-1.2.tar.bz2", "1.2" },
@ -95,24 +93,47 @@ const struct trimvector trimdata[] =
{ "prog-1.2a-64bit.tar.bz2","1.2a" }, { "prog-1.2a-64bit.tar.bz2","1.2a" },
}; };
void TestVersionCompare::testCompare()
void TestVersionCompare::testCompare_data()
{ {
unsigned int i; QTest::addColumn<QString>("first");
for(i = 0; i < sizeof(compdata) / sizeof(struct compvector); i++) { QTest::addColumn<QString>("second");
QCOMPARE(Utils::compareVersionStrings(compdata[i].first, QTest::addColumn<int>("expected");
compdata[i].second), compdata[i].expected); for(size_t i = 0; i < sizeof(compdata) / sizeof(compdata[0]); i++) {
// inverse test possible because function return values are symmetrical. QTest::newRow("") << compdata[i].first << compdata[i].second << compdata[i].expected;
if(compdata[i].expected != 0)
QCOMPARE(Utils::compareVersionStrings(compdata[i].second,
compdata[i].first), -compdata[i].expected);
} }
} }
void TestVersionCompare::testCompare()
{
QFETCH(QString, first);
QFETCH(QString, second);
QFETCH(int, expected);
QCOMPARE(Utils::compareVersionStrings(first, second), expected);
if(expected != 0) {
QCOMPARE(Utils::compareVersionStrings(second, first), -expected);
}
}
void TestVersionCompare::testTrim_data()
{
QTest::addColumn<QString>("input");
QTest::addColumn<QString>("expected");
for(size_t i = 0; i < sizeof(trimdata) / sizeof(trimdata[0]); i++) {
QTest::newRow("") << trimdata[i].input << trimdata[i].expected;
}
}
void TestVersionCompare::testTrim() void TestVersionCompare::testTrim()
{ {
for(size_t i = 0; i < sizeof(trimdata) / sizeof(struct trimvector); i++) { QFETCH(QString, input);
QCOMPARE(Utils::trimVersionString(trimdata[i].input), trimdata[i].expected); QFETCH(QString, expected);
}
QCOMPARE(Utils::trimVersionString(input), expected);
} }

View file

@ -16,7 +16,8 @@
# Test: Utils::compareVersionStrings(). # Test: Utils::compareVersionStrings().
# #
include(tests.pri)
QT += testlib
TEMPLATE = app TEMPLATE = app
TARGET = test-compareversion TARGET = test-compareversion
@ -25,14 +26,12 @@ INCLUDEPATH += . ../base stubs
# Input # Input
SOURCES += \ SOURCES += \
test-compareversion.cpp \ test-compareversion.cpp \
../base/rbsettings.cpp \ stubs/stubs-compareversion.cpp \
../base/rockboxinfo.cpp \
../base/systeminfo.cpp \
../base/utils.cpp ../base/utils.cpp
HEADERS += \ HEADERS += \
../base/rbsettings.h \ ../base/rbsettings.h \
../base/playerbuildinfo.h \
../base/rockboxinfo.h \ ../base/rockboxinfo.h \
../base/systeminfo.h \
../base/utils.h ../base/utils.h