| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- /*
- * Arduino JSON library
- * Benoit Blanchon 2014 - MIT License
- */
- #define ARDUINO_JSON_NO_DEPRECATED_WARNING
- #include "CppUnitTest.h"
- #include "JsonParser.h"
- using namespace Microsoft::VisualStudio::CppUnitTestFramework;
- using namespace ArduinoJson::Parser;
- namespace ArduinoJsonParserTests
- {
- TEST_CLASS(JsonArrayTests)
- {
- JsonArray array;
- char json[256];
- jsmntok_t tokens[32];
- JsonParserBase parser = JsonParserBase(tokens, 32);
- public:
-
- TEST_METHOD(EmptyString)
- {
- whenInputIs("");
- parseMustFail();
- }
- TEST_METHOD(TooFewClosingBrackets)
- {
- whenInputIs("[[]");
- parseMustFail();
- }
- TEST_METHOD(TooManyClosingBrackets)
- {
- whenInputIs("[]]");
- 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);
- itemMustBe(0, 0, 1, 2L);
- itemMustBe(0, 1, 0, 3L);
- itemMustBe(0, 1, 1, 4L);
- itemMustBe(1, 0, 0, 5L);
- 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);
- array = parser.parseArray(json);
- }
- void parseMustFail()
- {
- Assert::IsFalse(array.success());
- lengthMustBe(0);
- }
- void parseMustSucceed()
- {
- Assert::IsTrue(array.success());
- }
- void lengthMustBe(int expected)
- {
- Assert::AreEqual(expected, array.getLength());
- }
- void itemMustBe(int index, long expected)
- {
- Assert::AreEqual(expected, array.getLong(index));
- }
- void itemMustBe(int index, bool expected)
- {
- Assert::AreEqual(expected, array.getBool(index));
- }
- void itemMustBe(int index, const char* expected)
- {
- Assert::AreEqual(expected, array.getString(index));
- }
- void itemMustBe(int index0, int index1, long expected)
- {
- Assert::AreEqual(expected, array.getArray(index0).getLong(index1));
- }
- void itemMustBe(int index0, int index1, int index2, long expected)
- {
- 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));
- }
- };
- }
|