mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-29 17:22:56 +08:00
fix suger_multiassin inner def or class
This commit is contained in:
parent
d00e1f9158
commit
73b9effffd
2
port/linux/.vscode/launch.json
vendored
2
port/linux/.vscode/launch.json
vendored
@ -11,7 +11,7 @@
|
||||
"program": "${workspaceFolder}/build/test/pikascript_test",
|
||||
// "program": "${workspaceFolder}/build/boot/demo06-pikamain/pikascript_demo06-pikamain",
|
||||
"args": [
|
||||
// "--gtest_filter=vm.kw_no_empty"
|
||||
// "--gtest_filter=socket.server_client"
|
||||
],
|
||||
"stopAtEntry": false,
|
||||
"cwd": "${workspaceFolder}",
|
||||
|
@ -1777,20 +1777,24 @@ exit:
|
||||
return ast;
|
||||
}
|
||||
|
||||
static int32_t Parser_getPyLineBlockDeepth(char* line) {
|
||||
static int32_t _getSpaceNum(char* line) {
|
||||
uint32_t size = strGetSize(line);
|
||||
for (uint32_t i = 0; i < size; i++) {
|
||||
if (line[i] != ' ') {
|
||||
uint32_t spaceNum = i;
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int32_t Parser_getPyLineBlockDeepth(char* line) {
|
||||
int32_t spaceNum = _getSpaceNum(line);
|
||||
if (0 == spaceNum % 4) {
|
||||
return spaceNum / 4;
|
||||
}
|
||||
/* space Num is not 4N, error*/
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
char* Parser_removeAnnotation(char* line) {
|
||||
uint8_t is_annotation_exit = 0;
|
||||
@ -2221,6 +2225,7 @@ static char* Suger_multiAssign(Args* out_buffs, char* line) {
|
||||
#endif
|
||||
Args buffs = {0};
|
||||
char* line_out = line;
|
||||
int space_num = _getSpaceNum(line);
|
||||
PIKA_BOOL is_assign = PIKA_FALSE;
|
||||
Arg* stmt = arg_newStr("");
|
||||
Arg* out_list = arg_newStr("");
|
||||
@ -2257,6 +2262,11 @@ static char* Suger_multiAssign(Args* out_buffs, char* line) {
|
||||
|
||||
line_item =
|
||||
strsFormat(&buffs, PIKA_LINE_BUFF_SIZE, "$tmp= %s\n", arg_getStr(stmt));
|
||||
|
||||
/* add space */
|
||||
for (int i = 0; i < space_num; i++) {
|
||||
line_out_arg = arg_strAppend(line_out_arg, " ");
|
||||
}
|
||||
line_out_arg = arg_strAppend(line_out_arg, line_item);
|
||||
|
||||
out_list_str = arg_getStr(out_list);
|
||||
@ -2267,9 +2277,17 @@ static char* Suger_multiAssign(Args* out_buffs, char* line) {
|
||||
}
|
||||
char* line_item = strsFormat(&buffs, PIKA_LINE_BUFF_SIZE,
|
||||
"%s = $tmp[%d]\n", item, out_num);
|
||||
/* add space */
|
||||
for (int i = 0; i < space_num; i++) {
|
||||
line_out_arg = arg_strAppend(line_out_arg, " ");
|
||||
}
|
||||
line_out_arg = arg_strAppend(line_out_arg, line_item);
|
||||
out_num++;
|
||||
}
|
||||
/* add space */
|
||||
for (int i = 0; i < space_num; i++) {
|
||||
line_out_arg = arg_strAppend(line_out_arg, " ");
|
||||
}
|
||||
line_out_arg = arg_strAppend(line_out_arg, "del $tmp");
|
||||
|
||||
line_out = strsCopy(out_buffs, arg_getStr(line_out_arg));
|
||||
|
@ -180,6 +180,27 @@ TEST(module, unittest_test2) {
|
||||
obj_deinit(pikaMain);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
TEST(module, unittest_test3) {
|
||||
/* init */
|
||||
pikaMemInfo.heapUsedMax = 0;
|
||||
PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
|
||||
extern unsigned char pikaModules_py_a[];
|
||||
obj_linkLibrary(pikaMain, pikaModules_py_a);
|
||||
/* run */
|
||||
__platform_printf("BEGIN\r\n");
|
||||
pikaVM_runSingleFile(pikaMain, "test/python/unittest/test3.py");
|
||||
/* collect */
|
||||
int testsRun = obj_getInt(pikaMain, "res.testsRun");
|
||||
int errorsNum = obj_getInt(pikaMain, "res.errorsNum");
|
||||
/* assert */
|
||||
EXPECT_EQ(testsRun, 1);
|
||||
EXPECT_EQ(errorsNum, 0);
|
||||
/* deinit */
|
||||
obj_deinit(pikaMain);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
TEST(socket, gethostname) {
|
||||
|
@ -5138,6 +5138,55 @@ TEST(parser, syntex_issue_l1l2) {
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
TEST(parser, syntex_issue_12ojd) {
|
||||
pikaMemInfo.heapUsedMax = 0;
|
||||
Args* buffs = New_strBuff();
|
||||
char* lines =
|
||||
"class Test:\n"
|
||||
" def test(self):\n"
|
||||
" a, b = c\n";
|
||||
printf("%s\r\n", lines);
|
||||
char* pikaAsm = Parser_linesToAsm(buffs, lines);
|
||||
printf("%s", pikaAsm);
|
||||
EXPECT_STREQ(pikaAsm,
|
||||
"B0\n"
|
||||
"0 CLS Test()\n"
|
||||
"0 JMP 1\n"
|
||||
"B1\n"
|
||||
"0 RUN TinyObj\n"
|
||||
"0 OUT self\n"
|
||||
"B1\n"
|
||||
"0 RAS self\n"
|
||||
"B1\n"
|
||||
"0 DEF test(self)\n"
|
||||
"0 JMP 1\n"
|
||||
"B2\n"
|
||||
"0 REF c\n"
|
||||
"0 OUT $tmp\n"
|
||||
"B2\n"
|
||||
"1 REF $tmp\n"
|
||||
"1 NUM 0\n"
|
||||
"0 SLC \n"
|
||||
"0 OUT a\n"
|
||||
"B2\n"
|
||||
"1 REF $tmp\n"
|
||||
"1 NUM 1\n"
|
||||
"0 SLC \n"
|
||||
"0 OUT b\n"
|
||||
"B2\n"
|
||||
"0 DEL $tmp\n"
|
||||
"B2\n"
|
||||
"0 RET \n"
|
||||
"B1\n"
|
||||
"0 RAS $origin\n"
|
||||
"B1\n"
|
||||
"0 NEW self\n"
|
||||
"0 RET \n"
|
||||
"B0\n");
|
||||
args_deinit(buffs);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
TEST_END
|
37
test/python/unittest/test3.py
Normal file
37
test/python/unittest/test3.py
Normal file
@ -0,0 +1,37 @@
|
||||
import socket
|
||||
import random
|
||||
import unittest
|
||||
|
||||
|
||||
class TestUnittestAssertions(unittest.TestCase):
|
||||
def testSocket(self):
|
||||
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
host = "127.0.0.1"
|
||||
port = 9999 + random.randint(0, 1000) + 1
|
||||
print("port:", port)
|
||||
server.bind((host, port))
|
||||
server.listen(5)
|
||||
|
||||
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
client.connect((host, port))
|
||||
|
||||
accept, addr = server.accept()
|
||||
self.assertEqual(addr, "127.0.0.1")
|
||||
|
||||
print("recv from client: %s" % str(addr))
|
||||
|
||||
client.send("send test from client".encode())
|
||||
print("server recv:", accept.recv(1024).decode())
|
||||
|
||||
accept.send("send test from server".encode())
|
||||
print("client recv:", client.recv(1024).decode())
|
||||
|
||||
accept.close()
|
||||
client.close()
|
||||
server.close()
|
||||
|
||||
|
||||
suit = unittest.TestSuite("test1")
|
||||
suit.addTest(TestUnittestAssertions())
|
||||
runner = unittest.TextTestRunner()
|
||||
res = runner.run(suit)
|
Loading…
x
Reference in New Issue
Block a user