/*! * \brief Unit tests for \ref VersionNumber. * * \copyright Copyright (c) 2016-2019 Governikus GmbH & Co. KG, Germany */ #include "VersionNumber.h" #include using namespace governikus; class test_VersionNumber : public QObject { Q_OBJECT private Q_SLOTS: void compare() { VersionNumber number1("1.2.3.4.5"); VersionNumber number2("1.2.3.4.5"); QCOMPARE(number1, number2); VersionNumber number3("4.5"); QVERIFY(number1 != number3); QVERIFY(number1 < number3); QVERIFY(number3 > number1); VersionNumber number4("1.12.0+123"); VersionNumber number5("1.12.0+124"); QVERIFY(number4 < number5); QVERIFY(number5 > number4); VersionNumber number6(""); QVERIFY(number1 != number6); VersionNumber number7("1.12.0+123-default-abc123"); VersionNumber number8("1.12.0+123-default-abc123"); QVERIFY(number7 == number8); QVERIFY(!(number7 < number8)); QVERIFY(!(number7 > number8)); QVERIFY(!(number8 < number7)); QVERIFY(!(number8 > number7)); VersionNumber number9("1.12.0+123-stable-xyz123"); QVERIFY(number7 != number9); QVERIFY(!(number7 < number9)); QVERIFY(!(number7 > number9)); QVERIFY(!(number9 < number7)); QVERIFY(!(number9 > number7)); VersionNumber number10("1.01.0+123-default-abc123"); VersionNumber number11("1.1.0+123-default-abc123"); QVERIFY(number10 == number11); QVERIFY(!(number10 < number11)); QVERIFY(!(number11 > number10)); } void parser() { VersionNumber number("1.10.3.8"); QCOMPARE(number.getVersionNumber().majorVersion(), 1); QCOMPARE(number.getVersionNumber().minorVersion(), 10); QCOMPARE(number.getVersionNumber().microVersion(), 3); VersionNumber numberSpace(" 1.20.0 "); QCOMPARE(numberSpace.getVersionNumber().majorVersion(), 1); QCOMPARE(numberSpace.getVersionNumber().minorVersion(), 20); QCOMPARE(numberSpace.getVersionNumber().microVersion(), 0); } void distance_data() { QTest::addColumn("distance"); QTest::newRow("1.99+432") << 432; QTest::newRow("1.99+98-default-et43t") << 98; QTest::newRow("1.99+1-stable") << 1; QTest::newRow("1.91.2.2.2.2") << -1; QTest::newRow("1.91.2.7+534533") << 534533; QTest::newRow("1.91.2.7+12++4243+2+2-default") << -1; QTest::newRow("1.91.2.7+12++4243+2+2default") << -1; } void distance() { QFETCH(int, distance); const auto& version = QString::fromLatin1(QTest::currentDataTag()); QCOMPARE(VersionNumber(version).getDistance(), distance); } void branch_data() { QTest::addColumn("branch"); QTest::newRow("1.99+432") << QString(); QTest::newRow("1.99+98-default-et43t") << QString("default"); QTest::newRow("1.99+1-stable") << QString("stable"); QTest::newRow("1.99+98-default-et43t+") << QString("default"); QTest::newRow("1.99+98-default-draft-et43t+") << QString("default"); } void branch() { QFETCH(QString, branch); const auto& version = QString::fromLatin1(QTest::currentDataTag()); QCOMPARE(VersionNumber(version).getBranch(), branch); } void revision_data() { QTest::addColumn("revision"); QTest::newRow("1.99+432") << QString(); QTest::newRow("1.99+98-default-et43t") << QString("et43t"); QTest::newRow("1.99+1-stable") << QString(); QTest::newRow("1.99+98-default-draft-et43t+") << QString("et43t+"); } void revision() { QFETCH(QString, revision); const auto& version = QString::fromLatin1(QTest::currentDataTag()); QCOMPARE(VersionNumber(version).getRevision(), revision); } void isDraft_data() { QTest::addColumn("draft"); QTest::newRow("1.5.0+16-default-secret") << true; QTest::newRow("1.6.0+1-draft-t34t53+") << true; QTest::newRow("1.6.0+12-stable-abc123") << false; } void isDraft() { QFETCH(bool, draft); const auto& version = QString::fromLatin1(QTest::currentDataTag()); QCOMPARE(VersionNumber(version).isDraft(), draft); } void isDeveloper_data() { QTest::addColumn("developer"); QTest::newRow("") << true; QTest::newRow("1.5.0+16-default-secret") << true; QTest::newRow("1.6.0+1-draft-t34t53+") << true; QTest::newRow("1.5.0") << true; QTest::newRow("1.6.0") << false; QTest::newRow("1.5.0+0") << true; QTest::newRow("1.6.0+0") << true; QTest::newRow("1.6.0+422312-stable-2143eg435") << true; QTest::newRow("1.9.0+422312-stable-2143eg435") << true; QTest::newRow("3.28.1") << false; QTest::newRow("3.28.1+23-default") << true; QTest::newRow(" 3.28.1+23-default ") << true; QTest::newRow(" 1.10.0 ") << false; } void isDeveloper() { QFETCH(bool, developer); const auto& version = QString::fromLatin1(QTest::currentDataTag()); QCOMPARE(VersionNumber(version).isDeveloperVersion(), developer); } void toString() { VersionNumber number1("1.6.0+422312-stable-2143eg435"); QCOMPARE(number1.getVersionNumber().toString(), QString("1.6.0")); } }; QTEST_GUILESS_MAIN(test_VersionNumber) #include "test_VersionNumber.moc"