|
@@ -49,10 +49,12 @@ class JsonObjectWriterTest : public ::testing::Test {
|
|
|
out_stream_(new CodedOutputStream(str_stream_)),
|
|
|
ow_(nullptr) {}
|
|
|
|
|
|
- virtual ~JsonObjectWriterTest() {
|
|
|
- delete ow_;
|
|
|
+ ~JsonObjectWriterTest() override { delete ow_; }
|
|
|
+
|
|
|
+ std::string CloseStreamAndGetString() {
|
|
|
delete out_stream_;
|
|
|
delete str_stream_;
|
|
|
+ return output_;
|
|
|
}
|
|
|
|
|
|
std::string output_;
|
|
@@ -64,7 +66,7 @@ class JsonObjectWriterTest : public ::testing::Test {
|
|
|
TEST_F(JsonObjectWriterTest, EmptyRootObject) {
|
|
|
ow_ = new JsonObjectWriter("", out_stream_);
|
|
|
ow_->StartObject("")->EndObject();
|
|
|
- EXPECT_EQ("{}", output_.substr(0, out_stream_->ByteCount()));
|
|
|
+ EXPECT_EQ("{}", CloseStreamAndGetString());
|
|
|
}
|
|
|
|
|
|
TEST_F(JsonObjectWriterTest, EmptyObject) {
|
|
@@ -74,14 +76,13 @@ TEST_F(JsonObjectWriterTest, EmptyObject) {
|
|
|
->StartObject("empty")
|
|
|
->EndObject()
|
|
|
->EndObject();
|
|
|
- EXPECT_EQ("{\"test\":\"value\",\"empty\":{}}",
|
|
|
- output_.substr(0, out_stream_->ByteCount()));
|
|
|
+ EXPECT_EQ("{\"test\":\"value\",\"empty\":{}}", CloseStreamAndGetString());
|
|
|
}
|
|
|
|
|
|
TEST_F(JsonObjectWriterTest, EmptyRootList) {
|
|
|
ow_ = new JsonObjectWriter("", out_stream_);
|
|
|
ow_->StartList("")->EndList();
|
|
|
- EXPECT_EQ("[]", output_.substr(0, out_stream_->ByteCount()));
|
|
|
+ EXPECT_EQ("[]", CloseStreamAndGetString());
|
|
|
}
|
|
|
|
|
|
TEST_F(JsonObjectWriterTest, EmptyList) {
|
|
@@ -91,14 +92,13 @@ TEST_F(JsonObjectWriterTest, EmptyList) {
|
|
|
->StartList("empty")
|
|
|
->EndList()
|
|
|
->EndObject();
|
|
|
- EXPECT_EQ("{\"test\":\"value\",\"empty\":[]}",
|
|
|
- output_.substr(0, out_stream_->ByteCount()));
|
|
|
+ EXPECT_EQ("{\"test\":\"value\",\"empty\":[]}", CloseStreamAndGetString());
|
|
|
}
|
|
|
|
|
|
TEST_F(JsonObjectWriterTest, EmptyObjectKey) {
|
|
|
ow_ = new JsonObjectWriter("", out_stream_);
|
|
|
ow_->StartObject("")->RenderString("", "value")->EndObject();
|
|
|
- EXPECT_EQ("{\"\":\"value\"}", output_.substr(0, out_stream_->ByteCount()));
|
|
|
+ EXPECT_EQ("{\"\":\"value\"}", CloseStreamAndGetString());
|
|
|
}
|
|
|
|
|
|
TEST_F(JsonObjectWriterTest, ObjectInObject) {
|
|
@@ -108,8 +108,7 @@ TEST_F(JsonObjectWriterTest, ObjectInObject) {
|
|
|
->RenderString("field", "value")
|
|
|
->EndObject()
|
|
|
->EndObject();
|
|
|
- EXPECT_EQ("{\"nested\":{\"field\":\"value\"}}",
|
|
|
- output_.substr(0, out_stream_->ByteCount()));
|
|
|
+ EXPECT_EQ("{\"nested\":{\"field\":\"value\"}}", CloseStreamAndGetString());
|
|
|
}
|
|
|
|
|
|
TEST_F(JsonObjectWriterTest, ListInObject) {
|
|
@@ -119,8 +118,7 @@ TEST_F(JsonObjectWriterTest, ListInObject) {
|
|
|
->RenderString("", "value")
|
|
|
->EndList()
|
|
|
->EndObject();
|
|
|
- EXPECT_EQ("{\"nested\":[\"value\"]}",
|
|
|
- output_.substr(0, out_stream_->ByteCount()));
|
|
|
+ EXPECT_EQ("{\"nested\":[\"value\"]}", CloseStreamAndGetString());
|
|
|
}
|
|
|
|
|
|
TEST_F(JsonObjectWriterTest, ObjectInList) {
|
|
@@ -130,8 +128,7 @@ TEST_F(JsonObjectWriterTest, ObjectInList) {
|
|
|
->RenderString("field", "value")
|
|
|
->EndObject()
|
|
|
->EndList();
|
|
|
- EXPECT_EQ("[{\"field\":\"value\"}]",
|
|
|
- output_.substr(0, out_stream_->ByteCount()));
|
|
|
+ EXPECT_EQ("[{\"field\":\"value\"}]", CloseStreamAndGetString());
|
|
|
}
|
|
|
|
|
|
TEST_F(JsonObjectWriterTest, ListInList) {
|
|
@@ -141,7 +138,7 @@ TEST_F(JsonObjectWriterTest, ListInList) {
|
|
|
->RenderString("", "value")
|
|
|
->EndList()
|
|
|
->EndList();
|
|
|
- EXPECT_EQ("[[\"value\"]]", output_.substr(0, out_stream_->ByteCount()));
|
|
|
+ EXPECT_EQ("[[\"value\"]]", CloseStreamAndGetString());
|
|
|
}
|
|
|
|
|
|
TEST_F(JsonObjectWriterTest, RenderPrimitives) {
|
|
@@ -171,7 +168,7 @@ TEST_F(JsonObjectWriterTest, RenderPrimitives) {
|
|
|
"\"string\":\"string\","
|
|
|
"\"emptybytes\":\"\","
|
|
|
"\"emptystring\":\"\"}",
|
|
|
- output_.substr(0, out_stream_->ByteCount()));
|
|
|
+ CloseStreamAndGetString());
|
|
|
}
|
|
|
|
|
|
TEST_F(JsonObjectWriterTest, BytesEncodesAsNonWebSafeBase64) {
|
|
@@ -181,8 +178,7 @@ TEST_F(JsonObjectWriterTest, BytesEncodesAsNonWebSafeBase64) {
|
|
|
ow_ = new JsonObjectWriter("", out_stream_);
|
|
|
ow_->StartObject("")->RenderBytes("bytes", s)->EndObject();
|
|
|
// Non-web-safe would encode this as "/+8="
|
|
|
- EXPECT_EQ("{\"bytes\":\"/+8=\"}",
|
|
|
- output_.substr(0, out_stream_->ByteCount()));
|
|
|
+ EXPECT_EQ("{\"bytes\":\"/+8=\"}", CloseStreamAndGetString());
|
|
|
}
|
|
|
|
|
|
TEST_F(JsonObjectWriterTest, PrettyPrintList) {
|
|
@@ -205,7 +201,7 @@ TEST_F(JsonObjectWriterTest, PrettyPrintList) {
|
|
|
" ],\n"
|
|
|
" \"empty\": []\n"
|
|
|
"}\n",
|
|
|
- output_.substr(0, out_stream_->ByteCount()));
|
|
|
+ CloseStreamAndGetString());
|
|
|
}
|
|
|
|
|
|
TEST_F(JsonObjectWriterTest, PrettyPrintObject) {
|
|
@@ -228,7 +224,7 @@ TEST_F(JsonObjectWriterTest, PrettyPrintObject) {
|
|
|
" },\n"
|
|
|
" \"empty\": {}\n"
|
|
|
"}\n",
|
|
|
- output_.substr(0, out_stream_->ByteCount()));
|
|
|
+ CloseStreamAndGetString());
|
|
|
}
|
|
|
|
|
|
TEST_F(JsonObjectWriterTest, PrettyPrintEmptyObjectInEmptyList) {
|
|
@@ -245,7 +241,7 @@ TEST_F(JsonObjectWriterTest, PrettyPrintEmptyObjectInEmptyList) {
|
|
|
" {}\n"
|
|
|
" ]\n"
|
|
|
"}\n",
|
|
|
- output_.substr(0, out_stream_->ByteCount()));
|
|
|
+ CloseStreamAndGetString());
|
|
|
}
|
|
|
|
|
|
TEST_F(JsonObjectWriterTest, PrettyPrintDoubleIndent) {
|
|
@@ -259,14 +255,14 @@ TEST_F(JsonObjectWriterTest, PrettyPrintDoubleIndent) {
|
|
|
" \"bool\": true,\n"
|
|
|
" \"int\": 42\n"
|
|
|
"}\n",
|
|
|
- output_.substr(0, out_stream_->ByteCount()));
|
|
|
+ CloseStreamAndGetString());
|
|
|
}
|
|
|
|
|
|
TEST_F(JsonObjectWriterTest, StringsEscapedAndEnclosedInDoubleQuotes) {
|
|
|
ow_ = new JsonObjectWriter("", out_stream_);
|
|
|
ow_->StartObject("")->RenderString("string", "'<>&\\\"\r\n")->EndObject();
|
|
|
EXPECT_EQ("{\"string\":\"'\\u003c\\u003e&\\\\\\\"\\r\\n\"}",
|
|
|
- output_.substr(0, out_stream_->ByteCount()));
|
|
|
+ CloseStreamAndGetString());
|
|
|
}
|
|
|
|
|
|
TEST_F(JsonObjectWriterTest, Stringification) {
|
|
@@ -286,7 +282,7 @@ TEST_F(JsonObjectWriterTest, Stringification) {
|
|
|
"\"float_pos\":\"Infinity\","
|
|
|
"\"double_neg\":\"-Infinity\","
|
|
|
"\"float_neg\":\"-Infinity\"}",
|
|
|
- output_.substr(0, out_stream_->ByteCount()));
|
|
|
+ CloseStreamAndGetString());
|
|
|
}
|
|
|
|
|
|
TEST_F(JsonObjectWriterTest, TestRegularByteEncoding) {
|
|
@@ -297,8 +293,7 @@ TEST_F(JsonObjectWriterTest, TestRegularByteEncoding) {
|
|
|
|
|
|
// Test that we get regular (non websafe) base64 encoding on byte fields by
|
|
|
// default.
|
|
|
- EXPECT_EQ("{\"bytes\":\"A+/A\"}",
|
|
|
- output_.substr(0, out_stream_->ByteCount()));
|
|
|
+ EXPECT_EQ("{\"bytes\":\"A+/A\"}", CloseStreamAndGetString());
|
|
|
}
|
|
|
|
|
|
TEST_F(JsonObjectWriterTest, TestWebsafeByteEncoding) {
|
|
@@ -309,8 +304,7 @@ TEST_F(JsonObjectWriterTest, TestWebsafeByteEncoding) {
|
|
|
->EndObject();
|
|
|
|
|
|
// Test that we get websafe base64 encoding when explicitly asked.
|
|
|
- EXPECT_EQ("{\"bytes\":\"A-_AEA==\"}",
|
|
|
- output_.substr(0, out_stream_->ByteCount()));
|
|
|
+ EXPECT_EQ("{\"bytes\":\"A-_AEA==\"}", CloseStreamAndGetString());
|
|
|
}
|
|
|
|
|
|
} // namespace converter
|