forked from qt-creator/qt-creator
Consolidate version handling in imports. It has drawbacks if we copy code to different places in our code base. Having tests for the version conversion has advantages too. The invalid version has not anymore using -1 but the maximum integer as indicator because an empty version is higher than any other version. Change-Id: I8608b9509660f4253e8e5ba7397d964defe35e51 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
341 lines
6.9 KiB
C++
341 lines
6.9 KiB
C++
// Copyright (C) 2023 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
|
|
|
#include "googletest.h"
|
|
|
|
#include <import.h>
|
|
|
|
namespace {
|
|
|
|
TEST(Import, ParseVersion)
|
|
{
|
|
auto import = QmlDesigner::Import::createLibraryImport("Qml", "6.5");
|
|
|
|
auto version = import.toVersion();
|
|
|
|
ASSERT_THAT(version, FieldsAre(6, 5));
|
|
}
|
|
|
|
TEST(Import, ParseMajorVersion)
|
|
{
|
|
auto import = QmlDesigner::Import::createLibraryImport("Qml", "6.5");
|
|
|
|
auto version = import.majorVersion();
|
|
|
|
ASSERT_THAT(version, 6);
|
|
}
|
|
|
|
TEST(Import, MajorVersionIsInvalidForEmptyString)
|
|
{
|
|
auto import = QmlDesigner::Import::createLibraryImport("Qml");
|
|
|
|
auto version = import.majorVersion();
|
|
|
|
ASSERT_THAT(version, -1);
|
|
}
|
|
|
|
TEST(Import, MajorVersionIsInvalidForBrokenString)
|
|
{
|
|
auto import = QmlDesigner::Import::createLibraryImport("Qml", "6,5");
|
|
|
|
auto version = import.majorVersion();
|
|
|
|
ASSERT_THAT(version, -1);
|
|
}
|
|
|
|
TEST(Import, ParseMinorVersion)
|
|
{
|
|
auto import = QmlDesigner::Import::createLibraryImport("Qml", "6.5");
|
|
|
|
auto version = import.minorVersion();
|
|
|
|
ASSERT_THAT(version, 5);
|
|
}
|
|
|
|
TEST(Import, MinorVersionIsInvalidForEmptyString)
|
|
{
|
|
auto import = QmlDesigner::Import::createLibraryImport("Qml");
|
|
|
|
auto version = import.minorVersion();
|
|
|
|
ASSERT_THAT(version, -1);
|
|
}
|
|
|
|
TEST(Import, MinorVersionIsInvalidForBrokenString)
|
|
{
|
|
auto import = QmlDesigner::Import::createLibraryImport("Qml", "6,5");
|
|
|
|
auto version = import.minorVersion();
|
|
|
|
ASSERT_THAT(version, -1);
|
|
}
|
|
|
|
TEST(Import, VersionIsNotEmpty)
|
|
{
|
|
auto import = QmlDesigner::Import::createLibraryImport("Qml", "6.5");
|
|
|
|
auto version = import.toVersion();
|
|
|
|
ASSERT_FALSE(version.isEmpty());
|
|
}
|
|
|
|
TEST(Import, BrokenVersionStringIsEmptyVersion)
|
|
{
|
|
auto import = QmlDesigner::Import::createLibraryImport("Qml", "6");
|
|
|
|
auto version = import.toVersion();
|
|
|
|
ASSERT_TRUE(version.isEmpty());
|
|
}
|
|
|
|
TEST(Import, EmptyVersionStringIsEmptyVersion)
|
|
{
|
|
auto import = QmlDesigner::Import::createLibraryImport("Qml");
|
|
|
|
auto version = import.toVersion();
|
|
|
|
ASSERT_TRUE(version.isEmpty());
|
|
}
|
|
|
|
TEST(Import, SameVersionsAreEqual)
|
|
{
|
|
QmlDesigner::Version version1{6, 5};
|
|
QmlDesigner::Version version2{6, 5};
|
|
|
|
bool isEqual = version1 == version2;
|
|
|
|
ASSERT_TRUE(isEqual);
|
|
}
|
|
|
|
TEST(Import, InvalidVersionsAreEqual)
|
|
{
|
|
QmlDesigner::Version version1;
|
|
QmlDesigner::Version version2;
|
|
|
|
bool isEqual = version1 == version2;
|
|
|
|
ASSERT_TRUE(isEqual);
|
|
}
|
|
|
|
TEST(Import, DifferentMinorVersionsAreNotEqual)
|
|
{
|
|
QmlDesigner::Version version1{6, 4};
|
|
QmlDesigner::Version version2{6, 5};
|
|
|
|
bool isEqual = version1 == version2;
|
|
|
|
ASSERT_FALSE(isEqual);
|
|
}
|
|
|
|
TEST(Import, DifferentMajorVersionsAreNotEqual)
|
|
{
|
|
QmlDesigner::Version version1{5, 5};
|
|
QmlDesigner::Version version2{6, 5};
|
|
|
|
bool isEqual = version1 == version2;
|
|
|
|
ASSERT_FALSE(isEqual);
|
|
}
|
|
|
|
TEST(Import, LessMinorVersionsAreLess)
|
|
{
|
|
QmlDesigner::Version version1{6, 4};
|
|
QmlDesigner::Version version2{6, 5};
|
|
|
|
bool isLess = version1 < version2;
|
|
|
|
ASSERT_TRUE(isLess);
|
|
}
|
|
|
|
TEST(Import, LessMajorVersionsAreLess)
|
|
{
|
|
QmlDesigner::Version version1{5, 15};
|
|
QmlDesigner::Version version2{6, 5};
|
|
|
|
bool isLess = version1 < version2;
|
|
|
|
ASSERT_TRUE(isLess);
|
|
}
|
|
|
|
TEST(Import, SameVersionsAreNotLess)
|
|
{
|
|
QmlDesigner::Version version1{6, 5};
|
|
QmlDesigner::Version version2{6, 5};
|
|
|
|
bool isLess = version1 < version2;
|
|
|
|
ASSERT_FALSE(isLess);
|
|
}
|
|
|
|
TEST(Import, EmptyVersionIsNotLess)
|
|
{
|
|
QmlDesigner::Version version1;
|
|
QmlDesigner::Version version2{6, 5};
|
|
|
|
bool isLess = version1 < version2;
|
|
|
|
ASSERT_FALSE(isLess);
|
|
}
|
|
|
|
TEST(Import, NonEmptyVersionIsIsLessThanEmptyVersion)
|
|
{
|
|
QmlDesigner::Version version1{6, 5};
|
|
QmlDesigner::Version version2;
|
|
|
|
bool isLess = version1 < version2;
|
|
|
|
ASSERT_TRUE(isLess);
|
|
}
|
|
|
|
TEST(Import, GreaterMinorVersionsAreGreater)
|
|
{
|
|
QmlDesigner::Version version1{6, 6};
|
|
QmlDesigner::Version version2{6, 5};
|
|
|
|
bool isGreater = version1 > version2;
|
|
|
|
ASSERT_TRUE(isGreater);
|
|
}
|
|
|
|
TEST(Import, GreaterMajorVersionsAreGreater)
|
|
{
|
|
QmlDesigner::Version version1{6, 5};
|
|
QmlDesigner::Version version2{5, 15};
|
|
|
|
bool isGreater = version1 > version2;
|
|
|
|
ASSERT_TRUE(isGreater);
|
|
}
|
|
|
|
TEST(Import, SameVersionsAreNotGreater)
|
|
{
|
|
QmlDesigner::Version version1{6, 5};
|
|
QmlDesigner::Version version2{6, 5};
|
|
|
|
bool isGreater = version1 > version2;
|
|
|
|
ASSERT_FALSE(isGreater);
|
|
}
|
|
|
|
TEST(Import, EmptyVersionIsGreater)
|
|
{
|
|
QmlDesigner::Version version1;
|
|
QmlDesigner::Version version2{6, 5};
|
|
|
|
bool isGreater = version1 > version2;
|
|
|
|
ASSERT_TRUE(isGreater);
|
|
}
|
|
|
|
TEST(Import, NonEmptyVersionIsIsNotGreaterThanEmptyVersion)
|
|
{
|
|
QmlDesigner::Version version1{6, 5};
|
|
QmlDesigner::Version version2;
|
|
|
|
bool isGreater = version1 > version2;
|
|
|
|
ASSERT_FALSE(isGreater);
|
|
}
|
|
|
|
TEST(Import, LessEqualMinorVersionsAreLessEqual)
|
|
{
|
|
QmlDesigner::Version version1{6, 4};
|
|
QmlDesigner::Version version2{6, 5};
|
|
|
|
bool isLessEqual = version1 <= version2;
|
|
|
|
ASSERT_TRUE(isLessEqual);
|
|
}
|
|
|
|
TEST(Import, LessqualMajorVersionsAreLessqual)
|
|
{
|
|
QmlDesigner::Version version1{5, 15};
|
|
QmlDesigner::Version version2{6, 5};
|
|
|
|
bool isLessEqual = version1 <= version2;
|
|
|
|
ASSERT_TRUE(isLessEqual);
|
|
}
|
|
|
|
TEST(Import, SameVersionsAreLessqual)
|
|
{
|
|
QmlDesigner::Version version1{6, 5};
|
|
QmlDesigner::Version version2{6, 5};
|
|
|
|
bool isLessEqual = version1 <= version2;
|
|
|
|
ASSERT_TRUE(isLessEqual);
|
|
}
|
|
|
|
TEST(Import, EmptyVersionIsNotLessqual)
|
|
{
|
|
QmlDesigner::Version version1;
|
|
QmlDesigner::Version version2{6, 5};
|
|
|
|
bool isLessEqual = version1 <= version2;
|
|
|
|
ASSERT_FALSE(isLessEqual);
|
|
}
|
|
|
|
TEST(Import, NonEmptyVersionIsIsLessqualThanEmptyVersion)
|
|
{
|
|
QmlDesigner::Version version1{6, 5};
|
|
QmlDesigner::Version version2;
|
|
|
|
bool isLessEqual = version1 <= version2;
|
|
|
|
ASSERT_TRUE(isLessEqual);
|
|
}
|
|
|
|
TEST(Import, GreaterEqualMinorVersionsAreGreaterEqual)
|
|
{
|
|
QmlDesigner::Version version1{6, 6};
|
|
QmlDesigner::Version version2{6, 5};
|
|
|
|
bool isGreaterEqual = version1 >= version2;
|
|
|
|
ASSERT_TRUE(isGreaterEqual);
|
|
}
|
|
|
|
TEST(Import, GreaterEqualMajorVersionsAreGreaterEqual)
|
|
{
|
|
QmlDesigner::Version version1{6, 5};
|
|
QmlDesigner::Version version2{5, 15};
|
|
|
|
bool isGreaterEqual = version1 >= version2;
|
|
|
|
ASSERT_TRUE(isGreaterEqual);
|
|
}
|
|
|
|
TEST(Import, SameVersionsAreGreaterEqual)
|
|
{
|
|
QmlDesigner::Version version1{6, 5};
|
|
QmlDesigner::Version version2{6, 5};
|
|
|
|
bool isGreaterEqual = version1 >= version2;
|
|
|
|
ASSERT_TRUE(isGreaterEqual);
|
|
}
|
|
|
|
TEST(Import, EmptyVersionIsGreaterEqual)
|
|
{
|
|
QmlDesigner::Version version1;
|
|
QmlDesigner::Version version2{6, 5};
|
|
|
|
bool isGreaterEqual = version1 >= version2;
|
|
|
|
ASSERT_TRUE(isGreaterEqual);
|
|
}
|
|
|
|
TEST(Import, NonEmptyVersionIsIsNotGreaterEqualThanEmptyVersion)
|
|
{
|
|
QmlDesigner::Version version1{6, 5};
|
|
QmlDesigner::Version version2;
|
|
|
|
bool isGreaterEqual = version1 >= version2;
|
|
|
|
ASSERT_FALSE(isGreaterEqual);
|
|
}
|
|
|
|
} // namespace
|