diff options
Diffstat (limited to 'vespalib/src/tests/stllike')
-rw-r--r-- | vespalib/src/tests/stllike/string_test.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/vespalib/src/tests/stllike/string_test.cpp b/vespalib/src/tests/stllike/string_test.cpp index 96c095667ee..885c13172b1 100644 --- a/vespalib/src/tests/stllike/string_test.cpp +++ b/vespalib/src/tests/stllike/string_test.cpp @@ -27,12 +27,27 @@ TEST("test iterator assignment") { EXPECT_TRUE(strstr(s.c_str(), "mumbo jumbo.") == nullptr); } +namespace { + +template <typename S> +void assign(S &lhs, const S &rhs) __attribute__((noinline)); + +template <typename S> +void +assign(S &lhs, const S &rhs) +{ + lhs = rhs; +} + +} + + TEST("test self assignment of small string") { const char * text = "abc"; string s(text); const char * addr(reinterpret_cast<const char *>(&s)); EXPECT_TRUE((addr < s.c_str()) && (s.c_str() < addr + sizeof(s))); - s = s; + assign(s, s); EXPECT_EQUAL(text, s); } @@ -41,7 +56,7 @@ TEST("test self assignment of big string") { string s(text); const char * addr(reinterpret_cast<const char *>(&s)); EXPECT_TRUE((addr > s.c_str()) || (s.c_str() > addr + sizeof(s))); - s = s; + assign(s, s); EXPECT_EQUAL(text, s); } |