Added unit tests on multi-dimensional arrays to isolate the bug

This commit is contained in:
Benoit Blanchon
2014-02-27 13:03:25 +01:00
parent 597b4c7888
commit b35095ded1
3 changed files with 81 additions and 0 deletions

View File

@ -96,6 +96,7 @@
<ClCompile Include="..\JsonObjectBase.cpp" /> <ClCompile Include="..\JsonObjectBase.cpp" />
<ClCompile Include="..\utility\jsmn.cpp" /> <ClCompile Include="..\utility\jsmn.cpp" />
<ClCompile Include="TestArrayExample.cpp" /> <ClCompile Include="TestArrayExample.cpp" />
<ClCompile Include="TestArrays.cpp" />
<ClCompile Include="TestHashTableExample.cpp" /> <ClCompile Include="TestHashTableExample.cpp" />
<ClCompile Include="TestGbathreeStrings.cpp" /> <ClCompile Include="TestGbathreeStrings.cpp" />
</ItemGroup> </ItemGroup>

View File

@ -53,5 +53,8 @@
<ClCompile Include="TestGbathreeStrings.cpp"> <ClCompile Include="TestGbathreeStrings.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="TestArrays.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
</Project> </Project>

77
tests/TestArrays.cpp Normal file
View File

@ -0,0 +1,77 @@
#include "CppUnitTest.h"
#include "JsonParser.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace ArduinoJsonParserTests
{
TEST_CLASS(TestArrays)
{
JsonParser<32> parser;
public:
TEST_METHOD(OneDimensionArray)
{
char json [] = "[0,0]";
JsonArray array = parser.parseArray(json);
Assert::IsTrue(array.success());
Assert::AreEqual(2, array.getLength());
for (int i = 0; i < 2; i++)
{
Assert::AreEqual(0L, array.getLong(i));
}
}
TEST_METHOD(TwoDimensionArray)
{
char json[] = "[[0,0],[0,0]]";
JsonArray array1 = parser.parseArray(json);
Assert::IsTrue(array1.success());
Assert::AreEqual(2, array1.getLength());
for (int i = 0; i < 2; i++)
{
JsonArray array2 = array1.getArray(i);
Assert::AreEqual(2, array2.getLength());
for (int j = 0; j < 2; j++)
{
Assert::AreEqual(0L, array2.getLong(j));
}
}
}
TEST_METHOD(TreeDimensionArray)
{
char json[] = "[[[0,0],[0,0]],[[0,0],[0,0]]]]";
JsonArray array1 = parser.parseArray(json);
Assert::IsTrue(array1.success());
Assert::AreEqual(2, array1.getLength());
for (int i = 0; i < 2; i++)
{
JsonArray array2 = array1.getArray(i);
Assert::AreEqual(2, array2.getLength());
for (int j = 0; j < 2; j++)
{
JsonArray array3 = array2.getArray(j);
Assert::AreEqual(2, array3.getLength());
for (int k = 0; k < 2; k++)
{
Assert::AreEqual(0L, array3.getLong(k));
}
}
}
}
};
}