except-test.cpp 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. #include "test_common.h"
  2. #if PIKA_SYNTAX_EXCEPTION_ENABLE
  3. TEST(except, try1) {
  4. /* init */
  5. pikaMemInfo.heapUsedMax = 0;
  6. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  7. __platform_printf("BEGIN\r\n");
  8. /* run */
  9. obj_run(pikaMain,
  10. "try:\n"
  11. " print('before raise')\n"
  12. " raise \n"
  13. " print('after raise')\n"
  14. "except:\n"
  15. " print('in except')\n"
  16. "\n");
  17. /* collect */
  18. EXPECT_STREQ("BEGIN\r\n", log_buff[2]);
  19. EXPECT_STREQ("before raise\r\n", log_buff[1]);
  20. EXPECT_STREQ("in except\r\n", log_buff[0]);
  21. /* assert */
  22. /* deinit */
  23. obj_deinit(pikaMain);
  24. EXPECT_EQ(pikaMemNow(), 0);
  25. }
  26. TEST(except, trycmodule1) {
  27. /* init */
  28. pikaMemInfo.heapUsedMax = 0;
  29. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  30. __platform_printf("BEGIN\r\n");
  31. /* run */
  32. obj_run(pikaMain,
  33. "import pika_cjson\n"
  34. "try:\n"
  35. " b = pika_cjson.Parse('')\n"
  36. " print('after faild')\n"
  37. "except:\n"
  38. " print('parse faild')\n"
  39. "\n");
  40. /* collect */
  41. EXPECT_STREQ("BEGIN\r\n", log_buff[2]);
  42. /* assert */
  43. /* deinit */
  44. obj_deinit(pikaMain);
  45. EXPECT_EQ(pikaMemNow(), 0);
  46. }
  47. TEST(except, trydef1) {
  48. /* init */
  49. pikaMemInfo.heapUsedMax = 0;
  50. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  51. __platform_printf("BEGIN\r\n");
  52. /* run */
  53. pikaVM_runSingleFile(pikaMain, "../../examples/Exception/trydef1.py");
  54. /* collect */
  55. /* assert */
  56. EXPECT_STREQ("BEGIN\r\n", log_buff[2]);
  57. EXPECT_STREQ("a:1\r\n", log_buff[1]);
  58. EXPECT_STREQ("in except\r\n", log_buff[0]);
  59. /* deinit */
  60. obj_deinit(pikaMain);
  61. EXPECT_EQ(pikaMemNow(), 0);
  62. }
  63. TEST(except, try1file) {
  64. /* init */
  65. pikaMemInfo.heapUsedMax = 0;
  66. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  67. __platform_printf("BEGIN\r\n");
  68. /* run */
  69. pikaVM_runSingleFile(pikaMain, "../../examples/Exception/try1.py");
  70. /* collect */
  71. EXPECT_STREQ("BEGIN\r\n", log_buff[2]);
  72. EXPECT_STREQ("before raise\r\n", log_buff[1]);
  73. EXPECT_STREQ("in except\r\n", log_buff[0]);
  74. /* assert */
  75. /* deinit */
  76. obj_deinit(pikaMain);
  77. EXPECT_EQ(pikaMemNow(), 0);
  78. }
  79. TEST(except, for_loop) {
  80. /* init */
  81. pikaMemInfo.heapUsedMax = 0;
  82. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  83. __platform_printf("BEGIN\r\n");
  84. /* run */
  85. obj_run(pikaMain,
  86. "sum = 0\n"
  87. "for i in range(0, 10):\n"
  88. " try:\n"
  89. " if i == 3:\n"
  90. " raise\n"
  91. " print(i)\n"
  92. " sum += i\n"
  93. " except:\n"
  94. " print('in except')\n"
  95. "\n");
  96. /* collect */
  97. int sum = obj_getInt(pikaMain, "sum");
  98. /* assert */
  99. EXPECT_EQ(sum, 42);
  100. /* deinit */
  101. obj_deinit(pikaMain);
  102. EXPECT_EQ(pikaMemNow(), 0);
  103. }
  104. TEST(except, dict) {
  105. /* init */
  106. pikaMemInfo.heapUsedMax = 0;
  107. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  108. __platform_printf("BEGIN\r\n");
  109. /* run */
  110. pikaVM_runSingleFile(pikaMain, "../../examples/Exception/trydict.py");
  111. /* collect */
  112. int res = obj_getInt(pikaMain, "res");
  113. EXPECT_EQ(res, 5);
  114. /* assert */
  115. /* deinit */
  116. obj_deinit(pikaMain);
  117. EXPECT_EQ(pikaMemNow(), 0);
  118. }
  119. TEST(except, len) {
  120. /* init */
  121. pikaMemInfo.heapUsedMax = 0;
  122. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  123. __platform_printf("BEGIN\r\n");
  124. /* run */
  125. pikaVM_runSingleFile(pikaMain, "../../examples/Exception/trylen.py");
  126. /* collect */
  127. int res = obj_getInt(pikaMain, "res");
  128. EXPECT_EQ(res, 5);
  129. /* assert */
  130. /* deinit */
  131. obj_deinit(pikaMain);
  132. EXPECT_EQ(pikaMemNow(), 0);
  133. }
  134. #endif