stddata-test.cpp 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689
  1. #include "test_common.h"
  2. TEST_START
  3. #if PIKA_SYNTAX_SLICE_ENABLE
  4. TEST(stddata, test1) {
  5. /* init */
  6. g_PikaMemInfo.heapUsedMax = 0;
  7. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  8. /* run */
  9. __platform_printf("BEGIN\r\n");
  10. pikaVM_runSingleFile(pikaMain, "test/python/builtins/dict.py");
  11. /* collect */
  12. /* assert */
  13. EXPECT_STREQ(log_buff[0], "{'list': [1, 2, 3], 'len': 3}\r\n");
  14. EXPECT_STREQ(log_buff[1], "dict_keys(['a', 'b', 'c'])\r\n");
  15. EXPECT_STREQ(log_buff[2], "c\r\n");
  16. EXPECT_STREQ(log_buff[3], "b\r\n");
  17. EXPECT_STREQ(log_buff[4], "a\r\n");
  18. EXPECT_STREQ(log_buff[5], "c\r\n");
  19. EXPECT_STREQ(log_buff[6], "b\r\n");
  20. EXPECT_STREQ(log_buff[7], "a\r\n");
  21. EXPECT_STREQ(log_buff[8], "{'a': 1, 'b': 2, 'c': 'test'}\r\n");
  22. EXPECT_STREQ(log_buff[9], "BEGIN\r\n");
  23. /* deinit */
  24. obj_deinit(pikaMain);
  25. EXPECT_EQ(pikaMemNow(), 0);
  26. }
  27. #endif
  28. #if !PIKA_NANO_ENABLE
  29. /* test b2a_hex */
  30. TEST(stddata, test2) {
  31. /* init */
  32. g_PikaMemInfo.heapUsedMax = 0;
  33. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  34. /* run */
  35. __platform_printf("BEGIN\r\n");
  36. obj_run(pikaMain,
  37. "import binascii\n"
  38. "res = binascii.b2a_hex(b'德卡科技').decode()\n");
  39. /* collect */
  40. char* res = obj_getStr(pikaMain, "res");
  41. /* assert */
  42. EXPECT_STREQ(res, "E5BEB7E58DA1E7A791E68A80");
  43. /* deinit */
  44. obj_deinit(pikaMain);
  45. }
  46. /* test a2b_hex */
  47. TEST(stddata, a2b_hex) {
  48. /* init */
  49. g_PikaMemInfo.heapUsedMax = 0;
  50. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  51. /* run */
  52. __platform_printf("BEGIN\r\n");
  53. obj_run(pikaMain,
  54. "import binascii\n"
  55. "text = binascii.a2b_hex('e4b8ade69687e6b58be8af95e794a8e4be8b')\n"
  56. "res = text.decode()\n");
  57. /* collect */
  58. char* res = obj_getStr(pikaMain, "res");
  59. /* assert */
  60. EXPECT_STREQ(res, "中文测试用例");
  61. /* deinit */
  62. obj_deinit(pikaMain);
  63. }
  64. #endif
  65. #if PIKA_SYNTAX_IMPORT_EX_ENABLE
  66. TEST(stddata, encode_decode) {
  67. /* init */
  68. g_PikaMemInfo.heapUsedMax = 0;
  69. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  70. /* run */
  71. __platform_printf("BEGIN\r\n");
  72. pikaVM_runSingleFile(pikaMain, "test/python/builtins/encode_decode.py");
  73. /* collect */
  74. char* b_s = obj_getStr(pikaMain, "b_s");
  75. uint8_t* s_b = obj_getBytes(pikaMain, "s_b");
  76. /* assert */
  77. EXPECT_STREQ(b_s, "test");
  78. EXPECT_EQ(s_b[0], 't');
  79. EXPECT_EQ(s_b[1], 'e');
  80. EXPECT_EQ(s_b[2], 's');
  81. EXPECT_EQ(s_b[3], 't');
  82. /* deinit */
  83. obj_deinit(pikaMain);
  84. }
  85. #endif
  86. #if PIKA_FILEIO_ENABLE
  87. TEST(stddata, fileio) {
  88. /* init */
  89. g_PikaMemInfo.heapUsedMax = 0;
  90. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  91. /* run */
  92. __platform_printf("BEGIN\r\n");
  93. pikaVM_runSingleFile(pikaMain, "test/python/builtins/file.py");
  94. Arg* s = obj_getArg(pikaMain, "s");
  95. Arg* b = obj_getArg(pikaMain, "b");
  96. /* assert */
  97. EXPECT_EQ(arg_getType(s), ARG_TYPE_STRING);
  98. EXPECT_EQ(arg_getType(b), ARG_TYPE_BYTES);
  99. /* deinit */
  100. obj_deinit(pikaMain);
  101. }
  102. #endif
  103. #if !PIKA_NANO_ENABLE
  104. TEST(list, in) {
  105. /* init */
  106. g_PikaMemInfo.heapUsedMax = 0;
  107. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  108. /* run */
  109. __platform_printf("BEGIN\r\n");
  110. obj_run(pikaMain,
  111. "a = [1, 2, 3]\n"
  112. "if 1 in a:\n"
  113. " print('1 in a')\n");
  114. /* collect */
  115. /* assert */
  116. EXPECT_STREQ(log_buff[0], "1 in a\r\n");
  117. /* deinit */
  118. obj_deinit(pikaMain);
  119. EXPECT_EQ(pikaMemNow(), 0);
  120. }
  121. TEST(dict, in) {
  122. /* init */
  123. g_PikaMemInfo.heapUsedMax = 0;
  124. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  125. /* run */
  126. __platform_printf("BEGIN\r\n");
  127. obj_run(pikaMain,
  128. "if \"a\" in {\"a\":1, \"b\":2}:\n"
  129. " print('a in dict')\n");
  130. /* collect */
  131. /* assert */
  132. EXPECT_STREQ(log_buff[0], "a in dict\r\n");
  133. /* deinit */
  134. obj_deinit(pikaMain);
  135. EXPECT_EQ(pikaMemNow(), 0);
  136. }
  137. TEST(list, slice) {
  138. /* init */
  139. g_PikaMemInfo.heapUsedMax = 0;
  140. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  141. /* run */
  142. __platform_printf("BEGIN\r\n");
  143. obj_run(pikaMain,
  144. "[1, 2, 3, 4][0:2]\n"
  145. "(5, 6, 7, 8)[1:4]\n");
  146. /* collect */
  147. /* assert */
  148. EXPECT_STREQ(log_buff[0], "(6, 7, 8)\r\n");
  149. EXPECT_STREQ(log_buff[1], "[1, 2]\r\n");
  150. /* deinit */
  151. obj_deinit(pikaMain);
  152. EXPECT_EQ(pikaMemNow(), 0);
  153. }
  154. #endif
  155. #if !PIKA_NANO_ENABLE
  156. TEST(str, split) {
  157. /* init */
  158. g_PikaMemInfo.heapUsedMax = 0;
  159. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  160. /* run */
  161. __platform_printf("BEGIN\r\n");
  162. obj_run(pikaMain, "'test,test'.split(',')\n");
  163. /* collect */
  164. /* assert */
  165. EXPECT_STREQ(log_buff[0], "['test', 'test']\r\n");
  166. /* deinit */
  167. obj_deinit(pikaMain);
  168. EXPECT_EQ(pikaMemNow(), 0);
  169. }
  170. TEST(str, split2) {
  171. /* init */
  172. g_PikaMemInfo.heapUsedMax = 0;
  173. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  174. /* run */
  175. __platform_printf("BEGIN\r\n");
  176. obj_run(pikaMain,
  177. "s = 'test,test'\n"
  178. "s.split(',')\n");
  179. /* collect */
  180. /* assert */
  181. EXPECT_STREQ(log_buff[0], "['test', 'test']\r\n");
  182. /* deinit */
  183. obj_deinit(pikaMain);
  184. EXPECT_EQ(pikaMemNow(), 0);
  185. }
  186. TEST(dict, cmodule) {
  187. /* init */
  188. g_PikaMemInfo.heapUsedMax = 0;
  189. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  190. /* run */
  191. __platform_printf("BEGIN\r\n");
  192. obj_run(pikaMain,
  193. "s = GTestTask.test_dict()\n"
  194. "print(s)");
  195. /* collect */
  196. /* assert */
  197. EXPECT_STREQ(log_buff[0], "{'para1': 1, 'para2': 2}\r\n");
  198. /* deinit */
  199. obj_deinit(pikaMain);
  200. EXPECT_EQ(pikaMemNow(), 0);
  201. }
  202. TEST(dict, items) {
  203. /* init */
  204. g_PikaMemInfo.heapUsedMax = 0;
  205. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  206. /* run */
  207. __platform_printf("BEGIN\r\n");
  208. obj_run(pikaMain,
  209. "d = {'a':1, 'b':2}\n"
  210. "print(d.items())\n");
  211. /* collect */
  212. /* assert */
  213. EXPECT_STREQ(log_buff[0], "dict_items([('a', 1), ('b', 2)])\r\n");
  214. /* deinit */
  215. obj_deinit(pikaMain);
  216. EXPECT_EQ(pikaMemNow(), 0);
  217. }
  218. TEST(dict, items2) {
  219. /* init */
  220. g_PikaMemInfo.heapUsedMax = 0;
  221. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  222. /* run */
  223. __platform_printf("BEGIN\r\n");
  224. obj_run(pikaMain,
  225. "d = {'a':1, 'b':2}\n"
  226. "for i in d.items():\n"
  227. " print(i)\n");
  228. /* collect */
  229. /* assert */
  230. EXPECT_STREQ(log_buff[2], "BEGIN\r\n");
  231. EXPECT_STREQ(log_buff[1], "('a', 1)\r\n");
  232. EXPECT_STREQ(log_buff[0], "('b', 2)\r\n");
  233. /* deinit */
  234. obj_deinit(pikaMain);
  235. EXPECT_EQ(pikaMemNow(), 0);
  236. }
  237. TEST(dict, items_kv) {
  238. /* init */
  239. g_PikaMemInfo.heapUsedMax = 0;
  240. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  241. /* run */
  242. __platform_printf("BEGIN\r\n");
  243. obj_run(pikaMain,
  244. "d = {'a':1, 'b':2}\n"
  245. "for k, v in d.items():\n"
  246. " print(k, v)\n");
  247. /* collect */
  248. /* assert */
  249. EXPECT_STREQ(log_buff[0], "b 2\r\n");
  250. EXPECT_STREQ(log_buff[1], "a 1\r\n");
  251. EXPECT_STREQ(log_buff[2], "BEGIN\r\n");
  252. /* deinit */
  253. obj_deinit(pikaMain);
  254. EXPECT_EQ(pikaMemNow(), 0);
  255. }
  256. TEST(stddata, list_str) {
  257. /* init */
  258. g_PikaMemInfo.heapUsedMax = 0;
  259. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  260. /* run */
  261. __platform_printf("BEGIN\r\n");
  262. obj_run(pikaMain, "list('test')");
  263. /* collect */
  264. /* assert */
  265. EXPECT_STREQ(log_buff[0], "['t', 'e', 's', 't']\r\n");
  266. /* deinit */
  267. obj_deinit(pikaMain);
  268. EXPECT_EQ(pikaMemNow(), 0);
  269. }
  270. TEST(stddata, list_bytes) {
  271. /* init */
  272. g_PikaMemInfo.heapUsedMax = 0;
  273. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  274. /* run */
  275. __platform_printf("BEGIN\r\n");
  276. obj_run(pikaMain, "list(b'test')");
  277. /* collect */
  278. /* assert */
  279. EXPECT_STREQ(log_buff[0], "[116, 101, 115, 116]\r\n");
  280. /* deinit */
  281. obj_deinit(pikaMain);
  282. EXPECT_EQ(pikaMemNow(), 0);
  283. }
  284. TEST(stddata, bytes_list) {
  285. /* init */
  286. g_PikaMemInfo.heapUsedMax = 0;
  287. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  288. /* run */
  289. __platform_printf("BEGIN\r\n");
  290. obj_run(pikaMain, "bytes([1,2,3,4])");
  291. /* collect */
  292. /* assert */
  293. EXPECT_STREQ(log_buff[0], "b'\\x01\\x02\\x03\\x04'\r\n");
  294. /* deinit */
  295. obj_deinit(pikaMain);
  296. EXPECT_EQ(pikaMemNow(), 0);
  297. }
  298. TEST(stddata, list_pop_) {
  299. /* init */
  300. g_PikaMemInfo.heapUsedMax = 0;
  301. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  302. /* run */
  303. __platform_printf("BEGIN\r\n");
  304. obj_run(pikaMain,
  305. "l = [1,2,3,4]\n"
  306. "l.pop()\n"
  307. "l.pop()\n"
  308. "l");
  309. /* collect */
  310. /* assert */
  311. EXPECT_STREQ(log_buff[0], "[1, 2]\r\n");
  312. EXPECT_STREQ(log_buff[1], "3\r\n");
  313. EXPECT_STREQ(log_buff[2], "4\r\n");
  314. EXPECT_STREQ(log_buff[3], "BEGIN\r\n");
  315. /* deinit */
  316. obj_deinit(pikaMain);
  317. EXPECT_EQ(pikaMemNow(), 0);
  318. }
  319. TEST(stddata, list_pop_index) {
  320. /* init */
  321. g_PikaMemInfo.heapUsedMax = 0;
  322. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  323. /* run */
  324. __platform_printf("BEGIN\r\n");
  325. obj_run(pikaMain,
  326. "l = [1,2,3,4]\n"
  327. "l.pop(2)\n"
  328. "l.pop(0)\n"
  329. "l");
  330. /* collect */
  331. /* assert */
  332. EXPECT_STREQ(log_buff[0], "[2, 4]\r\n");
  333. EXPECT_STREQ(log_buff[1], "1\r\n");
  334. EXPECT_STREQ(log_buff[2], "3\r\n");
  335. EXPECT_STREQ(log_buff[3], "BEGIN\r\n");
  336. /* deinit */
  337. obj_deinit(pikaMain);
  338. EXPECT_EQ(pikaMemNow(), 0);
  339. }
  340. TEST(stddata, list_remove_) {
  341. /* init */
  342. g_PikaMemInfo.heapUsedMax = 0;
  343. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  344. /* run */
  345. __platform_printf("BEGIN\r\n");
  346. obj_run(pikaMain,
  347. "l = [1,2,3,4,5]\n"
  348. "l.remove(2)\n"
  349. "l\n"
  350. "l.remove(3)\n"
  351. "l");
  352. /* collect */
  353. /* assert */
  354. EXPECT_STREQ(log_buff[1], "[1, 3, 4, 5]\r\n");
  355. EXPECT_STREQ(log_buff[0], "[1, 4, 5]\r\n");
  356. /* deinit */
  357. obj_deinit(pikaMain);
  358. EXPECT_EQ(pikaMemNow(), 0);
  359. }
  360. TEST(stddata, list_insert_) {
  361. /* init */
  362. g_PikaMemInfo.heapUsedMax = 0;
  363. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  364. /* run */
  365. __platform_printf("BEGIN\r\n");
  366. obj_run(pikaMain,
  367. "l = [1,2,3]\n"
  368. "l.insert(1, 'q')\n"
  369. "l");
  370. /* collect */
  371. /* assert */
  372. EXPECT_STREQ(log_buff[1], "BEGIN\r\n");
  373. EXPECT_STREQ(log_buff[0], "[1, 'q', 2, 3]\r\n");
  374. /* deinit */
  375. obj_deinit(pikaMain);
  376. EXPECT_EQ(pikaMemNow(), 0);
  377. }
  378. TEST(stddata, dict_update) {
  379. /* init */
  380. g_PikaMemInfo.heapUsedMax = 0;
  381. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  382. /* run */
  383. __platform_printf("BEGIN\r\n");
  384. obj_run(pikaMain,
  385. "d = {'a':1, 'b':2, 'c':3}\n"
  386. "d.update({'b':4, 'd':5})\n"
  387. "res1 = d['b']\n"
  388. "res2 = d['a']\n"
  389. "print(d)\n");
  390. /* collect */
  391. /* assert */
  392. EXPECT_EQ(obj_getInt(pikaMain, "res1"), 4);
  393. EXPECT_EQ(obj_getInt(pikaMain, "res2"), 1);
  394. /* deinit */
  395. obj_deinit(pikaMain);
  396. EXPECT_EQ(pikaMemNow(), 0);
  397. }
  398. TEST(issue, id_test) {
  399. /* init */
  400. g_PikaMemInfo.heapUsedMax = 0;
  401. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  402. /* run */
  403. __platform_printf("BEGIN\r\n");
  404. pikaVM_runSingleFile(pikaMain, "test/python/issue/issue_id_test.py");
  405. /* collect */
  406. /* assert */
  407. EXPECT_STREQ(log_buff[0], "dog2 eat...\r\n");
  408. EXPECT_STREQ(log_buff[3], "dog1 eat...\r\n");
  409. /* deinit */
  410. obj_deinit(pikaMain);
  411. EXPECT_EQ(pikaMemNow(), 0);
  412. }
  413. TEST(str, strip) {
  414. /* init */
  415. g_PikaMemInfo.heapUsedMax = 0;
  416. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  417. /* run */
  418. __platform_printf("BEGIN\r\n");
  419. obj_run(pikaMain, "s1 = 'test$'.strip('$')");
  420. /* collect */
  421. /* assert */
  422. char* s1 = obj_getStr(pikaMain, "s1");
  423. EXPECT_STREQ(s1, "test");
  424. /* deinit */
  425. obj_deinit(pikaMain);
  426. EXPECT_EQ(pikaMemNow(), 0);
  427. }
  428. TEST(str, big_slice) {
  429. /* init */
  430. g_PikaMemInfo.heapUsedMax = 0;
  431. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  432. /* run */
  433. __platform_printf("BEGIN\r\n");
  434. pikaVM_runSingleFile(pikaMain, "test/python/issue/issue_big_str_slice.py");
  435. /* collect */
  436. /* assert */
  437. /* deinit */
  438. obj_deinit(pikaMain);
  439. EXPECT_EQ(pikaMemNow(), 0);
  440. }
  441. TEST(std, eval) {
  442. /* init */
  443. g_PikaMemInfo.heapUsedMax = 0;
  444. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  445. /* run */
  446. __platform_printf("BEGIN\r\n");
  447. obj_run(pikaMain, "eval('1+1')");
  448. /* collect */
  449. /* assert */
  450. EXPECT_STREQ(log_buff[0], "2\r\n");
  451. /* deinit */
  452. obj_deinit(pikaMain);
  453. EXPECT_EQ(pikaMemNow(), 0);
  454. }
  455. TEST(stddata, kw_fun) {
  456. /* init */
  457. g_PikaMemInfo.heapUsedMax = 0;
  458. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  459. /* run */
  460. __platform_printf("BEGIN\r\n");
  461. obj_run(pikaMain,
  462. "def test(**kw):\n"
  463. " print(kw)\n"
  464. "test(a=1, b=2)\n");
  465. /* collect */
  466. /* assert */
  467. EXPECT_STREQ(log_buff[0], "{'177670': 1, '177671': 2}\r\n");
  468. /* deinit */
  469. obj_deinit(pikaMain);
  470. EXPECT_EQ(pikaMemNow(), 0);
  471. }
  472. TEST(stddata, kw_fun_err_input) {
  473. /* init */
  474. g_PikaMemInfo.heapUsedMax = 0;
  475. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  476. /* run */
  477. __platform_printf("BEGIN\r\n");
  478. obj_run(pikaMain,
  479. "def test(**kw):\n"
  480. " print(kw)\n"
  481. "test({'a':1, 'b':2})\n");
  482. /* collect */
  483. /* assert */
  484. EXPECT_STREQ(log_buff[0], "{}\r\n");
  485. /* deinit */
  486. obj_deinit(pikaMain);
  487. EXPECT_EQ(pikaMemNow(), 0);
  488. }
  489. TEST(stddata, bytes_add) {
  490. /* init */
  491. g_PikaMemInfo.heapUsedMax = 0;
  492. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  493. /* run */
  494. __platform_printf("BEGIN\r\n");
  495. obj_run(pikaMain, "b'a' + b'b'\n");
  496. /* collect */
  497. /* assert */
  498. EXPECT_STREQ(log_buff[0], "b'\\x61\\x62'\r\n");
  499. /* deinit */
  500. obj_deinit(pikaMain);
  501. EXPECT_EQ(pikaMemNow(), 0);
  502. }
  503. TEST(stddata, pikafs_open) {
  504. /* init */
  505. g_PikaMemInfo.heapUsedMax = 0;
  506. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  507. extern unsigned char pikaModules_py_a[];
  508. obj_linkLibrary(pikaMain, pikaModules_py_a);
  509. /* run */
  510. __platform_printf("BEGIN\r\n");
  511. obj_run(pikaMain,
  512. "f = open('/pikafs/widget_config.ini','r')\n"
  513. "f.read(8)\n"
  514. "f.close()\n");
  515. /* collect */
  516. /* assert */
  517. EXPECT_STREQ(log_buff[0], "'[端口]'\r\n");
  518. /* deinit */
  519. obj_deinit(pikaMain);
  520. EXPECT_EQ(pikaMemNow(), 0);
  521. }
  522. TEST(stddata, pikafs_open_libfile) {
  523. /* init */
  524. g_PikaMemInfo.heapUsedMax = 0;
  525. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  526. obj_linkLibraryFile(pikaMain,
  527. "package/pikascript/pikascript-api/pikaModules.py.a");
  528. /* run */
  529. __platform_printf("BEGIN\r\n");
  530. obj_run(pikaMain,
  531. "f = open('/pikafs/widget_config.ini','r')\n"
  532. "f.read(8)\n"
  533. "f.close()\n");
  534. /* collect */
  535. /* assert */
  536. EXPECT_STREQ(log_buff[0], "'[端口]'\r\n");
  537. /* deinit */
  538. obj_deinit(pikaMain);
  539. EXPECT_EQ(pikaMemNow(), 0);
  540. }
  541. TEST(stddata, pikafs_open_err) {
  542. /* init */
  543. g_PikaMemInfo.heapUsedMax = 0;
  544. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  545. extern unsigned char pikaModules_py_a[];
  546. obj_linkLibrary(pikaMain, pikaModules_py_a);
  547. /* run */
  548. __platform_printf("BEGIN\r\n");
  549. obj_run(pikaMain,
  550. "f = open('/pikafs/_no_file_widget_config.ini','r')\n"
  551. "f.read(8)\n"
  552. "f.close()\n");
  553. /* collect */
  554. /* assert */
  555. // EXPECT_STREQ(log_buff[0], "'[端口]'\r\n");
  556. /* deinit */
  557. obj_deinit(pikaMain);
  558. EXPECT_EQ(pikaMemNow(), 0);
  559. }
  560. TEST(stddata, list_slice_issue) {
  561. /* init */
  562. g_PikaMemInfo.heapUsedMax = 0;
  563. PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
  564. /* run */
  565. __platform_printf("BEGIN\r\n");
  566. obj_run(pikaMain,
  567. "l = [1,2,3]\n"
  568. "l[-1]\n");
  569. /* collect */
  570. /* assert */
  571. EXPECT_STREQ(log_buff[0], "3\r\n");
  572. /* deinit */
  573. obj_deinit(pikaMain);
  574. EXPECT_EQ(pikaMemNow(), 0);
  575. }
  576. TEST(stddata, New_pikaDictFromVarArgs) {
  577. PikaObj* new_dict =
  578. New_pikaDictFromVarArgs(arg_newStr("a"), arg_newInt(1), arg_newStr("b"),
  579. arg_newInt(2), arg_newStr("c"), arg_newInt(3));
  580. pika_platform_printf("%s\r\n", PikaStdData_Dict___str__(new_dict));
  581. obj_deinit(new_dict);
  582. EXPECT_EQ(pikaMemNow(), 0);
  583. }
  584. TEST(stddata, New_pikaDictFromVarArgs0) {
  585. PikaObj* new_dict = New_pikaDictFromVarArgs(NULL);
  586. pika_platform_printf("%s\r\n", PikaStdData_Dict___str__(new_dict));
  587. obj_deinit(new_dict);
  588. EXPECT_EQ(pikaMemNow(), 0);
  589. }
  590. TEST(stddata, New_pikaListFromVarArgs0) {
  591. PikaObj* new_list = New_pikaListFromVarArgs(NULL);
  592. pika_platform_printf("%s\r\n", PikaStdData_List___str__(new_list));
  593. obj_deinit(new_list);
  594. EXPECT_EQ(pikaMemNow(), 0);
  595. }
  596. TEST(stddata, NewPikaDict) {
  597. PikaDict* dict = New_PikaDict();
  598. ASSERT_NE(dict, nullptr);
  599. pikaDict_deinit(dict);
  600. EXPECT_EQ(pikaMemNow(), 0);
  601. }
  602. TEST(stddata, SetGetInt) {
  603. PikaDict* dict = New_PikaDict();
  604. EXPECT_EQ(pikaDict_setInt(dict, "testKey", 12345), PIKA_RES_OK);
  605. EXPECT_EQ(pikaDict_getInt(dict, "testKey"), 12345);
  606. pikaDict_deinit(dict);
  607. EXPECT_EQ(pikaMemNow(), 0);
  608. }
  609. TEST(stddata, SetGetFloat) {
  610. PikaDict* dict = New_PikaDict();
  611. EXPECT_EQ(pikaDict_setFloat(dict, "testFloatKey", 12.34f), PIKA_RES_OK);
  612. EXPECT_FLOAT_EQ(pikaDict_getFloat(dict, "testFloatKey"), 12.34f);
  613. pikaDict_deinit(dict);
  614. EXPECT_EQ(pikaMemNow(), 0);
  615. }
  616. TEST(stddata, SetGetStr) {
  617. PikaDict* dict = New_PikaDict();
  618. EXPECT_EQ(pikaDict_setStr(dict, "testStringKey", "Hello"), PIKA_RES_OK);
  619. EXPECT_STREQ(pikaDict_getStr(dict, "testStringKey"), "Hello");
  620. pikaDict_deinit(dict);
  621. EXPECT_EQ(pikaMemNow(), 0);
  622. }
  623. TEST(stddata, SetGetPtr) {
  624. PikaDict* dict = New_PikaDict();
  625. int data = 100;
  626. EXPECT_EQ(pikaDict_setPtr(dict, "testPtrKey", &data), PIKA_RES_OK);
  627. EXPECT_EQ(*reinterpret_cast<int*>(pikaDict_getPtr(dict, "testPtrKey")),
  628. data);
  629. pikaDict_deinit(dict);
  630. EXPECT_EQ(pikaMemNow(), 0);
  631. }
  632. TEST(stddata, SetGetBytes) {
  633. PikaDict* dict = New_PikaDict();
  634. uint8_t bytes[] = {0x01, 0x02, 0x03};
  635. EXPECT_EQ(pikaDict_setBytes(dict, "testByteKey", bytes, sizeof(bytes)),
  636. PIKA_RES_OK);
  637. EXPECT_EQ(
  638. memcmp(pikaDict_getBytes(dict, "testByteKey"), bytes, sizeof(bytes)),
  639. 0);
  640. EXPECT_EQ(pikaDict_getBytesSize(dict, "testByteKey"), sizeof(bytes));
  641. pikaDict_deinit(dict);
  642. EXPECT_EQ(pikaMemNow(), 0);
  643. }
  644. #endif
  645. TEST_END