Extracted class StringBuilderTests

This commit is contained in:
Benoît Blanchon
2014-07-02 13:16:44 +02:00
parent 61e53a505d
commit ae73a06328
4 changed files with 87 additions and 42 deletions

View File

@ -89,6 +89,7 @@
<ClCompile Include="JsonArrayTests.cpp" /> <ClCompile Include="JsonArrayTests.cpp" />
<ClCompile Include="JsonHashTableTests.cpp" /> <ClCompile Include="JsonHashTableTests.cpp" />
<ClCompile Include="JsonValueTests.cpp" /> <ClCompile Include="JsonValueTests.cpp" />
<ClCompile Include="StringBuilderTests.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\JsonGenerator\JsonArray.h" /> <ClInclude Include="..\JsonGenerator\JsonArray.h" />

View File

@ -30,6 +30,9 @@
<ClCompile Include="..\JsonGenerator\StringBuilder.cpp"> <ClCompile Include="..\JsonGenerator\StringBuilder.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="StringBuilderTests.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\JsonGenerator\JsonArray.h"> <ClInclude Include="..\JsonGenerator\JsonArray.h">

View File

@ -8,22 +8,11 @@ namespace JsonGeneratorTests
{ {
TEST_CLASS(JsonValueTests) TEST_CLASS(JsonValueTests)
{ {
char buffer[20]; char buffer[1024];
StringBuilder* sb;
size_t returnValue; size_t returnValue;
public: public:
TEST_METHOD_INITIALIZE(Initialize)
{
sb = new StringBuilder(buffer, sizeof(buffer));
}
TEST_METHOD(InitialState)
{
assertResultIs("");
}
TEST_METHOD(Null) TEST_METHOD(Null)
{ {
write((char*)0); write((char*)0);
@ -40,35 +29,6 @@ namespace JsonGeneratorTests
assertResultIs("\"\""); 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) TEST_METHOD(SpecialChars)
{ {
write("\\\"\b\f\n\r\t"); write("\\\"\b\f\n\r\t");
@ -107,7 +67,8 @@ namespace JsonGeneratorTests
template<typename T> template<typename T>
void write(T value) void write(T value)
{ {
returnValue = JsonValue(value).printTo(*sb); StringBuilder sb(buffer, sizeof(buffer));
returnValue = JsonValue(value).printTo(sb);
} }
void assertResultIs(const char* expected) void assertResultIs(const char* expected)

View File

@ -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);
}
};
}