add modrinth pre-release support to flexVer implementation

extended the flexVer implementation to consider any space that is after
a numeric section as a pre-release.

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97 2026-04-01 19:16:29 +03:00
parent 5a0931d3cf
commit 8427626e56
No known key found for this signature in database
GPG key ID: 55EF5DA53DB36318
2 changed files with 33 additions and 5 deletions

View file

@ -181,8 +181,33 @@ class VersionTest : public QObject {
QCOMPARE(v1 > v2, !lessThan && !equal);
QCOMPARE(v1 == v2, equal);
}
void test_strict_weak_order()
{
// this tests the strict_weak_order
// https://en.cppreference.com/w/cpp/concepts/strict_weak_order.html
Version a("1.10 Pre-Release 1"); // this is a pre-relese is before b because ' ' is lower than '-'
Version b("1.10-pre1"); // this is a pre-release is before c that is an actual release
Version c("1.10");
auto r = [](const Version& a, const Version& b) { return a < b; };
auto e = [&r](const Version& a, const Version& b) { return !r(a, b) && !r(b, a); };
qCritical() << a << b << c;
// irreflexive
QCOMPARE(r(a, a), false);
QCOMPARE(r(b, b), false);
QCOMPARE(r(c, c), false);
// transitive
QCOMPARE(r(a, b), true);
QCOMPARE(r(b, c), true);
QCOMPARE(r(a, c), true);
// transitive equivalence
QCOMPARE(e(a, b) && e(b, c), e(a, c));
}
};
QTEST_GUILESS_MAIN(VersionTest)
#include "Version_test.moc"
#include "Version_test.moc"