Add StringRef::compare for three way comparison

This commit is contained in:
Martin Hořeňovský
2021-09-27 18:30:31 +02:00
parent d42e7a23a0
commit 21b99d6f58
12 changed files with 254 additions and 10 deletions

View File

@@ -165,3 +165,30 @@ TEST_CASE("StringRef at compilation time", "[Strings][StringRef][constexpr]") {
STATIC_REQUIRE(sr2.size() == 0);
}
}
TEST_CASE("StringRef::compare", "[Strings][StringRef]") {
using Catch::StringRef;
SECTION("Same length on both sides") {
StringRef sr1("abcdc");
StringRef sr2("abcdd");
StringRef sr3("abcdc");
REQUIRE(sr1.compare(sr2) < 0);
REQUIRE(sr2.compare(sr1) > 0);
REQUIRE(sr1.compare(sr3) == 0);
REQUIRE(sr3.compare(sr1) == 0);
}
SECTION("Different lengths") {
StringRef sr1("def");
StringRef sr2("deff");
StringRef sr3("ab");
REQUIRE(sr1.compare(sr2) < 0);
REQUIRE(sr2.compare(sr1) > 0);
REQUIRE(sr1.compare(sr3) > 0);
REQUIRE(sr2.compare(sr3) > 0);
REQUIRE(sr3.compare(sr1) < 0);
REQUIRE(sr3.compare(sr2) < 0);
}
}