builtin-test.cpp 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. #include "test_common.h"
  2. TEST_START
  3. #if PIKA_SYNTAX_SLICE_ENABLE
  4. TEST(builtin, bytes) {
  5. /* init */
  6. pikaMemInfo.heapUsedMax = 0;
  7. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  8. /* run */
  9. __platform_printf("BEGIN\r\n");
  10. pikaVM_runSingleFile(pikaMain, "../../examples/BuiltIn/bytes.py");
  11. /* collect */
  12. uint8_t* res = obj_getBytes(pikaMain, "res");
  13. /* assert */
  14. EXPECT_EQ(res[1], 1);
  15. /* deinit */
  16. obj_deinit(pikaMain);
  17. EXPECT_EQ(pikaMemNow(), 0);
  18. }
  19. #endif
  20. #if PIKA_BUILTIN_STRUCT_ENABLE
  21. TEST(builtin, type1) {
  22. /* init */
  23. pikaMemInfo.heapUsedMax = 0;
  24. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  25. /* run */
  26. __platform_printf("BEGIN\r\n");
  27. pikaVM_runSingleFile(pikaMain, "../../examples/BuiltIn/type.py");
  28. /* collect */
  29. /* assert */
  30. EXPECT_STREQ(log_buff[1], "BEGIN\r\n");
  31. EXPECT_STREQ(log_buff[0], "OK\r\n");
  32. /* deinit */
  33. obj_deinit(pikaMain);
  34. EXPECT_EQ(pikaMemNow(), 0);
  35. }
  36. #endif
  37. #if PIKA_SYNTAX_LEVEL == PIKA_SYNTAX_LEVEL_MAXIMAL
  38. TEST(builtin, seek) {
  39. /* init */
  40. pikaMemInfo.heapUsedMax = 0;
  41. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  42. /* run */
  43. __platform_printf("BEGIN\r\n");
  44. pikaVM_runSingleFile(pikaMain, "../../examples/BuiltIn/seek.py");
  45. /* collect */
  46. int len = obj_getInt(pikaMain, "len");
  47. /* assert */
  48. EXPECT_EQ(len, 3576);
  49. /* deinit */
  50. obj_deinit(pikaMain);
  51. EXPECT_EQ(pikaMemNow(), 0);
  52. }
  53. #endif
  54. #if (PIKA_SYNTAX_LEVEL == PIKA_SYNTAX_LEVEL_MAXIMAL)
  55. TEST(builtin, file2) {
  56. /* init */
  57. pikaMemInfo.heapUsedMax = 0;
  58. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  59. /* run */
  60. __platform_printf("BEGIN\r\n");
  61. pikaVM_runSingleFile(pikaMain, "../../examples/BuiltIn/file2.py");
  62. /* collect */
  63. char* s = obj_getStr(pikaMain, "s");
  64. /* assert */
  65. EXPECT_STREQ(s, "import PikaStdLib\n");
  66. /* deinit */
  67. obj_deinit(pikaMain);
  68. EXPECT_EQ(pikaMemNow(), 0);
  69. }
  70. #endif
  71. #if PIKA_SYNTAX_LEVEL == PIKA_SYNTAX_LEVEL_MAXIMAL
  72. TEST(builtin, file3) {
  73. /* init */
  74. pikaMemInfo.heapUsedMax = 0;
  75. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  76. /* run */
  77. __platform_printf("BEGIN\r\n");
  78. pikaVM_runSingleFile(pikaMain, "../../examples/BuiltIn/file3.py");
  79. /* collect */
  80. /* assert */
  81. /* deinit */
  82. obj_deinit(pikaMain);
  83. EXPECT_EQ(pikaMemNow(), 0);
  84. }
  85. #endif
  86. #if (PIKA_SYNTAX_LEVEL == PIKA_SYNTAX_LEVEL_MAXIMAL) && !PIKA_POOL_ENABLE
  87. TEST(builtin, bigfile) {
  88. /* init */
  89. pikaMemInfo.heapUsedMax = 0;
  90. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  91. /* run */
  92. __platform_printf("BEGIN\r\n");
  93. pikaVM_runSingleFile(pikaMain, "../../examples/BuiltIn/bigfile.py");
  94. /* collect */
  95. // uint8_t* b = obj_getBytes(pikaMain, "b");
  96. /* assert */
  97. /* deinit */
  98. obj_deinit(pikaMain);
  99. EXPECT_EQ(pikaMemNow(), 0);
  100. }
  101. #endif
  102. TEST(builtin, nofound) {
  103. /* init */
  104. pikaMemInfo.heapUsedMax = 0;
  105. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  106. /* run */
  107. __platform_printf("BEGIN\r\n");
  108. pikaVM_runSingleFile(pikaMain, "../../examples/BuiltIn/file_nofound.py");
  109. /* collect */
  110. /* assert */
  111. /* deinit */
  112. obj_deinit(pikaMain);
  113. EXPECT_EQ(pikaMemNow(), 0);
  114. }
  115. #if PIKA_SYNTAX_LEVEL == PIKA_SYNTAX_LEVEL_MAXIMAL
  116. TEST(builtin, callback_1) {
  117. /* init */
  118. pikaMemInfo.heapUsedMax = 0;
  119. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  120. /* run */
  121. __platform_printf("BEGIN\r\n");
  122. pikaVM_runSingleFile(pikaMain, "test/python/callback/test1.py");
  123. /* collect */
  124. /* assert */
  125. EXPECT_STREQ(log_buff[0], "b\r\n");
  126. EXPECT_STREQ(log_buff[1], "a\r\n");
  127. /* deinit */
  128. obj_deinit(pikaMain);
  129. EXPECT_EQ(pikaMemNow(), 0);
  130. }
  131. #endif
  132. #if !PIKA_NANO_ENABLE
  133. TEST(builtin, utf8) {
  134. /* init */
  135. pikaMemInfo.heapUsedMax = 0;
  136. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  137. /* run */
  138. __platform_printf("BEGIN\r\n");
  139. pikaVM_runSingleFile(pikaMain, "../../examples/BuiltIn/utf8.py");
  140. /* collect */
  141. /* assert */
  142. EXPECT_STREQ(log_buff[2], "你好,Hello, Bonjour.\r\n");
  143. EXPECT_STREQ(log_buff[1], "你好,Hello, Bonjour.\r\n");
  144. EXPECT_STREQ(log_buff[0], "Hi, Hello, Bonjour.\r\n");
  145. /* deinit */
  146. obj_deinit(pikaMain);
  147. EXPECT_EQ(pikaMemNow(), 0);
  148. }
  149. #endif
  150. TEST_END