mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 08:42:39 +01:00 
			
		
		
		
	Added a test that appends a string longer that the capacity of the builder
This commit is contained in:
		| @@ -10,9 +10,12 @@ void StringBuilder::append(const char* s) | ||||
| { | ||||
|     char* tail = buffer + length; | ||||
|  | ||||
|     strncpy(tail, s, capacity - length); | ||||
|     while (*s && length<capacity) | ||||
|     { | ||||
|         buffer[length++] = *s++; | ||||
|     } | ||||
|  | ||||
|     length += strlen(tail); | ||||
|     buffer[length] = 0; | ||||
| } | ||||
|  | ||||
| void StringBuilder::appendEscaped(const char* s) | ||||
| @@ -24,7 +27,7 @@ void StringBuilder::appendEscaped(const char* s) | ||||
|     // keep one slot for the end quote | ||||
|     capacity--; | ||||
|  | ||||
|     while (*s && length<capacity) | ||||
|     while (*s && length < capacity) | ||||
|     { | ||||
|         switch (*s) | ||||
|         { | ||||
|   | ||||
| @@ -13,7 +13,7 @@ class StringBuilder | ||||
| { | ||||
| public: | ||||
|     StringBuilder(char* buf, size_t size) | ||||
|         : buffer(buf), capacity(size), length(0) | ||||
|         : buffer(buf), capacity(size-1), length(0) | ||||
|     { | ||||
|         buffer[0] = 0; | ||||
|     } | ||||
| @@ -24,7 +24,7 @@ public: | ||||
|  | ||||
| private: | ||||
|     char* buffer; | ||||
|     int capacity; | ||||
|     int length; | ||||
|     size_t capacity; | ||||
|     size_t length; | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -42,6 +42,12 @@ namespace JsonGeneratorTests | ||||
|             assertResultIs("ABCDEFGH"); | ||||
|         } | ||||
|  | ||||
|         TEST_METHOD(AppendOverCapacity) | ||||
|         { | ||||
|             append("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); | ||||
|             assertResultIs("ABCDEFGHIJKLMNO"); | ||||
|         } | ||||
|  | ||||
|         TEST_METHOD(AppendSpecialChars) | ||||
|         { | ||||
|             append("\\\"\/\b\f\n\r"); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user