File indexing completed on 2026-10-29 08:25:02
0001
0002
0003
0004
0005
0006 #include <algorithms/version.h>
0007
0008 #include <catch2/catch_test_macros.hpp>
0009 #include <fmt/format.h>
0010
0011 using namespace algorithms;
0012
0013
0014 #if !defined(ALGORITHMS_VERSION) || ALGORITHMS_VERSION < ALGORITHMS_VERSION_CODE(2, 1, 0)
0015 #error "ALGORITHMS_VERSION must be at least 2.1.0"
0016 #endif
0017
0018 TEST_CASE("Version macros and constants agree", "[version]") {
0019 STATIC_CHECK(versionMajor == ALGORITHMS_VERSION_MAJOR);
0020 STATIC_CHECK(versionMinor == ALGORITHMS_VERSION_MINOR);
0021 STATIC_CHECK(versionPatch == ALGORITHMS_VERSION_PATCH);
0022 STATIC_CHECK(versionString == ALGORITHMS_VERSION_STRING);
0023 CHECK(fmt::format("{}.{}.{}", versionMajor, versionMinor, versionPatch) == versionString);
0024 }
0025
0026 TEST_CASE("Version code is ordered like the version", "[version]") {
0027 STATIC_CHECK(ALGORITHMS_VERSION_CODE(2, 1, 0) < ALGORITHMS_VERSION_CODE(2, 1, 1));
0028 STATIC_CHECK(ALGORITHMS_VERSION_CODE(2, 1, 999) < ALGORITHMS_VERSION_CODE(2, 2, 0));
0029 STATIC_CHECK(ALGORITHMS_VERSION_CODE(2, 999, 999) < ALGORITHMS_VERSION_CODE(3, 0, 0));
0030 }
0031
0032 TEST_CASE("versionAtLeast compares against the current version", "[version]") {
0033 STATIC_CHECK(versionAtLeast(versionMajor, versionMinor, versionPatch));
0034 STATIC_CHECK(versionAtLeast(versionMajor, versionMinor));
0035 STATIC_CHECK(versionAtLeast(versionMajor));
0036 STATIC_CHECK(!versionAtLeast(versionMajor, versionMinor, versionPatch + 1));
0037 STATIC_CHECK(!versionAtLeast(versionMajor, versionMinor + 1, 0));
0038 STATIC_CHECK(!versionAtLeast(versionMajor + 1, 0, 0));
0039 STATIC_CHECK(versionAtLeast(versionMajor - 1, versionMinor + 1, versionPatch + 1));
0040 STATIC_CHECK(versionAtLeast(0, 0, 0));
0041 }