mirror of https://github.com/qt/qtbase.git
Define macOS QOperatingSystemVersion constants using only major version
Otherwise comparisons of current > QOperatingSystemVersion::MacOSSonoma will trigger for 14.1 and above, instead of 15 and up. The expectation is that the constant represents the major version. [ChangeLog][macOS] QOperatingSystemVersion constants for macOS 11 and up are now represented with their major version only, and minor and patch versions unspecified, as documented. Task-number: QTBUG-107907 Pick-to: 6.10 6.9 6.8 6.5 Change-Id: I62dbac54f6b37b5797459c30c326706341b403a9 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
parent
4e246d74fe
commit
57ada89c04
|
@ -547,7 +547,7 @@ const QOperatingSystemVersion QOperatingSystemVersion::MacOSCatalina =
|
|||
\since 6.0
|
||||
*/
|
||||
const QOperatingSystemVersion QOperatingSystemVersion::MacOSBigSur =
|
||||
QOperatingSystemVersion(QOperatingSystemVersion::MacOS, 11, 0);
|
||||
QOperatingSystemVersion(QOperatingSystemVersion::MacOS, 11);
|
||||
|
||||
/*!
|
||||
\variable QOperatingSystemVersion::MacOSMonterey
|
||||
|
@ -555,7 +555,7 @@ const QOperatingSystemVersion QOperatingSystemVersion::MacOSBigSur =
|
|||
\since 6.3
|
||||
*/
|
||||
const QOperatingSystemVersion QOperatingSystemVersion::MacOSMonterey =
|
||||
QOperatingSystemVersion(QOperatingSystemVersion::MacOS, 12, 0);
|
||||
QOperatingSystemVersion(QOperatingSystemVersion::MacOS, 12);
|
||||
|
||||
/*!
|
||||
\variable QOperatingSystemVersion::MacOSVentura
|
||||
|
|
|
@ -142,9 +142,9 @@ public:
|
|||
#endif
|
||||
|
||||
// ### Qt7: Regroup with the rest below
|
||||
static constexpr QOperatingSystemVersionBase MacOSSonoma { QOperatingSystemVersionBase::MacOS, 14, 0 };
|
||||
static constexpr QOperatingSystemVersionBase MacOSSequoia { QOperatingSystemVersionBase::MacOS, 15, 0 };
|
||||
static constexpr QOperatingSystemVersionBase MacOSTahoe { QOperatingSystemVersionBase::MacOS, 26, 0 };
|
||||
static constexpr QOperatingSystemVersionBase MacOSSonoma { QOperatingSystemVersionBase::MacOS, 14 };
|
||||
static constexpr QOperatingSystemVersionBase MacOSSequoia { QOperatingSystemVersionBase::MacOS, 15 };
|
||||
static constexpr QOperatingSystemVersionBase MacOSTahoe { QOperatingSystemVersionBase::MacOS, 26 };
|
||||
static constexpr QOperatingSystemVersionBase Android14 { QOperatingSystemVersionBase::Android, 14, 0 };
|
||||
static constexpr QOperatingSystemVersionBase Windows11_23H2 { QOperatingSystemVersionBase::Windows, 10, 0, 22631 };
|
||||
static constexpr QOperatingSystemVersionBase Windows11_24H2 { QOperatingSystemVersionBase::Windows, 10, 0, 26100 };
|
||||
|
@ -216,8 +216,8 @@ public:
|
|||
static constexpr QOperatingSystemVersionBase MacOSHighSierra { QOperatingSystemVersionBase::MacOS, 10, 13 };
|
||||
static constexpr QOperatingSystemVersionBase MacOSMojave { QOperatingSystemVersionBase::MacOS, 10, 14 };
|
||||
static constexpr QOperatingSystemVersionBase MacOSCatalina { QOperatingSystemVersionBase::MacOS, 10, 15 };
|
||||
static constexpr QOperatingSystemVersionBase MacOSBigSur = { QOperatingSystemVersionBase::MacOS, 11, 0 };
|
||||
static constexpr QOperatingSystemVersionBase MacOSMonterey = { QOperatingSystemVersionBase::MacOS, 12, 0 };
|
||||
static constexpr QOperatingSystemVersionBase MacOSBigSur = { QOperatingSystemVersionBase::MacOS, 11 };
|
||||
static constexpr QOperatingSystemVersionBase MacOSMonterey = { QOperatingSystemVersionBase::MacOS, 12 };
|
||||
|
||||
static constexpr QOperatingSystemVersionBase AndroidJellyBean { QOperatingSystemVersionBase::Android, 4, 1 };
|
||||
static constexpr QOperatingSystemVersionBase AndroidJellyBean_MR1 { QOperatingSystemVersionBase::Android, 4, 2 };
|
||||
|
@ -251,7 +251,7 @@ public:
|
|||
static constexpr QOperatingSystemVersionBase Android12L { QOperatingSystemVersionBase::Android, 12, 0 };
|
||||
static constexpr QOperatingSystemVersionBase Android13 { QOperatingSystemVersionBase::Android, 13, 0 };
|
||||
|
||||
static constexpr QOperatingSystemVersionBase MacOSVentura { QOperatingSystemVersionBase::MacOS, 13, 0 };
|
||||
static constexpr QOperatingSystemVersionBase MacOSVentura { QOperatingSystemVersionBase::MacOS, 13 };
|
||||
|
||||
constexpr QOperatingSystemVersion(const QOperatingSystemVersionBase &osversion)
|
||||
: QOperatingSystemVersionUnexported(osversion) {}
|
||||
|
|
|
@ -21,6 +21,9 @@ private slots:
|
|||
void comparison2();
|
||||
|
||||
void mixedComparison();
|
||||
|
||||
void constantsSemantics_data();
|
||||
void constantsSemantics();
|
||||
};
|
||||
|
||||
void tst_QOperatingSystemVersion::construction_data()
|
||||
|
@ -250,5 +253,61 @@ void tst_QOperatingSystemVersion::mixedComparison()
|
|||
<= QOperatingSystemVersionBase(QOperatingSystemVersionBase::Windows, 10, 0));
|
||||
}
|
||||
|
||||
void tst_QOperatingSystemVersion::constantsSemantics_data()
|
||||
{
|
||||
QTest::addColumn<QOperatingSystemVersionBase>("referenceVersion");
|
||||
QTest::addColumn<int>("segmentCount");
|
||||
|
||||
// OSX/macOS 10.x
|
||||
QTest::newRow("Mavericks") << QOperatingSystemVersionBase(QOperatingSystemVersion::OSXMavericks) << 2;
|
||||
QTest::newRow("Yosemite") << QOperatingSystemVersionBase(QOperatingSystemVersion::OSXYosemite) << 2;
|
||||
QTest::newRow("El Capitan") << QOperatingSystemVersionBase(QOperatingSystemVersion::OSXElCapitan) << 2;
|
||||
QTest::newRow("Sierra") << QOperatingSystemVersionBase(QOperatingSystemVersion::MacOSSierra) << 2;
|
||||
QTest::newRow("High Sierra") << QOperatingSystemVersionBase(QOperatingSystemVersion::MacOSHighSierra) << 2;
|
||||
QTest::newRow("Mojave") << QOperatingSystemVersionBase(QOperatingSystemVersion::MacOSMojave) << 2;
|
||||
QTest::newRow("Catalina") << QOperatingSystemVersionBase(QOperatingSystemVersion::MacOSCatalina) << 2;
|
||||
|
||||
// macOS 11+
|
||||
QTest::newRow("Big Sur") << QOperatingSystemVersionBase(QOperatingSystemVersion::MacOSBigSur) << 1;
|
||||
QTest::newRow("Monterey") << QOperatingSystemVersionBase(QOperatingSystemVersion::MacOSMonterey) << 1;
|
||||
QTest::newRow("Ventura") << QOperatingSystemVersion::MacOSVentura << 1;
|
||||
QTest::newRow("Sonoma") << QOperatingSystemVersion::MacOSSonoma << 1;
|
||||
QTest::newRow("Sequoia") << QOperatingSystemVersion::MacOSSequoia << 1;
|
||||
QTest::newRow("Tahoe") << QOperatingSystemVersion::MacOSTahoe << 1;
|
||||
}
|
||||
|
||||
void tst_QOperatingSystemVersion::constantsSemantics()
|
||||
{
|
||||
QFETCH(QOperatingSystemVersionBase, referenceVersion);
|
||||
QFETCH(int, segmentCount);
|
||||
|
||||
QCOMPARE(referenceVersion.segmentCount(), segmentCount);
|
||||
|
||||
auto adjustedVersion = [&](QOperatingSystemVersionBase referenceVersion, int segment, int adjustment) {
|
||||
auto adjustedSegments = referenceVersion.version().segments();
|
||||
adjustedSegments[segment] += adjustment;
|
||||
return QOperatingSystemVersionBase(referenceVersion.type(), adjustedSegments.at(0),
|
||||
qMax(adjustedSegments.at(1), 0), qMax(adjustedSegments.at(2), 0));
|
||||
|
||||
};
|
||||
|
||||
// Increases or decreases of the significant version part should contribute to
|
||||
// a smaller or larger version
|
||||
for (int segment = 0; segment < referenceVersion.segmentCount(); ++segment) {
|
||||
auto smallerVersion = adjustedVersion(referenceVersion, segment, -1);
|
||||
QCOMPARE_LT(smallerVersion, referenceVersion);
|
||||
auto largerVersion = adjustedVersion(referenceVersion, segment, 1);
|
||||
QCOMPARE_GT(largerVersion, referenceVersion);
|
||||
}
|
||||
|
||||
// The non-significant parts of a version should never contribute to being
|
||||
// larger or smaller than a reference version's significant segments.
|
||||
for (int segment = referenceVersion.segmentCount(); segment < 3; ++segment) {
|
||||
auto largerInsignificantVersion = adjustedVersion(referenceVersion, segment, 1);
|
||||
QVERIFY(!(largerInsignificantVersion > referenceVersion));
|
||||
QVERIFY(!(largerInsignificantVersion < referenceVersion));
|
||||
}
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QOperatingSystemVersion)
|
||||
#include "tst_qoperatingsystemversion.moc"
|
||||
|
|
Loading…
Reference in New Issue