mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-29 17:22:56 +08:00
fix parse err, open assert on rust-msc-
add test about while data[:] add test for list_list slice release cross build
This commit is contained in:
parent
f9ef744bf5
commit
8ad1427f51
2
port/linux/.vscode/launch.json
vendored
2
port/linux/.vscode/launch.json
vendored
@ -12,7 +12,7 @@
|
||||
// "program": "${workspaceFolder}/build/boot/demo06-pikamain/pikascript_demo06-pikamain",
|
||||
"args": [
|
||||
// "--gtest_filter=pikaui.*"
|
||||
"--gtest_filter=InstructUnit.base"
|
||||
"--gtest_filter=parser.for_in_split"
|
||||
],
|
||||
"stopAtEntry": false,
|
||||
"cwd": "${workspaceFolder}",
|
||||
|
@ -2015,7 +2015,7 @@ AST* AST_parseLine_withBlockStack_withBlockDeepth(char* line,
|
||||
char* arg_in = strsPopToken(list_buffs, &line_buff, ' ');
|
||||
AST_setNodeAttr(ast, "arg_in", arg_in);
|
||||
strsPopToken(list_buffs, &line_buff, ' ');
|
||||
char* list_in = strsPopToken(list_buffs, &line_buff, ':');
|
||||
char* list_in = Cursor_splitCollect(list_buffs, line_buff, ":", 0);
|
||||
list_in = strsAppend(list_buffs, "iter(", list_in);
|
||||
list_in = strsAppend(list_buffs, list_in, ")");
|
||||
list_in = strsCopy(&buffs, list_in);
|
||||
|
@ -2300,6 +2300,53 @@ TEST(vm, slice_str_end) {
|
||||
obj_deinit(pikaMain);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
TEST(vm, slice_list) {
|
||||
/* init */
|
||||
g_PikaMemInfo.heapUsedMax = 0;
|
||||
PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
|
||||
/* run */
|
||||
__platform_printf("BEGIN\r\n");
|
||||
obj_run(pikaMain, "[1,2,3][1:]");
|
||||
/* collect */
|
||||
/* assert */
|
||||
EXPECT_STREQ(log_buff[0], "[2, 3]\r\n");
|
||||
EXPECT_STREQ(log_buff[1], "BEGIN\r\n");
|
||||
/* deinit */
|
||||
obj_deinit(pikaMain);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
TEST(vm, slice_list_list) {
|
||||
/* init */
|
||||
g_PikaMemInfo.heapUsedMax = 0;
|
||||
PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
|
||||
/* run */
|
||||
__platform_printf("BEGIN\r\n");
|
||||
obj_run(pikaMain,
|
||||
"l = "
|
||||
"[[\"ID\",\"TCP_URL\",\"VERSION\",\"SENSOR_SCAN_s\",\"DATA_UPLOAD_"
|
||||
"s\",\"ACT_LOGIC_SCAN_s\",\"NETWORK\",\"AUTO_ACT\",\"START_TIME\"],"
|
||||
"[\"ABC123\",\"iot.365sn.cn/operate/h/"
|
||||
"1234\",\"V1.1\",60,1800,0.5,\"4G\",\"TRUE\",1669017826]]\n"
|
||||
"ll = l[1:]\n"
|
||||
"print(len(l), l)\n"
|
||||
"print(len(ll),ll)\n");
|
||||
/* collect */
|
||||
/* assert */
|
||||
EXPECT_STREQ(log_buff[0],
|
||||
"9 ['ABC123', 'iot.365sn.cn/operate/h/1234', 'V1.1', 60, "
|
||||
"1800, 0.500000, '4G', 'TRUE', 1669017826]\r\n");
|
||||
EXPECT_STREQ(log_buff[1],
|
||||
"2 [['ID', 'TCP_URL', 'VERSION', 'SENSOR_SCAN_s', "
|
||||
"'DATA_UPLOAD_s', 'ACT_LOGIC_SCAN_s', 'NETWORK', 'AUTO_ACT', "
|
||||
"'START_TIME'], ['ABC123', 'iot.365sn.cn/operate/h/1234', "
|
||||
"'V1.1', 60, 1800, 0.500000, '4G', 'TRUE', 1669017826]]\r\n");
|
||||
/* deinit */
|
||||
obj_deinit(pikaMain);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#if !PIKA_NANO_ENABLE
|
||||
|
@ -5408,6 +5408,54 @@ TEST(parser, not_in_or) {
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
TEST(parser, for_in_split) {
|
||||
g_PikaMemInfo.heapUsedMax = 0;
|
||||
Args* buffs = New_strBuff();
|
||||
char* lines =
|
||||
"for rows in data[1:]:\n"
|
||||
" print(rows)"
|
||||
"while data[1:]:\n"
|
||||
" print(data[1:])\n";
|
||||
printf("%s\r\n", lines);
|
||||
char* pikaAsm = Parser_linesToAsm(buffs, lines);
|
||||
printf("%s", pikaAsm);
|
||||
EXPECT_STREQ(pikaAsm,
|
||||
"B0\n"
|
||||
"2 REF data\n"
|
||||
"2 NUM 1\n"
|
||||
"3 NUM 99999\n"
|
||||
"2 OPT -\n"
|
||||
"1 SLC \n"
|
||||
"0 RUN iter\n"
|
||||
"0 OUT $l0\n"
|
||||
"B0\n"
|
||||
"0 RUN $l0.__next__\n"
|
||||
"0 OUT rows\n"
|
||||
"0 EST rows\n"
|
||||
"0 JEZ 2\n"
|
||||
"B1\n"
|
||||
"2 REF rows\n"
|
||||
"1 RUN print\n"
|
||||
"1 NUM 1\n"
|
||||
"2 NUM 99999\n"
|
||||
"1 OPT -\n"
|
||||
"0 SLC \n"
|
||||
"B1\n"
|
||||
"2 REF data\n"
|
||||
"2 NUM 1\n"
|
||||
"3 NUM 99999\n"
|
||||
"2 OPT -\n"
|
||||
"1 SLC \n"
|
||||
"0 RUN print\n"
|
||||
"B0\n"
|
||||
"0 JMP -1\n"
|
||||
"B0\n"
|
||||
"0 DEL $l0\n"
|
||||
"B0\n");
|
||||
args_deinit(buffs);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
TEST_END
|
@ -5,3 +5,4 @@
|
||||
#define PIKA_PATH_BUFF_SIZE 640
|
||||
#define PIKA_BYTES_DEFAULT_SIZE 640
|
||||
#define PIKA_READ_FILE_BUFF_SIZE 0x10000
|
||||
#define PIKA_ASSERT_ENABLE 1
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user