test slice for str

This commit is contained in:
lyon 2022-05-30 14:22:19 +08:00
parent c0581b4408
commit a41d206509
3 changed files with 41 additions and 0 deletions

View File

@ -354,5 +354,17 @@ Arg* PikaStdLib_SysObj___slice__(PikaObj* self,
return PikaStdLib_SysObj___get__(self, start, obj);
}
if (ARG_TYPE_STRING == arg_getType(obj)) {
Arg* sliced_arg = arg_setStr(NULL, "", "");
for (int i = start_i; i < end_i; i++) {
Arg* i_arg = arg_setInt(NULL, "", i);
Arg* item_arg = PikaStdLib_SysObj___get__(self, i_arg, obj);
sliced_arg = arg_strAppend(sliced_arg, arg_getStr(item_arg));
arg_deinit(item_arg);
arg_deinit(i_arg);
}
return sliced_arg;
}
return arg_setNull(NULL);
}

View File

@ -354,5 +354,17 @@ Arg* PikaStdLib_SysObj___slice__(PikaObj* self,
return PikaStdLib_SysObj___get__(self, start, obj);
}
if (ARG_TYPE_STRING == arg_getType(obj)) {
Arg* sliced_arg = arg_setStr(NULL, "", "");
for (int i = start_i; i < end_i; i++) {
Arg* i_arg = arg_setInt(NULL, "", i);
Arg* item_arg = PikaStdLib_SysObj___get__(self, i_arg, obj);
sliced_arg = arg_strAppend(sliced_arg, arg_getStr(item_arg));
arg_deinit(item_arg);
arg_deinit(i_arg);
}
return sliced_arg;
}
return arg_setNull(NULL);
}

View File

@ -1942,3 +1942,20 @@ TEST(pikaMain, neg_index) {
obj_deinit(self);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(pikaMain, slice1) {
/* init */
pikaMemInfo.heapUsedMax = 0;
/* run */
PikaObj* self = newRootObj("pikaMain", New_PikaMain);
__platform_printf("BEGIN\r\n");
obj_run(self,
"'test'[1:3]\n"
);
/* assert */
EXPECT_STREQ(log_buff[0], "es\r\n");
EXPECT_STREQ(log_buff[1], "BEGIN\r\n");
/* deinit */
obj_deinit(self);
EXPECT_EQ(pikaMemNow(), 0);
}