json-test.cpp 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #include "test_common.h"
  2. TEST_START
  3. #if !PIKA_NANO_ENABLE
  4. TEST_RUN_SINGLE_FILE_PASS(json, loads, "test/python/json/json_loads.py")
  5. #if PIKA_FLOAT_TYPE_DOUBLE
  6. TEST(json, dumps) {
  7. g_PikaMemInfo.heapUsedMax = 0;
  8. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  9. extern unsigned char pikaModules_py_a[];
  10. obj_linkLibrary(pikaMain, pikaModules_py_a);
  11. /* run */
  12. __platform_printf("BEGIN\r\n");
  13. pikaVM_runSingleFile(pikaMain, "test/python/json/json_dumps.py");
  14. /* assert */
  15. EXPECT_STREQ(obj_getStr(pikaMain, "s1"),
  16. "{\n\t\"a\":\t1,\n\t\"b\":\t2,\n\t\"c\":\t3\n}");
  17. EXPECT_STREQ(obj_getStr(pikaMain, "s2"),
  18. "{\n\t\"a\":\t1,\n\t\"b\":\t2,\n\t\"c\":\t3,\n\t\"d\":\t{"
  19. "\n\t\t\"e\":\t4,\n\t\t\"f\":\t5\n\t}\n}");
  20. EXPECT_STREQ(
  21. obj_getStr(pikaMain, "s3"),
  22. "{\n\t\"a\":\t1,\n\t\"b\":\t2,\n\t\"c\":\t3,\n\t\"d\":\t{\n\t\t\"e\":"
  23. "\t4,\n\t\t\"f\":\t5\n\t},\n\t\"g\":\t[6, 7, 8]\n}");
  24. EXPECT_STREQ(obj_getStr(pikaMain, "s4"),
  25. "{\n\t\"a\":\t1,\n\t\"b\":\t2,\n\t\"c\":\t3,\n\t\"d\":\t{"
  26. "\n\t\t\"e\":\t4,\n\t\t\"f\":\t5\n\t},\n\t\"g\":\t[6, 7, "
  27. "8],\n\t\"h\":\tnull,\n\t\"i\":\tfalse,\n\t\"j\":\ttrue,"
  28. "\n\t\"k\":\t\"string\",\n\t\"l\":\t1.234\n}");
  29. /* deinit */
  30. obj_deinit(pikaMain);
  31. EXPECT_EQ(pikaMemNow(), 0);
  32. }
  33. TEST_RUN_SINGLE_FILE_PASS(_json, loads, "test/python/json/_json_loads.py")
  34. TEST_RUN_SINGLE_FILE(json, speed, "test/python/json/json_speed.py")
  35. TEST(json, speed_diff) {
  36. g_PikaMemInfo.heapUsedMax = 0;
  37. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  38. extern unsigned char pikaModules_py_a[];
  39. obj_linkLibrary(pikaMain, pikaModules_py_a);
  40. /* run */
  41. __platform_printf("BEGIN\r\n");
  42. pikaVM_runSingleFile(pikaMain, "test/python/json/json_speed.py");
  43. /* assert */
  44. char* str_res_cjson = obj_getStr(pikaMain, "str_res_cjson");
  45. char* str_res_jsmn = obj_getStr(pikaMain, "str_res_jsmn");
  46. ASSERT_STREQ(str_res_cjson, str_res_jsmn);
  47. /* deinit */
  48. obj_deinit(pikaMain);
  49. EXPECT_EQ(pikaMemNow(), 0);
  50. }
  51. TEST(json, issue1) {
  52. g_PikaMemInfo.heapUsedMax = 0;
  53. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  54. extern unsigned char pikaModules_py_a[];
  55. obj_linkLibrary(pikaMain, pikaModules_py_a);
  56. /* run */
  57. __platform_printf("BEGIN\r\n");
  58. pikaVM_runSingleFile(pikaMain, "test/python/json/json_issue1.py");
  59. /* assert */
  60. int act_time_s = obj_getInt(pikaMain, "act_time_s");
  61. ASSERT_EQ(act_time_s, 300);
  62. /* deinit */
  63. obj_deinit(pikaMain);
  64. EXPECT_EQ(pikaMemNow(), 0);
  65. }
  66. TEST_RUN_SINGLE_FILE(json, err, "test/python/json/json_err.py")
  67. #endif
  68. #endif
  69. TEST_END