TestArrays.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. /*
  2. * Arduino JSON library
  3. * Benoit Blanchon 2014 - MIT License
  4. */
  5. #include "CppUnitTest.h"
  6. #include "JsonParser.h"
  7. using namespace Microsoft::VisualStudio::CppUnitTestFramework;
  8. using namespace ArduinoJson::Parser;
  9. namespace ArduinoJsonParserTests
  10. {
  11. TEST_CLASS(TestArrays)
  12. {
  13. JsonParser<32> parser;
  14. public:
  15. TEST_METHOD(EmptyString)
  16. {
  17. char json[] = "";
  18. JsonArray array = parser.parseArray(json);
  19. Assert::IsFalse(array.success());
  20. }
  21. TEST_METHOD(EmptyArray)
  22. {
  23. char json[] = "[]";
  24. JsonArray array = parser.parseArray(json);
  25. Assert::IsTrue(array.success());
  26. }
  27. TEST_METHOD(TooFewClosingBrackets)
  28. {
  29. char json[] = "[[]";
  30. JsonArray array = parser.parseArray(json);
  31. Assert::IsFalse(array.success());
  32. }
  33. TEST_METHOD(TooManyClosingBrackets)
  34. {
  35. char json[] = "[]]";
  36. JsonArray array = parser.parseArray(json);
  37. Assert::IsFalse(array.success());
  38. }
  39. TEST_METHOD(OneDimensionArray)
  40. {
  41. char json [] = "[0,0]";
  42. JsonArray array = parser.parseArray(json);
  43. Assert::IsTrue(array.success());
  44. Assert::AreEqual(2, array.getLength());
  45. for (int i = 0; i < 2; i++)
  46. {
  47. Assert::AreEqual(0L, array.getLong(i));
  48. }
  49. }
  50. TEST_METHOD(TwoDimensionsArray)
  51. {
  52. char json[] = "[[0,0],[0,0]]";
  53. JsonArray array1 = parser.parseArray(json);
  54. Assert::IsTrue(array1.success());
  55. Assert::AreEqual(2, array1.getLength());
  56. for (int i = 0; i < 2; i++)
  57. {
  58. JsonArray array2 = array1.getArray(i);
  59. Assert::AreEqual(2, array2.getLength());
  60. for (int j = 0; j < 2; j++)
  61. {
  62. Assert::AreEqual(0L, array2.getLong(j));
  63. }
  64. }
  65. }
  66. TEST_METHOD(TreeDimensionsArray)
  67. {
  68. char json[] = "[[[0,0],[0,0]],[[0,0],[0,0]]]";
  69. JsonArray array1 = parser.parseArray(json);
  70. Assert::IsTrue(array1.success());
  71. Assert::AreEqual(2, array1.getLength());
  72. for (int i = 0; i < 2; i++)
  73. {
  74. JsonArray array2 = array1.getArray(i);
  75. Assert::AreEqual(2, array2.getLength());
  76. for (int j = 0; j < 2; j++)
  77. {
  78. JsonArray array3 = array2.getArray(j);
  79. Assert::AreEqual(2, array3.getLength());
  80. for (int k = 0; k < 2; k++)
  81. {
  82. Assert::AreEqual(0L, array3.getLong(k));
  83. }
  84. }
  85. }
  86. }
  87. TEST_METHOD(OneDimensionArrayInHashTable)
  88. {
  89. char json[] = "{a:[0,0],b:[0,0]}";
  90. JsonHashTable root = parser.parseHashTable(json);
  91. Assert::IsTrue(root.success());
  92. JsonArray arrayA = root.getArray("a");
  93. Assert::IsTrue(arrayA.success());
  94. Assert::AreEqual(2, arrayA.getLength());
  95. JsonArray arrayB = root.getArray("b");
  96. Assert::IsTrue(arrayB.success());
  97. Assert::AreEqual(2, arrayB.getLength());
  98. }
  99. TEST_METHOD(TwoDimensionsArrayInHashTable)
  100. {
  101. char json[] = "{a:[[0],[0]],b:[[0],[0]]}";
  102. JsonHashTable root = parser.parseHashTable(json);
  103. Assert::IsTrue(root.success());
  104. JsonArray arrayA = root.getArray("a");
  105. Assert::IsTrue(arrayA.success());
  106. Assert::AreEqual(2, arrayA.getLength());
  107. JsonArray arrayB = root.getArray("b");
  108. Assert::IsTrue(arrayB.success());
  109. Assert::AreEqual(2, arrayB.getLength());
  110. }
  111. };
  112. }