summaryrefslogtreecommitdiffstats
path: root/vespalib/src/tests/stllike
diff options
context:
space:
mode:
Diffstat (limited to 'vespalib/src/tests/stllike')
-rw-r--r--vespalib/src/tests/stllike/string_test.cpp19
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);
}