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:
committed by
Jonathan Müller
parent
9e9ad57f58
commit
67662702aa
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user