module-test.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371
  1. #include "test_common.h"
  2. #if PIKA_SYNTAX_IMPORT_EX_ENABLE
  3. TEST(module, cmodule_import) {
  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. "from TemplateDevice import qqee\n"
  11. "mytime = qqee()\n");
  12. /* collect */
  13. /* assert */
  14. /* deinit */
  15. EXPECT_STREQ("NameError: name 'TemplateDevice.qqee' is not defined\r\n",
  16. log_buff[2]);
  17. obj_deinit(pikaMain);
  18. EXPECT_EQ(pikaMemNow(), 0);
  19. }
  20. #endif
  21. TEST(module, while_loop) {
  22. /* init */
  23. pikaMemInfo.heapUsedMax = 0;
  24. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  25. extern unsigned char pikaModules_py_a[];
  26. obj_linkLibrary(pikaMain, pikaModules_py_a);
  27. __platform_printf("BEGIN\r\n");
  28. /* run */
  29. obj_run(pikaMain,
  30. "import test_module1\n"
  31. "test_module1.while_loop()\n");
  32. /* collect */
  33. /* assert */
  34. EXPECT_STREQ("4\r\n", log_buff[0]);
  35. /* deinit */
  36. obj_deinit(pikaMain);
  37. EXPECT_EQ(pikaMemNow(), 0);
  38. }
  39. TEST(module, for_loop) {
  40. /* init */
  41. pikaMemInfo.heapUsedMax = 0;
  42. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  43. extern unsigned char pikaModules_py_a[];
  44. obj_linkLibrary(pikaMain, pikaModules_py_a);
  45. __platform_printf("BEGIN\r\n");
  46. /* run */
  47. obj_run(pikaMain,
  48. "import test_module1\n"
  49. "test_module1.for_loop()\n");
  50. /* collect */
  51. /* assert */
  52. EXPECT_STREQ("9\r\n", log_buff[0]);
  53. /* deinit */
  54. obj_deinit(pikaMain);
  55. EXPECT_EQ(pikaMemNow(), 0);
  56. }
  57. TEST(module, script) {
  58. /* init */
  59. pikaMemInfo.heapUsedMax = 0;
  60. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  61. extern unsigned char pikaModules_py_a[];
  62. obj_linkLibrary(pikaMain, pikaModules_py_a);
  63. __platform_printf("BEGIN\r\n");
  64. /* run */
  65. obj_run(pikaMain, "import test_module4\n");
  66. /* collect */
  67. /* assert */
  68. EXPECT_STREQ("imported test moulde4\r\n", log_buff[0]);
  69. /* deinit */
  70. obj_deinit(pikaMain);
  71. EXPECT_EQ(pikaMemNow(), 0);
  72. }
  73. TEST(module, __init__) {
  74. /* init */
  75. pikaMemInfo.heapUsedMax = 0;
  76. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  77. extern unsigned char pikaModules_py_a[];
  78. obj_linkLibrary(pikaMain, pikaModules_py_a);
  79. __platform_printf("BEGIN\r\n");
  80. /* run */
  81. obj_run(pikaMain, "import GTestTask\n");
  82. /* collect */
  83. /* assert */
  84. EXPECT_EQ(obj_getInt(pikaMain, "GTestTask.testval"), 8848);
  85. EXPECT_STREQ(log_buff[0], "BEGIN\r\n");
  86. /* deinit */
  87. obj_deinit(pikaMain);
  88. EXPECT_EQ(pikaMemNow(), 0);
  89. }
  90. #if PIKA_SYNTAX_IMPORT_EX_ENABLE
  91. TEST(module, __init__2) {
  92. /* init */
  93. pikaMemInfo.heapUsedMax = 0;
  94. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  95. extern unsigned char pikaModules_py_a[];
  96. obj_linkLibrary(pikaMain, pikaModules_py_a);
  97. __platform_printf("BEGIN\r\n");
  98. /* run */
  99. obj_run(pikaMain, "import GTestTask as task\n");
  100. /* collect */
  101. /* assert */
  102. EXPECT_EQ(obj_getInt(pikaMain, "task.testval"), 8848);
  103. EXPECT_STREQ(log_buff[0], "BEGIN\r\n");
  104. /* deinit */
  105. obj_deinit(pikaMain);
  106. EXPECT_EQ(pikaMemNow(), 0);
  107. }
  108. #endif
  109. #if PIKA_SYNTAX_IMPORT_EX_ENABLE
  110. TEST(module, import_as_issue1) {
  111. /* init */
  112. pikaMemInfo.heapUsedMax = 0;
  113. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  114. extern unsigned char pikaModules_py_a[];
  115. obj_linkLibrary(pikaMain, pikaModules_py_a);
  116. __platform_printf("BEGIN\r\n");
  117. /* run */
  118. obj_run(pikaMain,
  119. "import import_test as my_import\n"
  120. "print(my_import.func())\n"
  121. "print(import_test.func())\n");
  122. /* collect */
  123. /* assert */
  124. EXPECT_STREQ(log_buff[0], "hello\r\n");
  125. EXPECT_STREQ(log_buff[1], "hello\r\n");
  126. EXPECT_STREQ(log_buff[2], "BEGIN\r\n");
  127. /* deinit */
  128. obj_deinit(pikaMain);
  129. EXPECT_EQ(pikaMemNow(), 0);
  130. }
  131. #endif
  132. #if PIKA_SYNTAX_LEVEL == PIKA_SYNTAX_LEVEL_MAXIMAL
  133. TEST(unittest, test1) {
  134. /* init */
  135. pikaMemInfo.heapUsedMax = 0;
  136. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  137. extern unsigned char pikaModules_py_a[];
  138. obj_linkLibrary(pikaMain, pikaModules_py_a);
  139. /* run */
  140. __platform_printf("BEGIN\r\n");
  141. pikaVM_runSingleFile(pikaMain, "test/python/unittest/test1.py");
  142. /* collect */
  143. int testsRun = obj_getInt(pikaMain, "res.testsRun");
  144. int errorsNum = obj_getInt(pikaMain, "res.errorsNum");
  145. /* assert */
  146. EXPECT_EQ(testsRun, 3);
  147. EXPECT_EQ(errorsNum, 0);
  148. /* deinit */
  149. obj_deinit(pikaMain);
  150. EXPECT_EQ(pikaMemNow(), 0);
  151. }
  152. #endif
  153. #if PIKA_SYNTAX_LEVEL == PIKA_SYNTAX_LEVEL_MAXIMAL
  154. TEST(unittest, test2) {
  155. /* init */
  156. pikaMemInfo.heapUsedMax = 0;
  157. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  158. extern unsigned char pikaModules_py_a[];
  159. obj_linkLibrary(pikaMain, pikaModules_py_a);
  160. /* run */
  161. __platform_printf("BEGIN\r\n");
  162. pikaVM_runSingleFile(pikaMain, "test/python/unittest/test2.py");
  163. /* collect */
  164. int testsRun = obj_getInt(pikaMain, "res.testsRun");
  165. int errorsNum = obj_getInt(pikaMain, "res.errorsNum");
  166. /* assert */
  167. EXPECT_EQ(testsRun, 4);
  168. EXPECT_EQ(errorsNum, 1);
  169. /* deinit */
  170. obj_deinit(pikaMain);
  171. EXPECT_EQ(pikaMemNow(), 0);
  172. }
  173. #endif
  174. TEST(socket, gethostname) {
  175. /* init */
  176. pikaMemInfo.heapUsedMax = 0;
  177. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  178. extern unsigned char pikaModules_py_a[];
  179. obj_linkLibrary(pikaMain, pikaModules_py_a);
  180. /* run */
  181. __platform_printf("BEGIN\r\n");
  182. pikaVM_runSingleFile(pikaMain, "test/python/socket/gethostname.py");
  183. /* collect */
  184. /* assert */
  185. EXPECT_EQ(ARG_TYPE_STRING, args_getType(pikaMain->list, "hostname"));
  186. /* deinit */
  187. obj_deinit(pikaMain);
  188. EXPECT_EQ(pikaMemNow(), 0);
  189. }
  190. #if !PIKA_NANO_ENABLE
  191. TEST(socket, server_client) {
  192. /* init */
  193. pikaMemInfo.heapUsedMax = 0;
  194. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  195. extern unsigned char pikaModules_py_a[];
  196. obj_linkLibrary(pikaMain, pikaModules_py_a);
  197. /* run */
  198. __platform_printf("BEGIN\r\n");
  199. pikaVM_runSingleFile(pikaMain, "test/python/socket/server_client.py");
  200. /* collect */
  201. /* assert */
  202. EXPECT_STREQ(log_buff[2], "recv from client: 127.0.0.1\r\n");
  203. EXPECT_STREQ(log_buff[1], "server recv: send test from client\r\n");
  204. EXPECT_STREQ(log_buff[0], "client recv: send test from server\r\n");
  205. /* deinit */
  206. obj_deinit(pikaMain);
  207. EXPECT_EQ(pikaMemNow(), 0);
  208. }
  209. #endif
  210. #if !PIKA_NANO_ENABLE
  211. TEST(re, match) {
  212. /* init */
  213. pikaMemInfo.heapUsedMax = 0;
  214. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  215. extern unsigned char pikaModules_py_a[];
  216. obj_linkLibrary(pikaMain, pikaModules_py_a);
  217. /* run */
  218. __platform_printf("BEGIN\r\n");
  219. pikaVM_runSingleFile(pikaMain, "test/python/re/match.py");
  220. /* collect */
  221. /* assert */
  222. EXPECT_STREQ(log_buff[3], "BEGIN\r\n");
  223. EXPECT_STREQ(log_buff[2],
  224. "matchObj.group(0) : Cats are smarter than dogs\r\n");
  225. EXPECT_STREQ(log_buff[1], "matchObj.group(1) : Cats\r\n");
  226. EXPECT_STREQ(log_buff[0], "matchObj.group(2) : smarter\r\n");
  227. /* deinit */
  228. obj_deinit(pikaMain);
  229. EXPECT_EQ(pikaMemNow(), 0);
  230. }
  231. #endif
  232. #if !PIKA_NANO_ENABLE
  233. TEST(re, search) {
  234. /* init */
  235. pikaMemInfo.heapUsedMax = 0;
  236. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  237. extern unsigned char pikaModules_py_a[];
  238. obj_linkLibrary(pikaMain, pikaModules_py_a);
  239. /* run */
  240. __platform_printf("BEGIN\r\n");
  241. pikaVM_runSingleFile(pikaMain, "test/python/re/search.py");
  242. /* collect */
  243. /* assert */
  244. EXPECT_STREQ(log_buff[2], "BEGIN\r\n");
  245. EXPECT_STREQ(log_buff[1], "(0, 3)\r\n");
  246. EXPECT_STREQ(log_buff[0], "(11, 14)\r\n");
  247. /* deinit */
  248. obj_deinit(pikaMain);
  249. EXPECT_EQ(pikaMemNow(), 0);
  250. }
  251. #endif
  252. #if !PIKA_NANO_ENABLE
  253. TEST(re, sub) {
  254. /* init */
  255. pikaMemInfo.heapUsedMax = 0;
  256. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  257. extern unsigned char pikaModules_py_a[];
  258. obj_linkLibrary(pikaMain, pikaModules_py_a);
  259. /* run */
  260. __platform_printf("BEGIN\r\n");
  261. pikaVM_runSingleFile(pikaMain, "test/python/re/sub.py");
  262. /* collect */
  263. /* assert */
  264. EXPECT_STREQ(log_buff[2], "BEGIN\r\n");
  265. EXPECT_STREQ(log_buff[1], "the phone number is: 2004-959-559 \r\n");
  266. EXPECT_STREQ(log_buff[0], "the phone number is: 2004959559\r\n");
  267. /* deinit */
  268. obj_deinit(pikaMain);
  269. EXPECT_EQ(pikaMemNow(), 0);
  270. }
  271. #endif
  272. #if !PIKA_NANO_ENABLE
  273. TEST(re, findall) {
  274. /* init */
  275. pikaMemInfo.heapUsedMax = 0;
  276. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  277. extern unsigned char pikaModules_py_a[];
  278. obj_linkLibrary(pikaMain, pikaModules_py_a);
  279. /* run */
  280. __platform_printf("BEGIN\r\n");
  281. pikaVM_runSingleFile(pikaMain, "test/python/re/findall.py");
  282. /* collect */
  283. /* assert */
  284. EXPECT_STREQ(log_buff[2], "BEGIN\r\n");
  285. EXPECT_STREQ(
  286. log_buff[1],
  287. "[('2020', '1', '1'), ('2022', '12', '22'), ('2018', '3', '31')]\r\n");
  288. EXPECT_STREQ(
  289. log_buff[0],
  290. "date: 2020, 2022, 2018. Wrong format: 2031-13-31, 2032-12-33 ...\r\n");
  291. /* deinit */
  292. obj_deinit(pikaMain);
  293. EXPECT_EQ(pikaMemNow(), 0);
  294. }
  295. #endif
  296. #if !PIKA_NANO_ENABLE
  297. TEST(modbus, rtu_master) {
  298. /* init */
  299. pikaMemInfo.heapUsedMax = 0;
  300. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  301. extern unsigned char pikaModules_py_a[];
  302. obj_linkLibrary(pikaMain, pikaModules_py_a);
  303. /* run */
  304. __platform_printf("BEGIN\r\n");
  305. pikaVM_runSingleFile(pikaMain, "test/python/modbus/rtu_master.py");
  306. /* collect */
  307. /* assert */
  308. EXPECT_STREQ(log_buff[3], "BEGIN\r\n");
  309. EXPECT_STREQ(log_buff[2],
  310. "b'\\x01\\x03\\x00\\x00\\x00\\x0a\\xc5\\xcd'\r\n");
  311. EXPECT_STREQ(log_buff[1], "[0, 0, 1234, 0, 0, 123, 0, 0, 0, 0]\r\n");
  312. EXPECT_STREQ(log_buff[0],
  313. "b'\\x01\\x06\\x00\\x00\\x12\\x34\\x84\\xbd'\r\n");
  314. /* deinit */
  315. obj_deinit(pikaMain);
  316. EXPECT_EQ(pikaMemNow(), 0);
  317. }
  318. TEST(proxy, test1) {
  319. /* init */
  320. pikaMemInfo.heapUsedMax = 0;
  321. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  322. extern unsigned char pikaModules_py_a[];
  323. obj_linkLibrary(pikaMain, pikaModules_py_a);
  324. /* run */
  325. __platform_printf("BEGIN\r\n");
  326. pikaVM_runSingleFile(pikaMain, "test/python/proxy/proxy1.py");
  327. /* collect */
  328. /* assert */
  329. EXPECT_STREQ(log_buff[1], "BEGIN\r\n");
  330. EXPECT_STREQ(log_buff[0], "set value = 20\r\n");
  331. /* deinit */
  332. obj_deinit(pikaMain);
  333. EXPECT_EQ(pikaMemNow(), 0);
  334. }
  335. TEST(issue, global) {
  336. /* init */
  337. pikaMemInfo.heapUsedMax = 0;
  338. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  339. extern unsigned char pikaModules_py_a[];
  340. obj_linkLibrary(pikaMain, pikaModules_py_a);
  341. /* run */
  342. __platform_printf("BEGIN\r\n");
  343. pikaVM_runSingleFile(pikaMain, "test/python/issue/issue_global.py");
  344. /* collect */
  345. /* assert */
  346. EXPECT_EQ(obj_getInt(pikaMain, "testpara.timer2_flag"), 1);
  347. /* deinit */
  348. obj_deinit(pikaMain);
  349. EXPECT_EQ(pikaMemNow(), 0);
  350. }
  351. #endif