summaryrefslogtreecommitdiff
path: root/abseil-cpp/absl/strings/internal/ostringstream_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'abseil-cpp/absl/strings/internal/ostringstream_test.cc')
-rw-r--r--abseil-cpp/absl/strings/internal/ostringstream_test.cc53
1 files changed, 41 insertions, 12 deletions
diff --git a/abseil-cpp/absl/strings/internal/ostringstream_test.cc b/abseil-cpp/absl/strings/internal/ostringstream_test.cc
index 2879e50..ef3ad57 100644
--- a/abseil-cpp/absl/strings/internal/ostringstream_test.cc
+++ b/abseil-cpp/absl/strings/internal/ostringstream_test.cc
@@ -14,10 +14,12 @@
#include "absl/strings/internal/ostringstream.h"
+#include <ios>
#include <memory>
#include <ostream>
#include <string>
#include <type_traits>
+#include <utility>
#include "gtest/gtest.h"
@@ -29,24 +31,51 @@ TEST(OStringStream, IsOStream) {
"");
}
-TEST(OStringStream, ConstructDestroy) {
+TEST(OStringStream, ConstructNullptr) {
+ absl::strings_internal::OStringStream strm(nullptr);
+ EXPECT_EQ(nullptr, strm.str());
+}
+
+TEST(OStringStream, ConstructStr) {
+ std::string s = "abc";
{
- absl::strings_internal::OStringStream strm(nullptr);
- EXPECT_EQ(nullptr, strm.str());
+ absl::strings_internal::OStringStream strm(&s);
+ EXPECT_EQ(&s, strm.str());
}
+ EXPECT_EQ("abc", s);
+}
+
+TEST(OStringStream, Destroy) {
+ std::unique_ptr<std::string> s(new std::string);
+ absl::strings_internal::OStringStream strm(s.get());
+ s.reset();
+}
+
+TEST(OStringStream, MoveConstruct) {
+ std::string s = "abc";
{
- std::string s = "abc";
- {
- absl::strings_internal::OStringStream strm(&s);
- EXPECT_EQ(&s, strm.str());
- }
- EXPECT_EQ("abc", s);
+ absl::strings_internal::OStringStream strm1(&s);
+ strm1 << std::hex << 16;
+ EXPECT_EQ(&s, strm1.str());
+ absl::strings_internal::OStringStream strm2(std::move(strm1));
+ strm2 << 16; // We should still be in base 16.
+ EXPECT_EQ(&s, strm2.str());
}
+ EXPECT_EQ("abc1010", s);
+}
+
+TEST(OStringStream, MoveAssign) {
+ std::string s = "abc";
{
- std::unique_ptr<std::string> s(new std::string);
- absl::strings_internal::OStringStream strm(s.get());
- s.reset();
+ absl::strings_internal::OStringStream strm1(&s);
+ strm1 << std::hex << 16;
+ EXPECT_EQ(&s, strm1.str());
+ absl::strings_internal::OStringStream strm2(nullptr);
+ strm2 = std::move(strm1);
+ strm2 << 16; // We should still be in base 16.
+ EXPECT_EQ(&s, strm2.str());
}
+ EXPECT_EQ("abc1010", s);
}
TEST(OStringStream, Str) {