Merge branch 'dev'

This commit is contained in:
lyon 2022-06-02 15:46:55 +08:00
commit 7482f84da2
5 changed files with 105 additions and 1 deletions

View File

@ -50,7 +50,10 @@ class String(TinyObj):
# support str()
def __str__(self) -> str: ...
def startwith(self,prefix:str)->int:...
def endwith(self,suffix:str)->int:...
class ByteArray(List):
# convert a string to ByteArray
def fromString(self, s: str): ...

View File

@ -62,3 +62,29 @@ void PikaStdData_String___set__(PikaObj* self, Arg* __key, Arg* __val) {
char* PikaStdData_String___str__(PikaObj* self) {
return obj_getStr(self, "str");
}
int PikaStdData_String_startwith(PikaObj *self, char* prefix){
char *str = obj_getStr(self,"str");
char *p = prefix;
int i=0;
while(*p!='\0'){
if(*p!=str[i])
return 0;
p++;
i++;
}
return 1;
}
int PikaStdData_String_endwith(PikaObj *self, char* suffix){
char *str = obj_getStr(self,"str");
int len1=strlen(str);
int len2=strlen(suffix);
while(len2>=1){
if(suffix[len2-1]!=str[len1-1])
return 0;
len2--;
len1--;
}
return 1;
}

View File

@ -50,7 +50,10 @@ class String(TinyObj):
# support str()
def __str__(self) -> str: ...
def startwith(self,prefix:str)->int:...
def endwith(self,suffix:str)->int:...
class ByteArray(List):
# convert a string to ByteArray
def fromString(self, s: str): ...

View File

@ -62,3 +62,29 @@ void PikaStdData_String___set__(PikaObj* self, Arg* __key, Arg* __val) {
char* PikaStdData_String___str__(PikaObj* self) {
return obj_getStr(self, "str");
}
int PikaStdData_String_startwith(PikaObj *self, char* prefix){
char *str = obj_getStr(self,"str");
char *p = prefix;
int i=0;
while(*p!='\0'){
if(*p!=str[i])
return 0;
p++;
i++;
}
return 1;
}
int PikaStdData_String_endwith(PikaObj *self, char* suffix){
char *str = obj_getStr(self,"str");
int len1=strlen(str);
int len2=strlen(suffix);
while(len2>=1){
if(suffix[len2-1]!=str[len1-1])
return 0;
len2--;
len1--;
}
return 1;
}

View File

@ -2196,4 +2196,50 @@ TEST(pikaMain, module_1_module2_test) {
EXPECT_STREQ(log_buff[1], "BEGIN\r\n");
obj_deinit(self);
EXPECT_EQ(pikaMemNow(), 0);
}
}
TEST(pikaMain, string_startwith) {
/* init */
pikaMemInfo.heapUsedMax = 0;
PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
/* run */
obj_run(pikaMain,
"a = PikaStdData.String('test')\n"
"res1 = a.startwith('te')\n"
"res2 = a.startwith('st')\n"
);
/* collect */
int res1 = obj_getInt(pikaMain, "res1");
int res2 = obj_getInt(pikaMain, "res2");
/* assert */
EXPECT_EQ(res1, 1);
EXPECT_EQ(res2, 0);
/* deinit */
obj_deinit(pikaMain);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(pikaMain, string_endwith) {
/* init */
pikaMemInfo.heapUsedMax = 0;
PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
/* run */
obj_run(pikaMain,
"a = PikaStdData.String('test')\n"
"res1 = a.endwith('te')\n"
"res2 = a.endwith('st')\n"
);
/* collect */
int res1 = obj_getInt(pikaMain, "res1");
int res2 = obj_getInt(pikaMain, "res2");
/* assert */
EXPECT_EQ(res1, 0);
EXPECT_EQ(res2, 1);
/* deinit */
obj_deinit(pikaMain);
EXPECT_EQ(pikaMemNow(), 0);
}