mirror of
https://github.com/Tencent/rapidjson.git
synced 2025-10-27 19:10:24 +01:00
@@ -538,6 +538,43 @@ TEST(Writer, RawValue) {
|
||||
EXPECT_STREQ("{\"a\":1,\"raw\":[\"Hello\\nWorld\", 123.456]}", buffer.GetString());
|
||||
}
|
||||
|
||||
TEST(Write, RawValue_Issue1152) {
|
||||
{
|
||||
GenericStringBuffer<UTF32<> > sb;
|
||||
Writer<GenericStringBuffer<UTF32<> >, UTF8<>, UTF32<> > writer(sb);
|
||||
writer.RawValue("null", 4, kNullType);
|
||||
EXPECT_TRUE(writer.IsComplete());
|
||||
const unsigned *out = sb.GetString();
|
||||
EXPECT_EQ(static_cast<unsigned>('n'), out[0]);
|
||||
EXPECT_EQ(static_cast<unsigned>('u'), out[1]);
|
||||
EXPECT_EQ(static_cast<unsigned>('l'), out[2]);
|
||||
EXPECT_EQ(static_cast<unsigned>('l'), out[3]);
|
||||
EXPECT_EQ(static_cast<unsigned>(0 ), out[4]);
|
||||
}
|
||||
|
||||
{
|
||||
GenericStringBuffer<UTF8<> > sb;
|
||||
Writer<GenericStringBuffer<UTF8<> >, UTF16<>, UTF8<> > writer(sb);
|
||||
writer.RawValue(L"null", 4, kNullType);
|
||||
EXPECT_TRUE(writer.IsComplete());
|
||||
EXPECT_STREQ("null", sb.GetString());
|
||||
}
|
||||
|
||||
{
|
||||
// Fail in transcoding
|
||||
GenericStringBuffer<UTF16<> > buffer;
|
||||
Writer<GenericStringBuffer<UTF16<> >, UTF8<>, UTF16<> > writer(buffer);
|
||||
EXPECT_FALSE(writer.RawValue("\"\xfe\"", 3, kStringType));
|
||||
}
|
||||
|
||||
{
|
||||
// Fail in encoding validation
|
||||
StringBuffer buffer;
|
||||
Writer<StringBuffer, UTF8<>, UTF8<>, CrtAllocator, kWriteValidateEncodingFlag> writer(buffer);
|
||||
EXPECT_FALSE(writer.RawValue("\"\xfe\"", 3, kStringType));
|
||||
}
|
||||
}
|
||||
|
||||
#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
|
||||
static Writer<StringBuffer> WriterGen(StringBuffer &target) {
|
||||
Writer<StringBuffer> writer(target);
|
||||
|
||||
Reference in New Issue
Block a user