33#include "gtest/gtest-message.h"
35#include "gtest/gtest.h"
39using ::testing::Message;
44TEST(MessageTest, DefaultConstructor) {
46 EXPECT_EQ(
"", msg.GetString());
50TEST(MessageTest, CopyConstructor) {
51 const Message msg1(
"Hello");
52 const Message msg2(msg1);
53 EXPECT_EQ(
"Hello", msg2.GetString());
57TEST(MessageTest, ConstructsFromCString) {
59 EXPECT_EQ(
"Hello", msg.GetString());
63TEST(MessageTest, StreamsFloat) {
64 const std::string s = (Message() << 1.23456F <<
" " << 2.34567F).GetString();
66 EXPECT_PRED_FORMAT2(testing::IsSubstring,
"1.234560", s.c_str());
67 EXPECT_PRED_FORMAT2(testing::IsSubstring,
" 2.345669", s.c_str());
71TEST(MessageTest, StreamsDouble) {
72 const std::string s = (Message() << 1260570880.4555497 <<
" "
73 << 1260572265.1954534).GetString();
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[] =
112 "Here's a NUL\0 and some more string";
113 const ::std::string string_with_nul(char_array_with_nul,
114 sizeof(char_array_with_nul) - 1);
115 EXPECT_EQ(
"Here's a NUL\\0 and some more string",
116 (Message() << string_with_nul).GetString());
120TEST(MessageTest, StreamsNULChar) {
121 EXPECT_EQ(
"\\0", (Message() <<
'\0').GetString());
125TEST(MessageTest, StreamsInt) {
126 EXPECT_EQ(
"123", (Message() << 123).GetString());
131TEST(MessageTest, StreamsBasicIoManip) {
132 EXPECT_EQ(
"Line 1.\nA NUL char \\0 in line 2.",
133 (Message() <<
"Line 1." << std::endl
134 <<
"A NUL char " << std::ends << std::flush
135 <<
" in line 2.").GetString());
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);