mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-29 17:22:56 +08:00
using local args instead of obj
This commit is contained in:
parent
3914187ba7
commit
6c1664e37a
@ -17,9 +17,10 @@ TEST(VM, num1) {
|
||||
char* pikaAsm = pikaParseLineToAsm(buffs, line, NULL);
|
||||
printf("%s", pikaAsm);
|
||||
PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj);
|
||||
args_deinit(pikaVM_runAsm(self, pikaAsm));
|
||||
Args* localArgs = pikaVM_runAsm(self, pikaAsm);
|
||||
obj_deinit(self);
|
||||
args_deinit(buffs);
|
||||
args_deinit(localArgs);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
@ -29,11 +30,11 @@ TEST(VM, a_1) {
|
||||
char* pikaAsm = pikaParseLineToAsm(buffs, line, NULL);
|
||||
printf("%s", pikaAsm);
|
||||
PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj);
|
||||
args_deinit(pikaVM_runAsm(self, pikaAsm));
|
||||
|
||||
ASSERT_EQ(obj_getInt(self, (char*)"a"), 1);
|
||||
Args* localArgs = pikaVM_runAsm(self, pikaAsm);
|
||||
ASSERT_EQ(args_getInt(localArgs, (char*)"a"), 1);
|
||||
|
||||
obj_deinit(self);
|
||||
args_deinit(localArgs);
|
||||
args_deinit(buffs);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
@ -44,11 +45,11 @@ TEST(VM, a_1d1) {
|
||||
char* pikaAsm = pikaParseLineToAsm(buffs, line, NULL);
|
||||
printf("%s", pikaAsm);
|
||||
PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj);
|
||||
args_deinit(pikaVM_runAsm(self, pikaAsm));
|
||||
|
||||
ASSERT_FLOAT_EQ(obj_getFloat(self, (char*)"a"), 1.1);
|
||||
Args* localArgs = pikaVM_runAsm(self, pikaAsm);
|
||||
ASSERT_FLOAT_EQ(args_getFloat(localArgs, (char*)"a"), 1.1);
|
||||
|
||||
obj_deinit(self);
|
||||
args_deinit(localArgs);
|
||||
args_deinit(buffs);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
@ -59,11 +60,12 @@ TEST(VM, str_xy) {
|
||||
char* pikaAsm = pikaParseLineToAsm(buffs, line, NULL);
|
||||
printf("%s", pikaAsm);
|
||||
PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj);
|
||||
args_deinit(pikaVM_runAsm(self, pikaAsm));
|
||||
Args* localArgs = pikaVM_runAsm(self, pikaAsm);
|
||||
|
||||
ASSERT_STREQ(obj_getStr(self, (char*)"a"), (char*)"xy");
|
||||
ASSERT_STREQ(args_getStr(localArgs, (char*)"a"), (char*)"xy");
|
||||
|
||||
obj_deinit(self);
|
||||
args_deinit(localArgs);
|
||||
args_deinit(buffs);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
@ -74,12 +76,13 @@ TEST(VM, str_xy_space) {
|
||||
char* pikaAsm = pikaParseLineToAsm(buffs, line, NULL);
|
||||
printf("%s", pikaAsm);
|
||||
PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj);
|
||||
args_deinit(pikaVM_runAsm(self, pikaAsm));
|
||||
Args* localArgs = pikaVM_runAsm(self, pikaAsm);
|
||||
|
||||
ASSERT_STREQ(obj_getStr(self, (char*)"a"), (char*)"xy ");
|
||||
ASSERT_STREQ(args_getStr(localArgs, (char*)"a"), (char*)"xy ");
|
||||
|
||||
obj_deinit(self);
|
||||
args_deinit(buffs);
|
||||
args_deinit(localArgs);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
@ -87,14 +90,15 @@ TEST(VM, ref_a_b) {
|
||||
PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj);
|
||||
Args* buffs = New_strBuff();
|
||||
|
||||
args_deinit(pikaVM_runAsm(
|
||||
self, pikaParseLineToAsm(buffs, (char*)"a = 'xy '", NULL)));
|
||||
args_deinit(
|
||||
pikaVM_runAsm(self, pikaParseLineToAsm(buffs, (char*)"b = a", NULL)));
|
||||
Args* localArgs = pikaVM_runAsm(
|
||||
self, pikaParseLineToAsm(buffs, (char*)"a = 'xy '", NULL));
|
||||
localArgs = pikaVM_runAsmWithLocalArgs(
|
||||
self, localArgs, pikaParseLineToAsm(buffs, (char*)"b = a", NULL));
|
||||
|
||||
args_deinit(buffs);
|
||||
ASSERT_STREQ(obj_getStr(self, (char*)"b"), (char*)"xy ");
|
||||
ASSERT_STREQ(args_getStr(localArgs, (char*)"b"), (char*)"xy ");
|
||||
obj_deinit(self);
|
||||
args_deinit(localArgs);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
@ -102,13 +106,14 @@ TEST(VM, Run_add) {
|
||||
PikaObj* self = newRootObj((char*)"root", New_PikaMath_Operator);
|
||||
Args* buffs = New_strBuff();
|
||||
|
||||
args_deinit(pikaVM_runAsm(
|
||||
self, pikaParseLineToAsm(buffs, (char*)"a = plusInt(1,2)", NULL)));
|
||||
Args* localArgs = pikaVM_runAsm(
|
||||
self, pikaParseLineToAsm(buffs, (char*)"a = plusInt(1,2)", NULL));
|
||||
|
||||
args_deinit(buffs);
|
||||
int a = obj_getInt(self, (char*)"a");
|
||||
int a = args_getInt(localArgs, (char*)"a");
|
||||
ASSERT_EQ(a, 3);
|
||||
obj_deinit(self);
|
||||
args_deinit(localArgs);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
@ -116,15 +121,17 @@ TEST(VM, Run_add_multy) {
|
||||
PikaObj* self = newRootObj((char*)"root", New_PikaMath_Operator);
|
||||
Args* buffs = New_strBuff();
|
||||
|
||||
args_deinit(
|
||||
pikaVM_runAsm(self, pikaParseLineToAsm(buffs, (char*)"b = 2", NULL)));
|
||||
args_deinit(pikaVM_runAsm(
|
||||
self, pikaParseLineToAsm(buffs, (char*)"a = plusInt(1,b)", NULL)));
|
||||
Args* localArgs =
|
||||
pikaVM_runAsm(self, pikaParseLineToAsm(buffs, (char*)"b = 2", NULL));
|
||||
localArgs = pikaVM_runAsmWithLocalArgs(
|
||||
self, localArgs,
|
||||
pikaParseLineToAsm(buffs, (char*)"a = plusInt(1,b)", NULL));
|
||||
|
||||
args_deinit(buffs);
|
||||
int a = obj_getInt(self, (char*)"a");
|
||||
int a = args_getInt(localArgs, (char*)"a");
|
||||
ASSERT_EQ(a, 3);
|
||||
obj_deinit(self);
|
||||
args_deinit(localArgs);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
@ -132,14 +139,15 @@ TEST(VM, Run_add_1_2_3) {
|
||||
PikaObj* self = newRootObj((char*)"root", New_PikaMath_Operator);
|
||||
Args* buffs = New_strBuff();
|
||||
|
||||
args_deinit(pikaVM_runAsm(
|
||||
Args* localArgs = pikaVM_runAsm(
|
||||
self, pikaParseLineToAsm(buffs, (char*)"a = plusInt(1, plusInt(2,3) )",
|
||||
NULL)));
|
||||
NULL));
|
||||
|
||||
args_deinit(buffs);
|
||||
int a = obj_getInt(self, (char*)"a");
|
||||
int a = args_getInt(localArgs, (char*)"a");
|
||||
ASSERT_EQ(a, 6);
|
||||
obj_deinit(self);
|
||||
args_deinit(localArgs);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
@ -232,10 +240,10 @@ TEST(VM, WHILE) {
|
||||
printf("%s", pikaAsm);
|
||||
pikaMemInfo.heapUsedMax = 0;
|
||||
PikaObj* self = New_TinyObj(NULL);
|
||||
Args* runRes = pikaVM_runAsm(self, pikaAsm);
|
||||
EXPECT_EQ(obj_getInt(self, (char*)"a"), 0);
|
||||
EXPECT_EQ(obj_getInt(self, (char*)"b"), 1);
|
||||
args_deinit(runRes);
|
||||
Args* localArgs = pikaVM_runAsm(self, pikaAsm);
|
||||
EXPECT_EQ(args_getInt(localArgs, (char*)"a"), 0);
|
||||
EXPECT_EQ(args_getInt(localArgs, (char*)"b"), 1);
|
||||
args_deinit(localArgs);
|
||||
args_deinit(buffs);
|
||||
obj_deinit(self);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
@ -247,10 +255,11 @@ TEST(VM, a_1_1) {
|
||||
char* pikaAsm = pikaParseLineToAsm(buffs, line, NULL);
|
||||
printf("%s", pikaAsm);
|
||||
PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj);
|
||||
args_deinit(pikaVM_runAsm(self, pikaAsm));
|
||||
Args* localArgs = pikaVM_runAsm(self, pikaAsm);
|
||||
|
||||
int res = obj_getInt(self, (char*)"a");
|
||||
int res = args_getInt(localArgs, (char*)"a");
|
||||
obj_deinit(self);
|
||||
args_deinit(localArgs);
|
||||
args_deinit(buffs);
|
||||
ASSERT_EQ(res, 2);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
@ -262,10 +271,11 @@ TEST(VM, a_1_1d1) {
|
||||
char* pikaAsm = pikaParseLineToAsm(buffs, line, NULL);
|
||||
printf("%s", pikaAsm);
|
||||
PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj);
|
||||
args_deinit(pikaVM_runAsm(self, pikaAsm));
|
||||
Args* localArgs = pikaVM_runAsm(self, pikaAsm);
|
||||
|
||||
float res = obj_getFloat(self, (char*)"a");
|
||||
float res = args_getFloat(localArgs, (char*)"a");
|
||||
obj_deinit(self);
|
||||
args_deinit(localArgs);
|
||||
args_deinit(buffs);
|
||||
ASSERT_FLOAT_EQ(res, 2.1);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
@ -277,11 +287,12 @@ TEST(VM, a_jjcc) {
|
||||
char* pikaAsm = pikaParseLineToAsm(buffs, line, NULL);
|
||||
printf("%s", pikaAsm);
|
||||
PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj);
|
||||
args_deinit(pikaVM_runAsm(self, pikaAsm));
|
||||
Args* localArgs = pikaVM_runAsm(self, pikaAsm);
|
||||
|
||||
float res = obj_getFloat(self, (char*)"a");
|
||||
float res = args_getFloat(localArgs, (char*)"a");
|
||||
obj_deinit(self);
|
||||
args_deinit(buffs);
|
||||
args_deinit(localArgs);
|
||||
ASSERT_FLOAT_EQ(res, 5.8);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
@ -297,11 +308,12 @@ TEST(VM, while_a_1to10) {
|
||||
char* pikaAsm = pikaParseMultiLineToAsm(buffs, line);
|
||||
printf("%s", pikaAsm);
|
||||
PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj);
|
||||
args_deinit(pikaVM_runAsm(self, pikaAsm));
|
||||
Args* localArgs = pikaVM_runAsm(self, pikaAsm);
|
||||
|
||||
int res = obj_getInt(self, (char*)"a");
|
||||
int res = args_getInt(localArgs, (char*)"a");
|
||||
obj_deinit(self);
|
||||
args_deinit(buffs);
|
||||
args_deinit(localArgs);
|
||||
ASSERT_FLOAT_EQ(res, 10);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
@ -318,10 +330,11 @@ TEST(VM, while_a_d_x) {
|
||||
char* pikaAsm = pikaParseMultiLineToAsm(buffs, line);
|
||||
printf("%s", pikaAsm);
|
||||
PikaObj* self = newRootObj((char*)"", New_PikaMain);
|
||||
args_deinit(pikaVM_runAsm(self, pikaAsm));
|
||||
Args* localArgs = pikaVM_runAsm(self, pikaAsm);
|
||||
|
||||
int res = obj_getInt(self, (char*)"mem.x");
|
||||
int res = args_getInt(localArgs, (char*)"mem.x");
|
||||
obj_deinit(self);
|
||||
args_deinit(localArgs);
|
||||
args_deinit(buffs);
|
||||
ASSERT_FLOAT_EQ(res, 2);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
@ -345,7 +358,7 @@ TEST(VM, DEF_instruct) {
|
||||
PikaObj* self = New_TinyObj(NULL);
|
||||
int lineAddr = 0;
|
||||
int size = strGetSize(pikaAsm);
|
||||
args_deinit(pikaVM_runAsm(self, pikaAsm));
|
||||
Args* localArgs = pikaVM_runAsm(self, pikaAsm);
|
||||
char* methodPtr = (char*)obj_getPtr(self, (char*)"test");
|
||||
EXPECT_STREQ(methodCode, methodPtr);
|
||||
obj_deinit(self);
|
||||
@ -385,7 +398,7 @@ TEST(VM, RUN_DEF) {
|
||||
"0 RUN test\n"
|
||||
"0 OUT a\n";
|
||||
PikaObj* self = New_TinyObj(NULL);
|
||||
args_deinit(pikaVM_runAsm(self, pikaAsm));
|
||||
Args* localArgs = pikaVM_runAsm(self, pikaAsm);
|
||||
int num = obj_getInt(self, (char*)"a");
|
||||
obj_deinit(self);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
|
@ -125,8 +125,7 @@ Arg* pikaVM_runAsmInstruct(PikaObj* self,
|
||||
char* argName = strsGetLastToken(buffs, data, '.');
|
||||
outArg = arg_setName(outArg, argName);
|
||||
args_deinit(buffs);
|
||||
obj_setArg(self, data, outArg);
|
||||
arg_deinit(outArg);
|
||||
args_setArg(localArgs, outArg);
|
||||
return NULL;
|
||||
}
|
||||
if (instruct == REF) {
|
||||
@ -136,7 +135,7 @@ Arg* pikaVM_runAsmInstruct(PikaObj* self,
|
||||
if (strEqu(data, (char*)"False")) {
|
||||
return arg_setInt(NULL, "", 0);
|
||||
}
|
||||
Arg* arg = arg_copy(obj_getArg(self, data));
|
||||
Arg* arg = arg_copy(args_getArg(localArgs, data));
|
||||
return arg;
|
||||
}
|
||||
if (instruct == JMP) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user