AusweisApp2/test/qt/global/test_EnumHelper.cpp

163 lines
4.8 KiB
C++
Raw Normal View History

2017-07-03 09:30:10 +02:00
/*!
* 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"