From cf1324c09bec4127bd18c121f103e49515dbc0c4 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Mon, 14 Jul 2014 14:42:30 +0200 Subject: [PATCH] Added a test with too few tokens --- JsonParserTests/JsonArrayTests.cpp | 62 ++++++++++++++++++++++---- JsonParserTests/JsonHashTableTests.cpp | 12 ++--- 2 files changed, 60 insertions(+), 14 deletions(-) diff --git a/JsonParserTests/JsonArrayTests.cpp b/JsonParserTests/JsonArrayTests.cpp index 4e6cde6e..8ce9878f 100644 --- a/JsonParserTests/JsonArrayTests.cpp +++ b/JsonParserTests/JsonArrayTests.cpp @@ -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)); + } }; } \ No newline at end of file diff --git a/JsonParserTests/JsonHashTableTests.cpp b/JsonParserTests/JsonHashTableTests.cpp index e503e829..95e74c71 100644 --- a/JsonParserTests/JsonHashTableTests.cpp +++ b/JsonParserTests/JsonHashTableTests.cpp @@ -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());