cJSON-test.cpp 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. #include "gtest/gtest.h"
  2. #include "test_common.h"
  3. extern "C" {
  4. #include "PikaMain.h"
  5. #include "PikaParser.h"
  6. #include "PikaStdLib_MemChecker.h"
  7. #include "PikaVM.h"
  8. #include "dataArgs.h"
  9. #include "dataMemory.h"
  10. #include "dataStrs.h"
  11. #include "pikaScript.h"
  12. #include "pika_config_gtest.h"
  13. }
  14. extern PikaMemInfo pikaMemInfo;
  15. /* the log_buff of printf */
  16. extern char log_buff[LOG_BUFF_MAX][LOG_SIZE];
  17. TEST(cJSON, parse_print) {
  18. /* init */
  19. pikaMemInfo.heapUsedMax = 0;
  20. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  21. char testjson[] =
  22. "{\n"
  23. "\"name\": \"mculover666\",\n"
  24. "\"age\": 22,\n"
  25. "\"weight\": 55.5,\n"
  26. "\"address\":\n"
  27. "{\n"
  28. " \"country\": \"China\",\n"
  29. " \"zip-code\": 111111\n"
  30. "},\n"
  31. "\"skill\": [\"c\", \"Java\", \"Python\"],\n"
  32. "\"student\": false\n"
  33. "}\n";
  34. /* run */
  35. obj_setStr(pikaMain, "testjson", testjson);
  36. obj_run(pikaMain,
  37. "a = pika_cjson.cJSON()\n"
  38. "a.parse(testjson)\n"
  39. "a.print()\n");
  40. /* collect */
  41. /* assert */
  42. /* deinit */
  43. obj_deinit(pikaMain);
  44. EXPECT_EQ(pikaMemNow(), 0);
  45. }
  46. TEST(cJSON, getItem) {
  47. /* init */
  48. pikaMemInfo.heapUsedMax = 0;
  49. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  50. char testjson[] =
  51. "{\n"
  52. "\"name\": \"mculover666\",\n"
  53. "\"age\": 22,\n"
  54. "\"weight\": 55.5,\n"
  55. "\"address\":\n"
  56. "{\n"
  57. " \"country\": \"China\",\n"
  58. " \"zip-code\": 111111\n"
  59. "},\n"
  60. "\"skill\": [\"c\", \"Java\", \"Python\"],\n"
  61. "\"student\": false\n"
  62. "}\n";
  63. /* run */
  64. obj_setStr(pikaMain, "testjson", testjson);
  65. __platform_printf("BEGIN\r\n");
  66. obj_run(pikaMain,
  67. "a = pika_cjson.cJSON()\n"
  68. "a.parse(testjson)\n"
  69. "age = a.getObjectItem('age')\n"
  70. "age.print()\n");
  71. /* collect */
  72. /* assert */
  73. EXPECT_STREQ(log_buff[1], "BEGIN\r\n");
  74. EXPECT_STREQ(log_buff[0], "22\r\n");
  75. /* deinit */
  76. obj_deinit(pikaMain);
  77. EXPECT_EQ(pikaMemNow(), 0);
  78. }
  79. TEST(cJSON, next) {
  80. /* init */
  81. pikaMemInfo.heapUsedMax = 0;
  82. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  83. char testjson[] =
  84. "{\n"
  85. "\"name\": \"mculover666\",\n"
  86. "\"age\": 22,\n"
  87. "\"weight\": 55.5,\n"
  88. "\"address\":\n"
  89. "{\n"
  90. " \"country\": \"China\",\n"
  91. " \"zip-code\": 111111\n"
  92. "},\n"
  93. "\"skill\": [\"c\", \"Java\", \"Python\"],\n"
  94. "\"student\": false\n"
  95. "}\n";
  96. /* run */
  97. obj_setStr(pikaMain, "testjson", testjson);
  98. __platform_printf("BEGIN\r\n");
  99. obj_run(pikaMain,
  100. "a = pika_cjson.cJSON()\n"
  101. "a.parse(testjson)\n"
  102. "node = a.getChild()\n"
  103. "for i in range(0, 3):\n"
  104. " node.print()\n"
  105. " node = node.getNext()\n"
  106. "\n");
  107. /* collect */
  108. EXPECT_STREQ(log_buff[3], "BEGIN\r\n");
  109. EXPECT_STREQ(log_buff[2], "\"mculover666\"\r\n");
  110. EXPECT_STREQ(log_buff[1], "22\r\n");
  111. EXPECT_STREQ(log_buff[0], "55.5\r\n");
  112. /* assert */
  113. /* deinit */
  114. obj_deinit(pikaMain);
  115. EXPECT_EQ(pikaMemNow(), 0);
  116. }
  117. TEST(cJSON, next_get_value) {
  118. /* init */
  119. pikaMemInfo.heapUsedMax = 0;
  120. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  121. char testjson[] =
  122. "{\n"
  123. "\"name\": \"mculover666\",\n"
  124. "\"age\": 22,\n"
  125. "\"weight\": 55.5,\n"
  126. "\"address\":\n"
  127. "{\n"
  128. " \"country\": \"China\",\n"
  129. " \"zip-code\": 111111\n"
  130. "},\n"
  131. "\"skill\": [\"c\", \"Java\", \"Python\"],\n"
  132. "\"student\": false\n"
  133. "}\n";
  134. /* run */
  135. obj_setStr(pikaMain, "testjson", testjson);
  136. __platform_printf("BEGIN\r\n");
  137. obj_run(pikaMain,
  138. "a = pika_cjson.cJSON()\n"
  139. "a.parse(testjson)\n"
  140. "node = a.getChild()\n"
  141. "val = PikaStdData.List()\n"
  142. "for i in range(0, 3):\n"
  143. " val.append(node.getValue())\n"
  144. " node = node.getNext()\n"
  145. "for item in val:\n"
  146. " print(item)\n"
  147. "\n");
  148. /* collect */
  149. /* assert */
  150. EXPECT_STREQ(log_buff[3], "BEGIN\r\n");
  151. EXPECT_STREQ(log_buff[2], "mculover666\r\n");
  152. EXPECT_STREQ(log_buff[1], "22.000000\r\n");
  153. EXPECT_STREQ(log_buff[0], "55.500000\r\n");
  154. /* deinit */
  155. obj_deinit(pikaMain);
  156. EXPECT_EQ(pikaMemNow(), 0);
  157. }