163 lines
4.8 KiB
C++
163 lines
4.8 KiB
C++
|
/*!
|
||
|
* test_EnumHelper.h
|
||
|
*
|
||
|
* \brief Unit tests for EnumHelper.
|
||
|
*
|
||
|
* \copyright Copyright (c) 2014 Governikus GmbH & Co. KG
|
||
|
*/
|
||
|
|
||
|
#include "EnumHelper.h"
|
||
|
#include "LogHandler.h"
|
||
|
|
||
|
#include <QtCore>
|
||
|
#include <QtTest>
|
||
|
|
||
|
using namespace governikus;
|
||
|
namespace governikus
|
||
|
{
|
||
|
defineEnumType(TestEnum1, FIRST, SECOND, THIRD)
|
||
|
|
||
|
defineEnumType(TestEnum2, FIRST = 0xff, SECOND = 0x01, THIRD = 0xaa)
|
||
|
}
|
||
|
|
||
|
class test_EnumHelper
|
||
|
: public QObject
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
|
||
|
private Q_SLOTS:
|
||
|
void initTestCase()
|
||
|
{
|
||
|
LogHandler::getInstance().init();
|
||
|
}
|
||
|
|
||
|
|
||
|
void cleanup()
|
||
|
{
|
||
|
LogHandler::getInstance().resetBacklog();
|
||
|
}
|
||
|
|
||
|
|
||
|
void operatorEquals()
|
||
|
{
|
||
|
QVERIFY(0xff == TestEnum2::FIRST);
|
||
|
QVERIFY(0xff != TestEnum2::SECOND);
|
||
|
|
||
|
QVERIFY(!(0xff != TestEnum2::FIRST));
|
||
|
QVERIFY(!(0xff == TestEnum2::SECOND));
|
||
|
}
|
||
|
|
||
|
|
||
|
void operatorString()
|
||
|
{
|
||
|
QString str = "this is a dummy: ";
|
||
|
str += TestEnum1::FIRST;
|
||
|
QCOMPARE(str, QStringLiteral("this is a dummy: FIRST"));
|
||
|
|
||
|
QString str2 = "other text" + TestEnum1::FIRST + str + TestEnum1::SECOND + " test";
|
||
|
QCOMPARE(str, QStringLiteral("this is a dummy: FIRST"));
|
||
|
QCOMPARE(str2, QStringLiteral("other textFIRSTthis is a dummy: FIRSTSECOND test"));
|
||
|
}
|
||
|
|
||
|
|
||
|
void operatorDebug()
|
||
|
{
|
||
|
QSignalSpy spy(&LogHandler::getInstance(), &LogHandler::fireLog);
|
||
|
qDebug() << TestEnum1::FIRST;
|
||
|
|
||
|
QCOMPARE(spy.count(), 1);
|
||
|
auto result = spy.takeFirst();
|
||
|
QVERIFY(result.at(0).toString().endsWith("\"FIRST\"\n"));
|
||
|
}
|
||
|
|
||
|
|
||
|
void allGetter()
|
||
|
{
|
||
|
QCOMPARE(Enum<TestEnum1>::getCount(), 3);
|
||
|
QCOMPARE(Enum<TestEnum1>::getName(), QStringLiteral("TestEnum1"));
|
||
|
QCOMPARE(Enum<TestEnum1>::getName(TestEnum1::FIRST), QStringLiteral("FIRST"));
|
||
|
|
||
|
TestEnum1 badEnumValue = static_cast<TestEnum1>(6);
|
||
|
QCOMPARE(Enum<TestEnum1>::getName(badEnumValue), QStringLiteral("UNKNOWN(0x6)"));
|
||
|
badEnumValue = static_cast<TestEnum1>(255);
|
||
|
QCOMPARE(Enum<TestEnum1>::getName(badEnumValue), QStringLiteral("UNKNOWN(0xff)"));
|
||
|
badEnumValue = static_cast<TestEnum1>(365);
|
||
|
QCOMPARE(Enum<TestEnum1>::getName(badEnumValue), QStringLiteral("UNKNOWN(0x16d)"));
|
||
|
badEnumValue = static_cast<TestEnum1>(2147483647);
|
||
|
QCOMPARE(Enum<TestEnum1>::getName(badEnumValue), QStringLiteral("UNKNOWN(0x7fffffff)"));
|
||
|
|
||
|
QCOMPARE(EnumTestEnum1::getCount(), 3);
|
||
|
QCOMPARE(EnumTestEnum1::getName(), QStringLiteral("TestEnum1"));
|
||
|
QCOMPARE(EnumTestEnum1::getName(TestEnum1::SECOND), QStringLiteral("SECOND"));
|
||
|
|
||
|
QCOMPARE(EnumTestEnum1::getName(EnumTestEnum1::TestEnum1::THIRD), QStringLiteral("THIRD"));
|
||
|
|
||
|
QCOMPARE(getEnumName(TestEnum1::SECOND), QStringLiteral("SECOND"));
|
||
|
QCOMPARE(getEnumName(EnumTestEnum1::TestEnum1::SECOND), QStringLiteral("SECOND"));
|
||
|
}
|
||
|
|
||
|
|
||
|
void list()
|
||
|
{
|
||
|
const QVector<TestEnum2>& list1 = Enum<TestEnum2>::getList();
|
||
|
QCOMPARE(list1.size(), 3);
|
||
|
|
||
|
const QVector<TestEnum2>& list2 = EnumTestEnum2::getList();
|
||
|
QCOMPARE(list2.size(), 3);
|
||
|
|
||
|
QCOMPARE(list1, list2);
|
||
|
QVERIFY(&list1 == &list2);
|
||
|
|
||
|
QCOMPARE(list1[0], TestEnum2::FIRST);
|
||
|
QCOMPARE(list1[1], TestEnum2::SECOND);
|
||
|
QCOMPARE(list1[2], TestEnum2::THIRD);
|
||
|
}
|
||
|
|
||
|
|
||
|
void isValue()
|
||
|
{
|
||
|
QVERIFY(!Enum<TestEnum1>::isValue(static_cast<int>(999)));
|
||
|
QVERIFY(Enum<TestEnum1>::isValue(static_cast<int>(0)));
|
||
|
|
||
|
QVERIFY(!EnumTestEnum2::isValue(static_cast<int>(0xbb)));
|
||
|
QVERIFY(EnumTestEnum2::isValue(static_cast<int>(0xFF)));
|
||
|
QVERIFY(EnumTestEnum2::isValue(static_cast<int>(0xaa)));
|
||
|
|
||
|
QVERIFY(!Enum<TestEnum1>::isValue(char(999)));
|
||
|
QVERIFY(Enum<TestEnum1>::isValue(char(0)));
|
||
|
|
||
|
QVERIFY(!EnumTestEnum2::isValue(char(0xbb)));
|
||
|
QVERIFY(EnumTestEnum2::isValue(char(0xff)));
|
||
|
QVERIFY(EnumTestEnum2::isValue(char(0xaa)));
|
||
|
}
|
||
|
|
||
|
|
||
|
void fromString()
|
||
|
{
|
||
|
QCOMPARE(EnumTestEnum1::fromString("SECOND", TestEnum1::THIRD), TestEnum1::SECOND);
|
||
|
QVERIFY(EnumTestEnum1::fromString("SECOND", TestEnum1::THIRD) != TestEnum1::FIRST);
|
||
|
|
||
|
QCOMPARE(EnumTestEnum1::fromString("FIRST", TestEnum1::THIRD), TestEnum1::FIRST);
|
||
|
QVERIFY(EnumTestEnum1::fromString("FIRST", TestEnum1::THIRD) != TestEnum1::SECOND);
|
||
|
|
||
|
QVERIFY(EnumTestEnum1::fromString("first", TestEnum1::THIRD) != TestEnum1::FIRST);
|
||
|
QVERIFY(EnumTestEnum1::fromString("second", TestEnum1::THIRD) != TestEnum1::SECOND);
|
||
|
|
||
|
QVERIFY(EnumTestEnum1::fromString("first", TestEnum1::THIRD) != TestEnum1::SECOND);
|
||
|
QVERIFY(EnumTestEnum1::fromString("second", TestEnum1::THIRD) != TestEnum1::FIRST);
|
||
|
|
||
|
QCOMPARE(Enum<TestEnum1>::fromString("abc", TestEnum1::THIRD), TestEnum1::THIRD);
|
||
|
QCOMPARE(EnumTestEnum1::fromString("abc", TestEnum1::THIRD), TestEnum1::THIRD);
|
||
|
QVERIFY(EnumTestEnum1::fromString("FIRST", TestEnum1::THIRD) != TestEnum1::THIRD);
|
||
|
|
||
|
QString value = "FIRST";
|
||
|
QVERIFY(EnumTestEnum1::fromString(value, TestEnum1::THIRD) != TestEnum1::THIRD);
|
||
|
QVERIFY(Enum<TestEnum1>::fromString(value, TestEnum1::THIRD) != TestEnum1::THIRD);
|
||
|
}
|
||
|
|
||
|
|
||
|
};
|
||
|
|
||
|
QTEST_GUILESS_MAIN(test_EnumHelper)
|
||
|
#include "test_EnumHelper.moc"
|