Fixed bug in JsonArray::begin() and end()

This commit is contained in:
Benoit Blanchon
2014-07-19 14:55:16 +02:00
parent 0fe77176e1
commit cd7a7b1533
4 changed files with 23 additions and 8 deletions

View File

@ -35,19 +35,19 @@ namespace ArduinoJson
int size()
{
return isArray() ? JsonToken::size() : 0;
return isArray() ? childrenCount() : 0;
}
JsonValue operator[](int index);
JsonArrayIterator begin()
{
return firstChild();
return isArray() ? firstChild() : null();
}
JsonArrayIterator end()
{
return nextSibling();
return isArray() ? nextSibling() : null();
}
DEPRECATED int getLength()

View File

@ -28,7 +28,7 @@ JsonValue JsonObject::operator[](const char* desiredKey)
JsonToken runningToken = firstChild();
// scan each keys
for (int i = 0; i < size() / 2; i++)
for (int i = 0; i < childrenCount() / 2; i++)
{
// get 'key' token string
char* key = runningToken.getText();

View File

@ -75,7 +75,7 @@ namespace ArduinoJson
return token != 0 && token->type == JSMN_STRING;
}
int size()
int childrenCount()
{
return token->size;
}

View File

@ -10,6 +10,23 @@ namespace JsonParserTests
TEST_CLASS(JsonArrayIteratorTests)
{
public:
TEST_METHOD(EmptyJson)
{
char json[] = "";
JsonParser<1> parser;
JsonArray a = parser.parse(json);
int loopCount = 0;
for (long i : a)
{
loopCount++;
}
Assert::AreEqual(0, loopCount);
}
TEST_METHOD(ThreeIntegers)
{
@ -17,8 +34,7 @@ namespace JsonParserTests
long expected [] = { 1, 2, 3 };
JsonParser<4> parser;
JsonValue v = parser.parse(json);
JsonArray a = (ArduinoJson::Parser::JsonArray)v;
JsonArray a = parser.parse(json);
int index = 0;
@ -27,6 +43,5 @@ namespace JsonParserTests
Assert::AreEqual(expected[index++], i);
}
}
};
}