mirror of
				https://github.com/Tencent/rapidjson.git
				synced 2025-10-28 19:52:02 +01:00 
			
		
		
		
	Improve coverage for Writer and PrettyWriter
This commit is contained in:
		| @@ -100,8 +100,9 @@ public: | ||||
|             Base::os_->Put('\n'); | ||||
|             WriteIndent(); | ||||
|         } | ||||
|         if (!Base::WriteEndObject()) | ||||
|             return false; | ||||
|         bool ret = Base::WriteEndObject(); | ||||
|         (void)ret; | ||||
|         RAPIDJSON_ASSERT(ret == true); | ||||
|         if (Base::level_stack_.Empty()) // end of json text | ||||
|             Base::os_->Flush(); | ||||
|         return true; | ||||
| @@ -123,8 +124,9 @@ public: | ||||
|             Base::os_->Put('\n'); | ||||
|             WriteIndent(); | ||||
|         } | ||||
|         if (!Base::WriteEndArray()) | ||||
|             return false; | ||||
|         bool ret = Base::WriteEndArray(); | ||||
|         (void)ret; | ||||
|         RAPIDJSON_ASSERT(ret == true); | ||||
|         if (Base::level_stack_.Empty()) // end of json text | ||||
|             Base::os_->Flush(); | ||||
|         return true; | ||||
|   | ||||
| @@ -272,7 +272,8 @@ protected: | ||||
|                     os_->Put(hexDigits[(codepoint >>  4) & 15]); | ||||
|                     os_->Put(hexDigits[(codepoint      ) & 15]); | ||||
|                 } | ||||
|                 else if (codepoint >= 0x010000 && codepoint <= 0x10FFFF)    { | ||||
|                 else { | ||||
|                     RAPIDJSON_ASSERT(codepoint >= 0x010000 && codepoint <= 0x10FFFF); | ||||
|                     // Surrogate pair | ||||
|                     unsigned s = codepoint - 0x010000; | ||||
|                     unsigned lead = (s >> 10) + 0xD800; | ||||
| @@ -288,8 +289,6 @@ protected: | ||||
|                     os_->Put(hexDigits[(trail >>  4) & 15]); | ||||
|                     os_->Put(hexDigits[(trail      ) & 15]);                     | ||||
|                 } | ||||
|                 else | ||||
|                     return false;   // invalid code point | ||||
|             } | ||||
|             else if ((sizeof(Ch) == 1 || (unsigned)c < 256) && escape[(unsigned char)c])  { | ||||
|                 is.Take(); | ||||
|   | ||||
| @@ -80,6 +80,15 @@ TEST(PrettyWriter, SetIndent) { | ||||
|         buffer.GetString()); | ||||
| } | ||||
|  | ||||
| TEST(PrettyWriter, String) { | ||||
|     StringBuffer buffer; | ||||
|     PrettyWriter<StringBuffer> writer(buffer); | ||||
|     EXPECT_TRUE(writer.StartArray()); | ||||
|     EXPECT_TRUE(writer.String("Hello\n")); | ||||
|     EXPECT_TRUE(writer.EndArray()); | ||||
|     EXPECT_STREQ("[\n    \"Hello\\n\"\n]", buffer.GetString()); | ||||
| } | ||||
|  | ||||
| #if RAPIDJSON_HAS_STDSTRING | ||||
| TEST(PrettyWriter, String_STDSTRING) { | ||||
|     StringBuffer buffer; | ||||
|   | ||||
| @@ -343,4 +343,33 @@ TEST(Writer, InvalidEncoding) { | ||||
|         static const UTF32<>::Ch s[] = { 0x110000, 0 }; // Out of U+0000 to U+10FFFF | ||||
|         EXPECT_FALSE(writer.String(s)); | ||||
|     } | ||||
| } | ||||
| } | ||||
|  | ||||
| TEST(Writer, InvalidEventSequence) { | ||||
|     // {] | ||||
|     { | ||||
|         StringBuffer buffer; | ||||
|         Writer<StringBuffer> writer(buffer); | ||||
|         writer.StartObject(); | ||||
|         EXPECT_THROW(writer.EndArray(), AssertException); | ||||
|         EXPECT_FALSE(writer.IsComplete()); | ||||
|     } | ||||
|  | ||||
|     // [} | ||||
|     { | ||||
|         StringBuffer buffer; | ||||
|         Writer<StringBuffer> writer(buffer); | ||||
|         writer.StartArray(); | ||||
|         EXPECT_THROW(writer.EndObject(), AssertException); | ||||
|         EXPECT_FALSE(writer.IsComplete()); | ||||
|     } | ||||
|  | ||||
|     // { 1:  | ||||
|     { | ||||
|         StringBuffer buffer; | ||||
|         Writer<StringBuffer> writer(buffer); | ||||
|         writer.StartObject(); | ||||
|         EXPECT_THROW(writer.Int(1), AssertException); | ||||
|         EXPECT_FALSE(writer.IsComplete()); | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 miloyip
					miloyip