From ae73a06328c01dccab7774fc7461885c702e7c69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Blanchon?= Date: Wed, 2 Jul 2014 13:16:44 +0200 Subject: [PATCH] Extracted class StringBuilderTests --- JsonGeneratorTests/JsonGeneratorTests.vcxproj | 1 + .../JsonGeneratorTests.vcxproj.filters | 3 + JsonGeneratorTests/JsonValueTests.cpp | 45 +---------- JsonGeneratorTests/StringBuilderTests.cpp | 80 +++++++++++++++++++ 4 files changed, 87 insertions(+), 42 deletions(-) create mode 100644 JsonGeneratorTests/StringBuilderTests.cpp 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