@@ -538,6 +538,43 @@ TEST(Writer, RawValue) {
538
538
EXPECT_STREQ (" {\" a\" :1,\" raw\" :[\" Hello\\ nWorld\" , 123.456]}" , buffer.GetString ());
539
539
}
540
540
541
+ TEST (Write, RawValue_Issue1152) {
542
+ {
543
+ GenericStringBuffer<UTF32<> > sb;
544
+ Writer<GenericStringBuffer<UTF32<> >, UTF8<>, UTF32<> > writer (sb);
545
+ writer.RawValue (" null" , 4 , kNullType );
546
+ EXPECT_TRUE (writer.IsComplete ());
547
+ const unsigned *out = sb.GetString ();
548
+ EXPECT_EQ (static_cast <unsigned >(' n' ), out[0 ]);
549
+ EXPECT_EQ (static_cast <unsigned >(' u' ), out[1 ]);
550
+ EXPECT_EQ (static_cast <unsigned >(' l' ), out[2 ]);
551
+ EXPECT_EQ (static_cast <unsigned >(' l' ), out[3 ]);
552
+ EXPECT_EQ (static_cast <unsigned >(0 ), out[4 ]);
553
+ }
554
+
555
+ {
556
+ GenericStringBuffer<UTF8<> > sb;
557
+ Writer<GenericStringBuffer<UTF8<> >, UTF16<>, UTF8<> > writer (sb);
558
+ writer.RawValue (L" null" , 4 , kNullType );
559
+ EXPECT_TRUE (writer.IsComplete ());
560
+ EXPECT_STREQ (" null" , sb.GetString ());
561
+ }
562
+
563
+ {
564
+ // Fail in transcoding
565
+ GenericStringBuffer<UTF16<> > buffer;
566
+ Writer<GenericStringBuffer<UTF16<> >, UTF8<>, UTF16<> > writer (buffer);
567
+ EXPECT_FALSE (writer.RawValue (" \"\xfe\" " , 3 , kStringType ));
568
+ }
569
+
570
+ {
571
+ // Fail in encoding validation
572
+ StringBuffer buffer;
573
+ Writer<StringBuffer, UTF8<>, UTF8<>, CrtAllocator, kWriteValidateEncodingFlag > writer (buffer);
574
+ EXPECT_FALSE (writer.RawValue (" \"\xfe\" " , 3 , kStringType ));
575
+ }
576
+ }
577
+
541
578
#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
542
579
static Writer<StringBuffer> WriterGen (StringBuffer &target) {
543
580
Writer<StringBuffer> writer (target);
0 commit comments