Files
qt-creator/tests/unit/unittest/import-test.cpp
Marco Bubke 4be3f6b5e9 QmlDesigner: Improve version handling
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>
2023-05-08 11:35:59 +00:00

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