/*! * test_EnumHelper.h * * \brief Unit tests for EnumHelper. * * \copyright Copyright (c) 2014 Governikus GmbH & Co. KG */ #include "EnumHelper.h" #include "LogHandler.h" #include #include 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::getCount(), 3); QCOMPARE(Enum::getName(), QStringLiteral("TestEnum1")); QCOMPARE(Enum::getName(TestEnum1::FIRST), QStringLiteral("FIRST")); TestEnum1 badEnumValue = static_cast(6); QCOMPARE(Enum::getName(badEnumValue), QStringLiteral("UNKNOWN(0x6)")); badEnumValue = static_cast(255); QCOMPARE(Enum::getName(badEnumValue), QStringLiteral("UNKNOWN(0xff)")); badEnumValue = static_cast(365); QCOMPARE(Enum::getName(badEnumValue), QStringLiteral("UNKNOWN(0x16d)")); badEnumValue = static_cast(2147483647); QCOMPARE(Enum::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& list1 = Enum::getList(); QCOMPARE(list1.size(), 3); const QVector& 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::isValue(static_cast(999))); QVERIFY(Enum::isValue(static_cast(0))); QVERIFY(!EnumTestEnum2::isValue(static_cast(0xbb))); QVERIFY(EnumTestEnum2::isValue(static_cast(0xFF))); QVERIFY(EnumTestEnum2::isValue(static_cast(0xaa))); QVERIFY(!Enum::isValue(char(999))); QVERIFY(Enum::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::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::fromString(value, TestEnum1::THIRD) != TestEnum1::THIRD); } }; QTEST_GUILESS_MAIN(test_EnumHelper) #include "test_EnumHelper.moc"