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