33#include "gtest/gtest-message.h"
34#include "gtest/gtest.h"
38using ::testing::Message;
43TEST(MessageTest, DefaultConstructor) {
45 EXPECT_EQ(
"", msg.GetString());
49TEST(MessageTest, CopyConstructor) {
50 const Message msg1(
"Hello");
51 const Message msg2(msg1);
52 EXPECT_EQ(
"Hello", msg2.GetString());
56TEST(MessageTest, ConstructsFromCString) {
58 EXPECT_EQ(
"Hello", msg.GetString());
62TEST(MessageTest, StreamsFloat) {
63 const std::string s = (Message() << 1.23456F <<
" " << 2.34567F).GetString();
65 EXPECT_PRED_FORMAT2(testing::IsSubstring,
"1.234560", s.c_str());
66 EXPECT_PRED_FORMAT2(testing::IsSubstring,
" 2.345669", s.c_str());
70TEST(MessageTest, StreamsDouble) {
72 (Message() << 1260570880.4555497 <<
" " << 1260572265.1954534)
75 EXPECT_PRED_FORMAT2(testing::IsSubstring,
"1260570880.45", s.c_str());
76 EXPECT_PRED_FORMAT2(testing::IsSubstring,
" 1260572265.19", s.c_str());
80TEST(MessageTest, StreamsPointer) {
83 EXPECT_NE(
"(null)", (Message() << p).GetString());
87TEST(MessageTest, StreamsNullPointer) {
89 EXPECT_EQ(
"(null)", (Message() << p).GetString());
93TEST(MessageTest, StreamsCString) {
94 EXPECT_EQ(
"Foo", (Message() <<
"Foo").GetString());
98TEST(MessageTest, StreamsNullCString) {
100 EXPECT_EQ(
"(null)", (Message() << p).GetString());
104TEST(MessageTest, StreamsString) {
105 const ::std::string str(
"Hello");
106 EXPECT_EQ(
"Hello", (Message() << str).GetString());
110TEST(MessageTest, StreamsStringWithEmbeddedNUL) {
111 const char char_array_with_nul[] =
"Here's a NUL\0 and some more string";
112 const ::std::string string_with_nul(char_array_with_nul,
113 sizeof(char_array_with_nul) - 1);
114 EXPECT_EQ(
"Here's a NUL\\0 and some more string",
115 (Message() << string_with_nul).GetString());
119TEST(MessageTest, StreamsNULChar) {
120 EXPECT_EQ(
"\\0", (Message() <<
'\0').GetString());
124TEST(MessageTest, StreamsInt) {
125 EXPECT_EQ(
"123", (Message() << 123).GetString());
130TEST(MessageTest, StreamsBasicIoManip) {
132 "Line 1.\nA NUL char \\0 in line 2.",
133 (Message() <<
"Line 1." << std::endl
134 <<
"A NUL char " << std::ends << std::flush <<
" in line 2.")
139TEST(MessageTest, GetString) {
142 EXPECT_EQ(
"1 lamb", msg.GetString());
146TEST(MessageTest, StreamsToOStream) {
147 Message msg(
"Hello");
148 ::std::stringstream ss;
150 EXPECT_EQ(
"Hello", testing::internal::StringStreamToString(&ss));
154TEST(MessageTest, DoesNotTakeUpMuchStackSpace) {
155 EXPECT_LE(
sizeof(Message), 16U);