Added a test with too few tokens

This commit is contained in:
Benoit Blanchon
2014-07-14 14:42:30 +02:00
parent 0b087b7bdb
commit cf1324c09b
2 changed files with 60 additions and 14 deletions

View File

@ -13,9 +13,10 @@ namespace ArduinoJsonParserTests
{
TEST_CLASS(JsonArrayTests)
{
JsonParser<32> parser;
JsonArray array;
char json[256];
jsmntok_t tokens[32];
JsonParserBase parser = JsonParserBase(tokens, 32);
public:
@ -25,13 +26,6 @@ namespace ArduinoJsonParserTests
parseMustFail();
}
TEST_METHOD(EmptyArray)
{
whenInputIs("[]");
parseMustSucceed();
lengthMustBe(0);
}
TEST_METHOD(TooFewClosingBrackets)
{
whenInputIs("[[]");
@ -44,47 +38,83 @@ namespace ArduinoJsonParserTests
parseMustFail();
}
TEST_METHOD(EmptyArray)
{
whenInputIs("[]");
parseMustSucceed();
lengthMustBe(0);
}
TEST_METHOD(NotEnoughTokens)
{
setTokenCountTo(2);
whenInputIs("[1,2]");
parseMustFail();
itemMustNotExist(0);
}
TEST_METHOD(TwoIntegers)
{
setTokenCountTo(3);
whenInputIs("[1,2]");
parseMustSucceed();
lengthMustBe(2);
itemMustBe(0, 1L);
itemMustBe(1, 2L);
itemMustNotExist(2);
}
TEST_METHOD(TwoBooleans)
{
setTokenCountTo(3);
whenInputIs("[true,false]");
parseMustSucceed();
lengthMustBe(2);
itemMustBe(0, true);
itemMustBe(1, false);
itemMustNotExist(2);
}
TEST_METHOD(TwoStrings)
{
setTokenCountTo(3);
whenInputIs("[\"hello\",\"world\"]");
parseMustSucceed();
lengthMustBe(2);
itemMustBe(0, "hello");
itemMustBe(1, "world");
itemMustNotExist(2);
}
TEST_METHOD(TwoDimensionsArray)
{
setTokenCountTo(7);
whenInputIs("[[1,2],[3,4]]");
parseMustSucceed();
lengthMustBe(2);
itemMustBe(0, 0, 1L);
itemMustBe(0, 1, 2L);
itemMustBe(1, 0, 3L);
itemMustBe(1, 1, 4L);
itemMustNotExist(2);
}
TEST_METHOD(ThreeDimensionsArray)
{
setTokenCountTo(15);
whenInputIs("[[[1,2],[3,4]],[[5,6],[7,8]]]");
parseMustSucceed();
lengthMustBe(2);
itemMustBe(0, 0, 0, 1L);
@ -95,10 +125,16 @@ namespace ArduinoJsonParserTests
itemMustBe(1, 0, 1, 6L);
itemMustBe(1, 1, 0, 7L);
itemMustBe(1, 1, 1, 8L);
itemMustNotExist(2);
}
private:
void setTokenCountTo(int n)
{
parser = JsonParserBase(tokens, n);
}
void whenInputIs(const char* input)
{
strcpy(json, input);
@ -145,5 +181,15 @@ namespace ArduinoJsonParserTests
{
Assert::AreEqual(expected, array.getArray(index0).getArray(index1).getLong(index2));
}
void itemMustNotExist(int index)
{
Assert::IsFalse(array.getHashTable(index).success());
Assert::IsFalse(array.getArray(index).success());
Assert::IsFalse(array.getBool(index));
Assert::AreEqual(0.0, array.getDouble(index));
Assert::AreEqual(0L, array.getLong(index));
Assert::IsNull(array.getString(index));
}
};
}

View File

@ -42,7 +42,7 @@ namespace ArduinoJsonParserTests
whenInputIs("{\"key\":0}");
parseMustFail();
itemMustNotExists("key");
itemMustNotExist("key");
}
TEST_METHOD(TwoIntegers)
@ -54,7 +54,7 @@ namespace ArduinoJsonParserTests
parseMustSucceed();
itemMustBe("key1", 1L);
itemMustBe("key2", 2L);
itemMustNotExists("key3");
itemMustNotExist("key3");
}
TEST_METHOD(TwoBooleans)
@ -66,7 +66,7 @@ namespace ArduinoJsonParserTests
parseMustSucceed();
itemMustBe("key1", true);
itemMustBe("key2", false);
itemMustNotExists("key3");
itemMustNotExist("key3");
}
TEST_METHOD(TwoStrings)
@ -78,7 +78,7 @@ namespace ArduinoJsonParserTests
parseMustSucceed();
itemMustBe("key1", "hello");
itemMustBe("key2", "world");
itemMustNotExists("key3");
itemMustNotExist("key3");
}
TEST_METHOD(TwoNestedArrays)
@ -100,7 +100,7 @@ namespace ArduinoJsonParserTests
arrayItemMustBe(1, 4L);
arrayItemMustBe(2, 0L);
itemMustNotExists("key3");
itemMustNotExist("key3");
}
private:
@ -141,7 +141,7 @@ namespace ArduinoJsonParserTests
Assert::AreEqual(expected, hashTable.getString(key));
}
void itemMustNotExists(const char* key)
void itemMustNotExist(const char* key)
{
Assert::IsFalse(hashTable.containsKey(key));
Assert::IsFalse(hashTable.getHashTable(key).success());