(Pretty)Writer: drop restriction to object/array roots
This commit is contained in:
parent
86245ce97a
commit
8d53689432
@ -174,7 +174,6 @@ protected:
|
|||||||
level->valueCount++;
|
level->valueCount++;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
RAPIDJSON_ASSERT(type == kObjectType || type == kArrayType);
|
|
||||||
RAPIDJSON_ASSERT(!Base::hasRoot_); // Should only has one and only one root.
|
RAPIDJSON_ASSERT(!Base::hasRoot_); // Should only has one and only one root.
|
||||||
Base::hasRoot_ = true;
|
Base::hasRoot_ = true;
|
||||||
}
|
}
|
||||||
|
@ -321,7 +321,6 @@ protected:
|
|||||||
level->valueCount++;
|
level->valueCount++;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
RAPIDJSON_ASSERT(type == kObjectType || type == kArrayType);
|
|
||||||
RAPIDJSON_ASSERT(!hasRoot_); // Should only has one and only one root.
|
RAPIDJSON_ASSERT(!hasRoot_); // Should only has one and only one root.
|
||||||
hasRoot_ = true;
|
hasRoot_ = true;
|
||||||
}
|
}
|
||||||
|
@ -155,12 +155,12 @@ TEST(Writer, OStreamWrapper) {
|
|||||||
EXPECT_STREQ("{\"hello\":\"world\",\"t\":true,\"f\":false,\"n\":null,\"i\":123,\"pi\":3.1416,\"a\":[1,2,3]}", actual.c_str());
|
EXPECT_STREQ("{\"hello\":\"world\",\"t\":true,\"f\":false,\"n\":null,\"i\":123,\"pi\":3.1416,\"a\":[1,2,3]}", actual.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(Writer, AssertRootMustBeArrayOrObject) {
|
TEST(Writer, AssertRootMayBeAnyValue) {
|
||||||
#define T(x)\
|
#define T(x)\
|
||||||
{\
|
{\
|
||||||
StringBuffer buffer;\
|
StringBuffer buffer;\
|
||||||
Writer<StringBuffer> writer(buffer);\
|
Writer<StringBuffer> writer(buffer);\
|
||||||
ASSERT_THROW(x, AssertException);\
|
EXPECT_TRUE(x);\
|
||||||
}
|
}
|
||||||
T(writer.Bool(false));
|
T(writer.Bool(false));
|
||||||
T(writer.Bool(true));
|
T(writer.Bool(true));
|
||||||
@ -228,9 +228,23 @@ TEST(Writer, AssertObjectKeyNotString) {
|
|||||||
TEST(Writer, AssertMultipleRoot) {
|
TEST(Writer, AssertMultipleRoot) {
|
||||||
StringBuffer buffer;
|
StringBuffer buffer;
|
||||||
Writer<StringBuffer> writer(buffer);
|
Writer<StringBuffer> writer(buffer);
|
||||||
|
|
||||||
writer.StartObject();
|
writer.StartObject();
|
||||||
writer.EndObject();
|
writer.EndObject();
|
||||||
ASSERT_THROW(writer.StartObject(), AssertException);
|
ASSERT_THROW(writer.StartObject(), AssertException);
|
||||||
|
|
||||||
|
writer.Reset(buffer);
|
||||||
|
writer.Null();
|
||||||
|
ASSERT_THROW(writer.Int(0), AssertException);
|
||||||
|
|
||||||
|
writer.Reset(buffer);
|
||||||
|
writer.String("foo");
|
||||||
|
ASSERT_THROW(writer.StartArray(), AssertException);
|
||||||
|
|
||||||
|
writer.Reset(buffer);
|
||||||
|
writer.StartArray();
|
||||||
|
writer.EndArray();
|
||||||
|
ASSERT_THROW(writer.Double(3.14), AssertException);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(Writer, RootObjectIsComplete) {
|
TEST(Writer, RootObjectIsComplete) {
|
||||||
@ -260,3 +274,24 @@ TEST(Writer, RootArrayIsComplete) {
|
|||||||
writer.EndArray();
|
writer.EndArray();
|
||||||
EXPECT_TRUE(writer.IsComplete());
|
EXPECT_TRUE(writer.IsComplete());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(Writer, RootValueIsComplete) {
|
||||||
|
#define T(x)\
|
||||||
|
{\
|
||||||
|
StringBuffer buffer;\
|
||||||
|
Writer<StringBuffer> writer(buffer);\
|
||||||
|
EXPECT_FALSE(writer.IsComplete()); \
|
||||||
|
x; \
|
||||||
|
EXPECT_TRUE(writer.IsComplete()); \
|
||||||
|
}
|
||||||
|
T(writer.Null());
|
||||||
|
T(writer.Bool(true));
|
||||||
|
T(writer.Bool(false));
|
||||||
|
T(writer.Int(0));
|
||||||
|
T(writer.Uint(0));
|
||||||
|
T(writer.Int64(0));
|
||||||
|
T(writer.Uint64(0));
|
||||||
|
T(writer.Double(0));
|
||||||
|
T(writer.String(""));
|
||||||
|
#undef T
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user