diff --git a/src/libs/utils/smallstringview.h b/src/libs/utils/smallstringview.h index ad6ee1df081..efe46115eef 100644 --- a/src/libs/utils/smallstringview.h +++ b/src/libs/utils/smallstringview.h @@ -106,6 +106,11 @@ public: { return *begin() == characterToSearch; } + + constexpr bool endsWith(SmallStringView ending) const noexcept + { + return size() >= ending.size() && std::equal(ending.rbegin(), ending.rend(), rbegin()); + } }; constexpr bool operator==(SmallStringView first, SmallStringView second) noexcept diff --git a/tests/unit/unittest/smallstring-test.cpp b/tests/unit/unittest/smallstring-test.cpp index 1d087e050cc..585efc19743 100644 --- a/tests/unit/unittest/smallstring-test.cpp +++ b/tests/unit/unittest/smallstring-test.cpp @@ -1296,6 +1296,15 @@ TEST(SmallString, EndsWith) ASSERT_FALSE(text.endsWith('x')); } +TEST(SmallString, EndsWithStringView) +{ + SmallStringView text("/my/path"); + + ASSERT_TRUE(text.endsWith("/my/path")); + ASSERT_TRUE(text.endsWith("path")); + ASSERT_FALSE(text.endsWith("paths")); +} + TEST(SmallString, EndsWithSmallString) { SmallString text("/my/path");