Added a test that appends a string longer that the capacity of the builder

This commit is contained in:
Benoît Blanchon committed 2014-06-26 13:00:14 +02:00
1 parent ca99749f28
commit 7ab728e996
3 files changed
+15 -6

No files matched your search

+6 -3
View File
@@ -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)
{
+3 -3
View File
@@ -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");