json-test.cpp 4.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #include "test_common.h"
  2. TEST_START
  3. #if !PIKA_NANO_ENABLE
  4. TEST(json, loads) {
  5. g_PikaMemInfo.heapUsedMax = 0;
  6. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  7. extern unsigned char pikaModules_py_a[];
  8. obj_linkLibrary(pikaMain, pikaModules_py_a);
  9. /* run */
  10. __platform_printf("BEGIN\r\n");
  11. pikaVM_runSingleFile(pikaMain, "test/python/json/json_loads.py");
  12. /* collect */
  13. /* assert */
  14. /* clang-format off */
  15. /*
  16. {'c': 3.000000, 'b': 2.000000, 'a': 1.000000}
  17. {'d': {'f': 5.000000, 'e': 4.000000}, 'c': 3.000000, 'b': 2.000000, 'a': 1.000000}
  18. {'g': [6.000000, 7.000000, 8.000000], 'd': {'f': 5.000000, 'e': 4.000000}, 'c': 3.000000, 'b': 2.000000, 'a': 1.000000}
  19. {'h': None, 'g': [6.000000, 7.000000, 8.000000], 'd': {'f': 5.000000, 'e': 4.000000}, 'c': 3.000000, 'b': 2.000000, 'a': 1.000000}
  20. {'i': 0, 'h': None, 'g': [6.000000, 7.000000, 8.000000], 'd': {'f': 5.000000, 'e': 4.000000}, 'c': 3.000000, 'b': 2.000000, 'a': 1.000000}
  21. {'j': 1, 'i': 0, 'h': None, 'g': [6.000000, 7.000000, 8.000000], 'd': {'f': 5.000000, 'e': 4.000000}, 'c': 3.000000, 'b': 2.000000, 'a': 1.000000}
  22. {'k': 'string', 'j': 1, 'i': 0, 'h': None, 'g': [6.000000, 7.000000, 8.000000], 'd': {'f': 5.000000, 'e': 4.000000}, 'c': 3.000000, 'b': 2.000000, 'a': 1.000000}
  23. {'l': 1.234000, 'k': 'string', 'j': 1, 'i': 0, 'h': None, 'g': [6.000000, 7.000000, 8.000000], 'd': {'f': 5.000000, 'e': 4.000000}, 'c': 3.000000, 'b': 2.000000, 'a': 1.000000}
  24. */
  25. /* clang-format on */
  26. EXPECT_STREQ(log_buff[8], "BEGIN\r\n");
  27. EXPECT_STREQ(log_buff[7],
  28. "{'c': 3.000000, 'b': 2.000000, 'a': 1.000000}\r\n");
  29. EXPECT_STREQ(log_buff[6],
  30. "{'d': {'f': 5.000000, 'e': 4.000000}, 'c': 3.000000, 'b': "
  31. "2.000000, 'a': 1.000000}\r\n");
  32. EXPECT_STREQ(
  33. log_buff[5],
  34. "{'g': [6.000000, 7.000000, 8.000000], 'd': {'f': 5.000000, 'e': "
  35. "4.000000}, 'c': 3.000000, 'b': 2.000000, 'a': 1.000000}\r\n");
  36. EXPECT_STREQ(
  37. log_buff[4],
  38. "{'h': None, 'g': [6.000000, 7.000000, 8.000000], 'd': {'f': 5.000000, "
  39. "'e': 4.000000}, 'c': 3.000000, 'b': 2.000000, 'a': 1.000000}\r\n");
  40. EXPECT_STREQ(log_buff[3],
  41. "{'i': False, 'h': None, 'g': [6.000000, 7.000000, 8.000000], "
  42. "'d': {'f': 5.000000, 'e': 4.000000}, 'c': 3.000000, 'b': "
  43. "2.000000, 'a': 1.000000}\r\n");
  44. EXPECT_STREQ(log_buff[2],
  45. "{'j': True, 'i': False, 'h': None, 'g': [6.000000, 7.000000, "
  46. "8.000000], 'd': {'f': 5.000000, 'e': 4.000000}, 'c': "
  47. "3.000000, 'b': 2.000000, 'a': 1.000000}\r\n");
  48. EXPECT_STREQ(log_buff[1],
  49. "{'k': 'string', 'j': True, 'i': False, 'h': None, 'g': [6.000000, "
  50. "7.000000, 8.000000], 'd': {'f': 5.000000, 'e': 4.000000}, "
  51. "'c': 3.000000, 'b': 2.000000, 'a': 1.000000}\r\n");
  52. EXPECT_STREQ(
  53. log_buff[0],
  54. "{'l': 1.234000, 'k': 'string', 'j': True, 'i': False, 'h': None, 'g': "
  55. "[6.000000, 7.000000, 8.000000], 'd': {'f': 5.000000, 'e': 4.000000}, "
  56. "'c': 3.000000, 'b': 2.000000, 'a': 1.000000}\r\n");
  57. /* deinit */
  58. obj_deinit(pikaMain);
  59. EXPECT_EQ(pikaMemNow(), 0);
  60. }
  61. #if PIKA_FLOAT_TYPE_DOUBLE
  62. TEST(json, dumps) {
  63. g_PikaMemInfo.heapUsedMax = 0;
  64. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  65. extern unsigned char pikaModules_py_a[];
  66. obj_linkLibrary(pikaMain, pikaModules_py_a);
  67. /* run */
  68. __platform_printf("BEGIN\r\n");
  69. pikaVM_runSingleFile(pikaMain, "test/python/json/json_dumps.py");
  70. /* assert */
  71. EXPECT_STREQ(obj_getStr(pikaMain, "s1"),
  72. "{\n\t\"c\":\t3,\n\t\"b\":\t2,\n\t\"a\":\t1\n}");
  73. EXPECT_STREQ(obj_getStr(pikaMain, "s2"),
  74. "{\n\t\"d\":\t{\n\t\t\"f\":\t5,\n\t\t\"e\":\t4\n\t},\n\t\"c\":"
  75. "\t3,\n\t\"b\":\t2,\n\t\"a\":\t1\n}");
  76. EXPECT_STREQ(obj_getStr(pikaMain, "s3"),
  77. "{\n\t\"g\":\t[6, 7, "
  78. "8],\n\t\"d\":\t{\n\t\t\"f\":\t5,\n\t\t\"e\":\t4\n\t},"
  79. "\n\t\"c\":\t3,\n\t\"b\":\t2,\n\t\"a\":\t1\n}");
  80. EXPECT_STREQ(obj_getStr(pikaMain, "s4"),
  81. "{\n\t\"l\":\t1.234,\n\t\"k\":\t\"string\",\n\t\"j\":\ttrue,"
  82. "\n\t\"i\":\tfalse,\n\t\"h\":\tnull,\n\t\"g\":\t[6, 7, "
  83. "8],\n\t\"d\":\t{\n\t\t\"f\":\t5,\n\t\t\"e\":\t4\n\t},"
  84. "\n\t\"c\":\t3,\n\t\"b\":\t2,\n\t\"a\":\t1\n}");
  85. /* deinit */
  86. obj_deinit(pikaMain);
  87. EXPECT_EQ(pikaMemNow(), 0);
  88. }
  89. #endif
  90. #endif
  91. TEST_END