diff --git a/JsonGeneratorTests/JsonGeneratorTests.vcxproj b/JsonGeneratorTests/JsonGeneratorTests.vcxproj
index 1ecfdbdc..4f7fb9b4 100644
--- a/JsonGeneratorTests/JsonGeneratorTests.vcxproj
+++ b/JsonGeneratorTests/JsonGeneratorTests.vcxproj
@@ -89,6 +89,7 @@
+
diff --git a/JsonGeneratorTests/JsonGeneratorTests.vcxproj.filters b/JsonGeneratorTests/JsonGeneratorTests.vcxproj.filters
index 5de1cd7b..22f563b7 100644
--- a/JsonGeneratorTests/JsonGeneratorTests.vcxproj.filters
+++ b/JsonGeneratorTests/JsonGeneratorTests.vcxproj.filters
@@ -30,6 +30,9 @@
Source Files
+
+ Source Files
+
diff --git a/JsonGeneratorTests/JsonValueTests.cpp b/JsonGeneratorTests/JsonValueTests.cpp
index adf47c7b..56d68c13 100644
--- a/JsonGeneratorTests/JsonValueTests.cpp
+++ b/JsonGeneratorTests/JsonValueTests.cpp
@@ -8,22 +8,11 @@ namespace JsonGeneratorTests
{
TEST_CLASS(JsonValueTests)
{
- char buffer[20];
- StringBuilder* sb;
+ char buffer[1024];
size_t returnValue;
public:
- TEST_METHOD_INITIALIZE(Initialize)
- {
- sb = new StringBuilder(buffer, sizeof(buffer));
- }
-
- TEST_METHOD(InitialState)
- {
- assertResultIs("");
- }
-
TEST_METHOD(Null)
{
write((char*)0);
@@ -40,35 +29,6 @@ namespace JsonGeneratorTests
assertResultIs("\"\"");
}
- TEST_METHOD(OneString)
- {
- write("ABCD");
- assertReturns(6);
- assertResultIs("\"ABCD\"");
- }
-
- TEST_METHOD(OneTwoStrings)
- {
- write("ABCD");
- assertReturns(6);
-
- write("EFGH");
- assertReturns(6);
-
- assertResultIs("\"ABCD\"\"EFGH\"");
- }
-
- TEST_METHOD(OverCapacity)
- {
- write("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
- assertReturns(19);
- assertResultIs("\"ABCDEFGHIJKLMNOPQR");
-
- write("ABC");
- assertReturns(0);
- assertResultIs("\"ABCDEFGHIJKLMNOPQR");
- }
-
TEST_METHOD(SpecialChars)
{
write("\\\"\b\f\n\r\t");
@@ -107,7 +67,8 @@ namespace JsonGeneratorTests
template
void write(T value)
{
- returnValue = JsonValue(value).printTo(*sb);
+ StringBuilder sb(buffer, sizeof(buffer));
+ returnValue = JsonValue(value).printTo(sb);
}
void assertResultIs(const char* expected)
diff --git a/JsonGeneratorTests/StringBuilderTests.cpp b/JsonGeneratorTests/StringBuilderTests.cpp
new file mode 100644
index 00000000..8548f9b9
--- /dev/null
+++ b/JsonGeneratorTests/StringBuilderTests.cpp
@@ -0,0 +1,80 @@
+#include "CppUnitTest.h"
+#include "StringBuilder.h"
+
+using namespace Microsoft::VisualStudio::CppUnitTestFramework;
+
+namespace JsonGeneratorTests
+{
+ TEST_CLASS(StringBuilderTests)
+ {
+ char buffer[20];
+ Print* sb;
+ size_t returnValue;
+
+ public:
+
+ TEST_METHOD_INITIALIZE(Initialize)
+ {
+ sb = new StringBuilder(buffer, sizeof(buffer));
+ }
+
+ TEST_METHOD(InitialState)
+ {
+ assertResultIs("");
+ }
+
+ TEST_METHOD(OverCapacity)
+ {
+ write("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
+ assertReturns(19);
+ assertResultIs("ABCDEFGHIJKLMNOPQRS");
+
+ write("ABC");
+ assertReturns(0);
+ assertResultIs("ABCDEFGHIJKLMNOPQRS");
+ }
+
+ TEST_METHOD(EmptyString)
+ {
+ write("");
+
+ assertReturns(0);
+ assertResultIs("");
+ }
+
+ TEST_METHOD(OneString)
+ {
+ write("ABCD");
+ assertReturns(4);
+ assertResultIs("ABCD");
+ }
+
+ TEST_METHOD(TwoStrings)
+ {
+ write("ABCD");
+ assertReturns(4);
+
+ write("EFGH");
+ assertReturns(4);
+
+ assertResultIs("ABCDEFGH");
+ }
+
+ private:
+
+ void write(const char* value)
+ {
+ returnValue = sb->write(value);
+ }
+
+ void assertResultIs(const char* expected)
+ {
+ Assert::AreEqual(expected, buffer);
+ }
+
+ void assertReturns(size_t expected)
+ {
+ Assert::AreEqual(expected, returnValue);
+ }
+ };
+}
\ No newline at end of file