/*! * \brief Unit tests for \ref ReaderConfigurationParser * * \copyright Copyright (c) 2017-2018 Governikus GmbH & Co. KG, Germany */ #include "ReaderConfigurationParser.h" #include using namespace governikus; class test_ReaderConfigurationEntryParser : public QObject { Q_OBJECT private Q_SLOTS: void matchPlatformCurrentSupported() { ReaderConfigurationParser::EntryParser parser(QJsonValue::Null); QByteArray content = R"( [{"os": "win", "min": "6.1"}, {"os": "mac", "min": "10.9"}, {"os": "unknown"}] )"; const auto& doc = QJsonDocument::fromJson(content); QVERIFY(!doc.isNull()); const auto& data = doc.array(); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion(QOperatingSystemVersion::Windows, 6, 0))); // Vista QVERIFY(parser.matchPlatform(data, QOperatingSystemVersion::Windows7)); QVERIFY(parser.matchPlatform(data, QOperatingSystemVersion::Windows8)); QVERIFY(parser.matchPlatform(data, QOperatingSystemVersion::Windows8_1)); QVERIFY(parser.matchPlatform(data, QOperatingSystemVersion::Windows10)); QVERIFY(parser.matchPlatform(data, QOperatingSystemVersion(QOperatingSystemVersion::Unknown, 1))); // linux QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion(QOperatingSystemVersion::MacOS, 9))); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion(QOperatingSystemVersion::MacOS, 10, 0))); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion(QOperatingSystemVersion::MacOS, 10, 8))); QVERIFY(parser.matchPlatform(data, QOperatingSystemVersion::OSXMavericks)); QVERIFY(parser.matchPlatform(data, QOperatingSystemVersion::OSXYosemite)); QVERIFY(parser.matchPlatform(data, QOperatingSystemVersion::OSXElCapitan)); QVERIFY(parser.matchPlatform(data, QOperatingSystemVersion::MacOSSierra)); #if (QT_VERSION >= QT_VERSION_CHECK(5, 9, 1)) QVERIFY(parser.matchPlatform(data, QOperatingSystemVersion::MacOSHighSierra)); #endif } void matchPlatformOtherOS() { ReaderConfigurationParser::EntryParser parser(QJsonValue::Null); QByteArray content = R"( [{"os": "win"}] )"; const auto& doc = QJsonDocument::fromJson(content); QVERIFY(!doc.isNull()); const auto& data = doc.array(); QVERIFY(parser.matchPlatform(data, QOperatingSystemVersion(QOperatingSystemVersion::Windows, 6, 0))); // Vista QVERIFY(parser.matchPlatform(data, QOperatingSystemVersion::Windows10)); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion(QOperatingSystemVersion::Unknown, 1))); // linux QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::OSXMavericks)); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::MacOSSierra)); } void matchPlatformMinMax() { ReaderConfigurationParser::EntryParser parser(QJsonValue::Null); QByteArray content = R"( [{"os": "mac", "min": "10.10", "max": "10.11"}] )"; const auto& doc = QJsonDocument::fromJson(content); QVERIFY(!doc.isNull()); const auto& data = doc.array(); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::Windows10)); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::OSXMavericks)); QVERIFY(parser.matchPlatform(data, QOperatingSystemVersion::OSXYosemite)); QVERIFY(parser.matchPlatform(data, QOperatingSystemVersion::OSXElCapitan)); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::MacOSSierra)); } void matchPlatformMultipleMinMax() { ReaderConfigurationParser::EntryParser parser(QJsonValue::Null); QByteArray content = R"( [{"os": "mac", "min": "10.10", "max": "10.10"}, {"os": "mac", "min": "10.13", "max": "10.13"}] )"; const auto& doc = QJsonDocument::fromJson(content); QVERIFY(!doc.isNull()); const auto& data = doc.array(); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::Windows10)); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::OSXMavericks)); QVERIFY(parser.matchPlatform(data, QOperatingSystemVersion::OSXYosemite)); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::OSXElCapitan)); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::MacOSSierra)); QVERIFY(parser.matchPlatform(data, QOperatingSystemVersion(QOperatingSystemVersion::MacOS, 10, 13))); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion(QOperatingSystemVersion::MacOS, 10, 14))); } void matchPlatformNothing() { ReaderConfigurationParser::EntryParser parser(QJsonValue::Null); QByteArray content = R"( [{"os": "typo"}, {"os": "typo", "min": "10.10", "max": "10.11"}] )"; const auto& doc = QJsonDocument::fromJson(content); QVERIFY(!doc.isNull()); const auto& data = doc.array(); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion(QOperatingSystemVersion::Unknown, 1))); // linux QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::Windows10)); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::OSXMavericks)); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::OSXYosemite)); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::OSXElCapitan)); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::MacOSSierra)); } void matchPlatformInsideVersion() { ReaderConfigurationParser::EntryParser parser(QJsonValue::Null); QByteArray content = R"( [{"os": "typo"}, {"os": "mac", "min": "10.10", "max": "10.10"}] )"; const auto& doc = QJsonDocument::fromJson(content); QVERIFY(!doc.isNull()); const auto& data = doc.array(); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::OSXMavericks)); QVERIFY(parser.matchPlatform(data, QOperatingSystemVersion::OSXYosemite)); auto macOs10_10_1 = QOperatingSystemVersion(QOperatingSystemVersion::MacOS, 10, 10, 1); QVERIFY(parser.matchPlatform(data, macOs10_10_1)); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::OSXElCapitan)); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::MacOSSierra)); } void matchPlatformInsideVersionWithZero() { ReaderConfigurationParser::EntryParser parser(QJsonValue::Null); QByteArray content = R"( [{"os": "typo"}, {"os": "mac", "min": "10.10", "max": "10.10.0"}] )"; const auto& doc = QJsonDocument::fromJson(content); QVERIFY(!doc.isNull()); const auto& data = doc.array(); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::OSXMavericks)); QVERIFY(parser.matchPlatform(data, QOperatingSystemVersion::OSXYosemite)); auto macOs10_10_1 = QOperatingSystemVersion(QOperatingSystemVersion::MacOS, 10, 10, 1); QVERIFY(!parser.matchPlatform(data, macOs10_10_1)); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::OSXElCapitan)); QVERIFY(!parser.matchPlatform(data, QOperatingSystemVersion::MacOSSierra)); } }; QTEST_GUILESS_MAIN(test_ReaderConfigurationEntryParser) #include "test_ReaderConfigurationEntryParser.moc"