diff options
Diffstat (limited to 'tests/src/versionTest.cpp')
-rw-r--r-- | tests/src/versionTest.cpp | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/tests/src/versionTest.cpp b/tests/src/versionTest.cpp new file mode 100644 index 0000000..d5a492c --- /dev/null +++ b/tests/src/versionTest.cpp @@ -0,0 +1,112 @@ +#include <catch.hpp> +#include "../../include/VersionParser.hpp" + +using namespace sibs; + +TEST_CASE("parse package version") +{ + VersionParser parser; + { + Result<PackageVersionRange> parseResult = parser.parse("2.3.4", 5); + if(!parseResult) + FAIL(parseResult.getErrMsg()); + PackageVersionRange versionRange = parseResult.unwrap(); + REQUIRE(versionRange.startDefined); + REQUIRE(!versionRange.endDefined); + REQUIRE(versionRange.startOperation == VersionOperation::GREATER_EQUAL); + REQUIRE(versionRange.start.major == 2); + REQUIRE(versionRange.start.minor == 3); + REQUIRE(versionRange.start.patch == 4); + } + { + Result<PackageVersionRange> parseResult = parser.parse("2.3", 3); + if(!parseResult) + FAIL(parseResult.getErrMsg()); + PackageVersionRange versionRange = parseResult.unwrap(); + REQUIRE(versionRange.startDefined); + REQUIRE(!versionRange.endDefined); + REQUIRE(versionRange.startOperation == VersionOperation::GREATER_EQUAL); + REQUIRE(versionRange.start.major == 2); + REQUIRE(versionRange.start.minor == 3); + REQUIRE(versionRange.start.patch == 0); + } + { + Result<PackageVersionRange> parseResult = parser.parse("2", 1); + if(!parseResult) + FAIL(parseResult.getErrMsg()); + PackageVersionRange versionRange = parseResult.unwrap(); + REQUIRE(versionRange.startDefined); + REQUIRE(!versionRange.endDefined); + REQUIRE(versionRange.startOperation == VersionOperation::GREATER_EQUAL); + REQUIRE(versionRange.start.major == 2); + REQUIRE(versionRange.start.minor == 0); + REQUIRE(versionRange.start.patch == 0); + } + { + Result<PackageVersionRange> parseResult = parser.parse(">=2.3.4 and <5.6.7", 18); + if(!parseResult) + FAIL(parseResult.getErrMsg()); + PackageVersionRange versionRange = parseResult.unwrap(); + REQUIRE(versionRange.startDefined); + REQUIRE(versionRange.endDefined); + REQUIRE(versionRange.startOperation == VersionOperation::GREATER_EQUAL); + REQUIRE(versionRange.start.major == 2); + REQUIRE(versionRange.start.minor == 3); + REQUIRE(versionRange.start.patch == 4); + REQUIRE(versionRange.endOperation == VersionOperation::LESS); + REQUIRE(versionRange.end.major == 5); + REQUIRE(versionRange.end.minor == 6); + REQUIRE(versionRange.end.patch == 7); + } + { + Result<PackageVersionRange> parseResult = parser.parse(">2.3.4 and <=5.6.7", 18); + if(!parseResult) + FAIL(parseResult.getErrMsg()); + PackageVersionRange versionRange = parseResult.unwrap(); + REQUIRE(versionRange.startDefined); + REQUIRE(versionRange.endDefined); + REQUIRE(versionRange.startOperation == VersionOperation::GREATER); + REQUIRE(versionRange.start.major == 2); + REQUIRE(versionRange.start.minor == 3); + REQUIRE(versionRange.start.patch == 4); + REQUIRE(versionRange.endOperation == VersionOperation::LESS_EQUAL); + REQUIRE(versionRange.end.major == 5); + REQUIRE(versionRange.end.minor == 6); + REQUIRE(versionRange.end.patch == 7); + } + { + Result<PackageVersionRange> parseResult = parser.parse(">2.3.4 and <=5", 14); + if(!parseResult) + FAIL(parseResult.getErrMsg()); + PackageVersionRange versionRange = parseResult.unwrap(); + REQUIRE(versionRange.startDefined); + REQUIRE(versionRange.endDefined); + REQUIRE(versionRange.startOperation == VersionOperation::GREATER); + REQUIRE(versionRange.start.major == 2); + REQUIRE(versionRange.start.minor == 3); + REQUIRE(versionRange.start.patch == 4); + REQUIRE(versionRange.endOperation == VersionOperation::LESS_EQUAL); + REQUIRE(versionRange.end.major == 5); + REQUIRE(versionRange.end.minor == 0); + REQUIRE(versionRange.end.patch == 0); + } + { + REQUIRE(!parser.parse("", 0)); + REQUIRE(!parser.parse(" ", 1)); + REQUIRE(!parser.parse("2", 2)); + REQUIRE(!parser.parse(".", 1)); + REQUIRE(!parser.parse(".2", 2)); + REQUIRE(!parser.parse("<", 1)); + REQUIRE(!parser.parse("and", 3)); + REQUIRE(!parser.parse("2 and", 5)); + REQUIRE(!parser.parse("2 and 3", 7)); + REQUIRE(!parser.parse("2 and =3", 8)); + REQUIRE(!parser.parse("2 and >3", 8)); + REQUIRE(!parser.parse(">=1.0.0 and 2.0.0", 17)); + REQUIRE(!parser.parse("1.0.0 < 2.0.0", 13)); + REQUIRE(!parser.parse("1.0.0 and <0.9.3", 16)); + REQUIRE(!parser.parse("=1.0.0 and <2.0.0", 17)); + REQUIRE(!parser.parse("1.0.0 and <2.0.0", 16)); + REQUIRE(!parser.parse(">=1.0.0 and =2.0.0", 18)); + } +} |