Added a test of an empty hashtable

This commit is contained in:
Benoît Blanchon
2014-06-27 13:00:27 +02:00
parent 48a91a219c
commit ebb257df6e
5 changed files with 94 additions and 16 deletions

View File

@ -11,23 +11,23 @@ namespace JsonGeneratorTests
public: public:
TEST_METHOD(EmptyArray) TEST_METHOD(Empty)
{ {
AssertJsonIs("[]"); assertJsonIs("[]");
} }
TEST_METHOD(AddNull) TEST_METHOD(AddNull)
{ {
arr.add((char*)0); arr.add((char*)0);
AssertJsonIs("[null]"); assertJsonIs("[null]");
} }
TEST_METHOD(AddOneString) TEST_METHOD(AddOneString)
{ {
arr.add("hello"); arr.add("hello");
AssertJsonIs("[\"hello\"]"); assertJsonIs("[\"hello\"]");
} }
TEST_METHOD(AddTwoStrings) TEST_METHOD(AddTwoStrings)
@ -35,7 +35,7 @@ namespace JsonGeneratorTests
arr.add("hello"); arr.add("hello");
arr.add("world"); arr.add("world");
AssertJsonIs("[\"hello\",\"world\"]"); assertJsonIs("[\"hello\",\"world\"]");
} }
TEST_METHOD(AddOneStringOverCapacity) TEST_METHOD(AddOneStringOverCapacity)
@ -44,14 +44,14 @@ namespace JsonGeneratorTests
arr.add("world"); arr.add("world");
arr.add("lost"); arr.add("lost");
AssertJsonIs("[\"hello\",\"world\"]"); assertJsonIs("[\"hello\",\"world\"]");
} }
TEST_METHOD(AddOneNumber) TEST_METHOD(AddOneNumber)
{ {
arr.add(3.14); arr.add(3.14);
AssertJsonIs("[3.14]"); assertJsonIs("[3.14]");
} }
TEST_METHOD(AddTwoNumbers) TEST_METHOD(AddTwoNumbers)
@ -59,7 +59,7 @@ namespace JsonGeneratorTests
arr.add(3.14); arr.add(3.14);
arr.add(2.72); arr.add(2.72);
AssertJsonIs("[3.14,2.72]"); assertJsonIs("[3.14,2.72]");
} }
TEST_METHOD(AddOneNumberOverCapacity) TEST_METHOD(AddOneNumberOverCapacity)
@ -68,21 +68,21 @@ namespace JsonGeneratorTests
arr.add(2.72); arr.add(2.72);
arr.add(1.41); arr.add(1.41);
AssertJsonIs("[3.14,2.72]"); assertJsonIs("[3.14,2.72]");
} }
TEST_METHOD(AddTrue) TEST_METHOD(AddTrue)
{ {
arr.add(true); arr.add(true);
AssertJsonIs("[true]"); assertJsonIs("[true]");
} }
TEST_METHOD(AddFalse) TEST_METHOD(AddFalse)
{ {
arr.add(false); arr.add(false);
AssertJsonIs("[false]"); assertJsonIs("[false]");
} }
TEST_METHOD(AddTwoBooleans) TEST_METHOD(AddTwoBooleans)
@ -90,7 +90,7 @@ namespace JsonGeneratorTests
arr.add(false); arr.add(false);
arr.add(true); arr.add(true);
AssertJsonIs("[false,true]"); assertJsonIs("[false,true]");
} }
TEST_METHOD(AddOneBooleanOverCapacity) TEST_METHOD(AddOneBooleanOverCapacity)
@ -99,7 +99,7 @@ namespace JsonGeneratorTests
arr.add(true); arr.add(true);
arr.add(false); arr.add(false);
AssertJsonIs("[false,true]"); assertJsonIs("[false,true]");
} }
TEST_METHOD(AddOneEmptyNestedArray) TEST_METHOD(AddOneEmptyNestedArray)
@ -108,7 +108,7 @@ namespace JsonGeneratorTests
arr.add(nestedArray); arr.add(nestedArray);
AssertJsonIs("[[]]"); assertJsonIs("[[]]");
} }
TEST_METHOD(AddOneNestedArrayWithOneItem) TEST_METHOD(AddOneNestedArrayWithOneItem)
@ -118,10 +118,12 @@ namespace JsonGeneratorTests
arr.add(nestedArray); arr.add(nestedArray);
AssertJsonIs("[[3.14]]"); assertJsonIs("[[3.14]]");
} }
void AssertJsonIs(const char* expected) private:
void assertJsonIs(const char* expected)
{ {
char buffer[256]; char buffer[256];

View File

@ -83,6 +83,7 @@
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="JsonArrayTests.cpp" /> <ClCompile Include="JsonArrayTests.cpp" />
<ClCompile Include="JsonHashTableTests.cpp" />
<ClCompile Include="JsonObjectBase.cpp" /> <ClCompile Include="JsonObjectBase.cpp" />
<ClCompile Include="StringBuilder.cpp" /> <ClCompile Include="StringBuilder.cpp" />
<ClCompile Include="StringBuilderAppendEscapedTests.cpp" /> <ClCompile Include="StringBuilderAppendEscapedTests.cpp" />
@ -90,6 +91,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="JsonArray.h" /> <ClInclude Include="JsonArray.h" />
<ClInclude Include="JsonHashTable.h" />
<ClInclude Include="JsonObjectBase.h" /> <ClInclude Include="JsonObjectBase.h" />
<ClInclude Include="StringBuilder.h" /> <ClInclude Include="StringBuilder.h" />
</ItemGroup> </ItemGroup>

View File

@ -30,6 +30,9 @@
<ClCompile Include="StringBuilderAppendTests.cpp"> <ClCompile Include="StringBuilderAppendTests.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="JsonHashTableTests.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="JsonArray.h"> <ClInclude Include="JsonArray.h">
@ -41,5 +44,8 @@
<ClInclude Include="JsonObjectBase.h"> <ClInclude Include="JsonObjectBase.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="JsonHashTable.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -0,0 +1,38 @@
/*
* Arduino JSON library
* Benoit Blanchon 2014 - MIT License
*/
#pragma once
#include "JsonObjectBase.h"
template<int N>
class JsonHashTable : public JsonObjectBase
{
public:
using JsonObjectBase::writeTo;
private:
/* struct KeyValuePair
{
const char* key;
ObjectContainer value;
};*/
virtual void writeTo(StringBuilder& sb)
{
sb.append("{");
/*for (int i = 0; i < itemCount; i++)
{
if (i>0) sb.append(",");
writeObjectTo(items[i], sb);
}*/
sb.append("}");
}
};

View File

@ -0,0 +1,30 @@
#include "CppUnitTest.h"
#include "JsonHashTable.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace JsonGeneratorTests
{
TEST_CLASS(JsonHashTableTests)
{
JsonHashTable<2> hash;
public:
TEST_METHOD(Empty)
{
assertJsonIs("{}");
}
private:
void assertJsonIs(const char* expected)
{
char buffer[256];
hash.writeTo(buffer, sizeof(buffer));
Assert::AreEqual(expected, buffer);
}
};
}