diff --git a/src/libs/utils/smallstring.h b/src/libs/utils/smallstring.h index 70ba55272f1..2a28b7c5b81 100644 --- a/src/libs/utils/smallstring.h +++ b/src/libs/utils/smallstring.h @@ -299,6 +299,16 @@ public: return reverse_iterator(begin() - static_cast(1)); } + const_reverse_iterator rbegin() const noexcept + { + return const_reverse_iterator(end() - static_cast(1)); + } + + const_reverse_iterator rend() const noexcept + { + return const_reverse_iterator(begin() - static_cast(1)); + } + const_iterator begin() const noexcept { return constData(); diff --git a/tests/unit/unittest/smallstring-test.cpp b/tests/unit/unittest/smallstring-test.cpp index 4770ed2f990..90e93986a5b 100644 --- a/tests/unit/unittest/smallstring-test.cpp +++ b/tests/unit/unittest/smallstring-test.cpp @@ -317,6 +317,29 @@ TEST(SmallString, RBeginPlusOneIsEqualREndForSmallStringWidthSizeOne) ASSERT_THAT(beginPlusOne, Eq(text.rend())); } +TEST(SmallString, ConstRBeginIsEqualREndForEmptySmallString) +{ + const SmallString text; + + ASSERT_THAT(text.rbegin(), Eq(text.rend())); +} + +TEST(SmallString, ConstRBeginIsNotEqualREndForNonEmptySmallString) +{ + const SmallString text("x"); + + ASSERT_THAT(text.rbegin(), Ne(text.rend())); +} + +TEST(SmallString, ConstRBeginPlusOneIsEqualREndForSmallStringWidthSizeOne) +{ + const SmallString text("x"); + + auto beginPlusOne = text.rbegin() + 1l; + + ASSERT_THAT(beginPlusOne, Eq(text.rend())); +} + TEST(SmallString, ConstructorStandardString) { std::string stdStringText = "short string";