test for sysout is ok

This commit is contained in:
lyon1998 2021-10-15 11:20:07 +08:00
parent 97299f77c1
commit 0e79ffe99a
3 changed files with 48 additions and 41 deletions

View File

@ -203,12 +203,12 @@ TEST(object_test, newObjectAndSetStr) {
EXPECT_EQ(pikaMemNow(), 0); EXPECT_EQ(pikaMemNow(), 0);
} }
// TEST(object_test, noMethod) { TEST(object_test, noMethod) {
// PikaObj* root = newRootObj((char*)"root", New_MYROOT1); PikaObj* root = newRootObj((char*)"root", New_MYROOT1);
// obj_runNoRes(root, (char*)"noDefindMethod()"); obj_runNoRes(root, (char*)"noDefindMethod()");
// obj_deinit(root); obj_deinit(root);
// EXPECT_EQ(pikaMemNow(), 0); EXPECT_EQ(pikaMemNow(), 0);
// } }
TEST(object_test, a_b) { TEST(object_test, a_b) {
PikaObj* root = newRootObj((char*)"root", New_MYROOT1); PikaObj* root = newRootObj((char*)"root", New_MYROOT1);
@ -225,15 +225,15 @@ TEST(object_test, voidRun) {
EXPECT_EQ(pikaMemNow(), 0); EXPECT_EQ(pikaMemNow(), 0);
} }
// TEST(object_test, printa) { TEST(object_test, printa) {
// PikaObj* root = newRootObj((char*)"root", New_BaseObj); PikaObj* root = newRootObj((char*)"root", New_BaseObj);
// obj_run(root, (char*)"a = 2"); obj_run(root, (char*)"a = 2");
// obj_run(root, (char*)"print(a)"); obj_run(root, (char*)"print(a)");
// char* sysOut = obj_getSysOut(root); char* sysOut = obj_getSysOut(root);
// ASSERT_STREQ(sysOut, "2"); ASSERT_STREQ(sysOut, "2");
// obj_deinit(root); obj_deinit(root);
// EXPECT_EQ(pikaMemNow(), 0); EXPECT_EQ(pikaMemNow(), 0);
// } }
TEST(object_test, copyArg) { TEST(object_test, copyArg) {
PikaObj* root = newRootObj((char*)"root", New_BaseObj); PikaObj* root = newRootObj((char*)"root", New_BaseObj);

View File

@ -5,18 +5,18 @@ extern "C" {
#include "TinyObj.h" #include "TinyObj.h"
} }
// TEST(sysObj, print) { TEST(sysObj, print) {
// PikaObj* obj = newRootObj((char*)"test", New_PikaStdLib_SysObj); PikaObj* obj = newRootObj((char*)"test", New_PikaStdLib_SysObj);
// Args* res = obj_runDirect(obj, (char*)"print('hello world')"); Args* res = obj_runDirect(obj, (char*)"print('hello world')");
// char* sysOut = args_getSysOut(res); char* sysOut = args_getSysOut(res);
// int errCode = args_getErrorCode(res); int errCode = args_getErrorCode(res);
// printf("sysout = %s\r\n", sysOut); printf("sysout = %s\r\n", sysOut);
// ASSERT_STREQ((char*)"hello world", sysOut); ASSERT_STREQ((char*)"hello world", sysOut);
// ASSERT_EQ(0, errCode); ASSERT_EQ(0, errCode);
// args_deinit(res); args_deinit(res);
// obj_deinit(obj); obj_deinit(obj);
// EXPECT_EQ(pikaMemNow(), 0); EXPECT_EQ(pikaMemNow(), 0);
// } }
TEST(sysObj, set) { TEST(sysObj, set) {
PikaObj* obj = newRootObj((char*)"test", New_PikaStdLib_SysObj); PikaObj* obj = newRootObj((char*)"test", New_PikaStdLib_SysObj);
@ -33,15 +33,15 @@ TEST(sysObj, set) {
EXPECT_EQ(pikaMemNow(), 0); EXPECT_EQ(pikaMemNow(), 0);
} }
// TEST(sysObj, noMethod) { TEST(sysObj, noMethod) {
// PikaObj* obj = newRootObj((char*)"test", New_PikaStdLib_SysObj); PikaObj* obj = newRootObj((char*)"test", New_PikaStdLib_SysObj);
// Args* res = obj_runDirect(obj, (char*)"printttt('hello world')"); Args* res = obj_runDirect(obj, (char*)"printttt('hello world')");
// char* sysOut = args_getSysOut(res); char* sysOut = args_getSysOut(res);
// int errCode = args_getErrorCode(res); int errCode = args_getErrorCode(res);
// printf("sysout = %s\r\n", sysOut); printf("sysout = %s\r\n", sysOut);
// ASSERT_EQ(1, strEqu((char*)"[error] runner: method no found.", sysOut)); ASSERT_EQ(1, strEqu((char*)"[error] runner: method no found.", sysOut));
// ASSERT_EQ(2, errCode); ASSERT_EQ(2, errCode);
// args_deinit(res); args_deinit(res);
// obj_deinit(obj); obj_deinit(obj);
// EXPECT_EQ(pikaMemNow(), 0); EXPECT_EQ(pikaMemNow(), 0);
// } }

View File

@ -92,6 +92,7 @@ Arg* pikaVM_runAsmInstruct(PikaObj* self,
if (instruct == RUN) { if (instruct == RUN) {
Args* buffs = New_strBuff(); Args* buffs = New_strBuff();
Arg* returnArg = NULL; Arg* returnArg = NULL;
Args* methodArgs = NULL;
char* methodPath = data; char* methodPath = data;
PikaObj* methodHostObj = obj_getObj(self, methodPath, 1); PikaObj* methodHostObj = obj_getObj(self, methodPath, 1);
if (NULL == methodHostObj) { if (NULL == methodHostObj) {
@ -134,7 +135,7 @@ Arg* pikaVM_runAsmInstruct(PikaObj* self,
goto RUN_exit; goto RUN_exit;
} }
Args* methodArgs = New_args(NULL); methodArgs = New_args(NULL);
while (1) { while (1) {
Arg* methodArg = arg_copy(queue_popArg(q1)); Arg* methodArg = arg_copy(queue_popArg(q1));
if (NULL == methodArg) { if (NULL == methodArg) {
@ -166,7 +167,12 @@ Arg* pikaVM_runAsmInstruct(PikaObj* self,
returnArg = arg_copy(args_getArg(methodArgs, (char*)"return")); returnArg = arg_copy(args_getArg(methodArgs, (char*)"return"));
goto RUN_exit; goto RUN_exit;
RUN_exit: RUN_exit:
args_deinit(methodArgs); if (NULL != methodArgs) {
args_deinit(methodArgs);
}
if (NULL != methodHostClass) {
obj_deinit(methodHostClass);
}
args_deinit(buffs); args_deinit(buffs);
return returnArg; return returnArg;
} }
@ -222,6 +228,7 @@ Args* pikaVM_runAsm(PikaObj* self, char* pikaAsm) {
int size = strGetSize(pikaAsm); int size = strGetSize(pikaAsm);
Args* sysRes = New_args(NULL); Args* sysRes = New_args(NULL);
args_setErrorCode(sysRes, 0); args_setErrorCode(sysRes, 0);
args_setSysOut(sysRes, (char*)"");
while (lineAddr < size) { while (lineAddr < size) {
lineAddr = pikaVM_runAsmLine(self, pikaAsm, lineAddr, sysRes); lineAddr = pikaVM_runAsmLine(self, pikaAsm, lineAddr, sysRes);
} }