allow to stream user defined types in a MemoryWriter (#456)

* allow to stream user defined types in a MemoryWriter

* fix indent

* follow Google C++ Style

* make code c++98 compatible

* fix macro usage

* disable ability to stream user defined types if not at least c++11

* fix for disable ability to stream user defined types if not at least c++11

* use FMT_STATIC_ASSERT
This commit is contained in:
Andreone
2017-01-19 20:47:43 +01:00
committed by Jonathan Müller
parent 9e9ad57f58
commit 67662702aa
3 changed files with 69 additions and 0 deletions
+19
View File
@@ -111,6 +111,14 @@ std::ostream &operator<<(std::ostream &os, EmptyTest) {
return os << "";
}
#if __cplusplus >= 201103L
struct UserDefinedTest { int i = 42; };
std::ostream &operator<<(std::ostream &os, const UserDefinedTest &u) {
return os << u.i;
}
#endif
TEST(OStreamTest, EmptyCustomOutput) {
EXPECT_EQ("", fmt::format("{}", EmptyTest()));
}
@@ -129,6 +137,17 @@ TEST(OStreamTest, WriteToOStream) {
EXPECT_EQ("foo", os.str());
}
#if __cplusplus >= 201103L
TEST(OStreamTest, WriteUserDefinedTypeToOStream) {
std::ostringstream os;
fmt::MemoryWriter w;
UserDefinedTest u;
w << "The answer is " << u;
fmt::internal::write(os, w);
EXPECT_EQ("The answer is 42", os.str());
}
#endif
TEST(OStreamTest, WriteToOStreamMaxSize) {
std::size_t max_size = std::numeric_limits<std::size_t>::max();
std::streamsize max_streamsize = std::numeric_limits<std::streamsize>::max();