mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-29 17:22:56 +08:00
!15 add some methods for PikaStdLib.String()
Merge pull request !15 from 牧之/master
This commit is contained in:
commit
e4ca504db3
@ -51,8 +51,12 @@ class String(TinyObj):
|
||||
def __str__(self) -> str: ...
|
||||
|
||||
def startwith(self,prefix:str)->int:...
|
||||
|
||||
def endwith(self,suffix:str)->int:...
|
||||
def isdigit(self)->int:...
|
||||
def islower(self)->int:...
|
||||
def isalnum(self)->int:...
|
||||
def isalpha(self)->int:...
|
||||
def isspace(self)->int:...
|
||||
|
||||
class ByteArray(List):
|
||||
# convert a string to ByteArray
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "PikaStdData_String.h"
|
||||
|
||||
#include "../PLOOC/PikaStdData_String_Util.h"
|
||||
Arg* PikaStdData_String___iter__(PikaObj* self) {
|
||||
obj_setInt(self, "__iter_i", 0);
|
||||
return arg_setRef(NULL, "", self);
|
||||
@ -88,3 +88,58 @@ int PikaStdData_String_endwith(PikaObj *self, char* suffix){
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int PikaStdData_String_isdigit(PikaObj *self){
|
||||
char *str = obj_getStr(self,"str");
|
||||
int i=0;
|
||||
while(str[i]!='\0'){
|
||||
if(!isdigit((int)str[i]))
|
||||
return 0;
|
||||
i++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int PikaStdData_String_islower(PikaObj *self){
|
||||
char *str = obj_getStr(self,"str");
|
||||
int i=0;
|
||||
while(str[i]!='\0'){
|
||||
if(!islower((int)str[i]))
|
||||
return 0;
|
||||
i++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int PikaStdData_String_isalnum(PikaObj *self){
|
||||
char *str = obj_getStr(self,"str");
|
||||
int i=0;
|
||||
while(str[i]!='\0'){
|
||||
if(!isalnum((int)str[i]))
|
||||
return 0;
|
||||
i++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int PikaStdData_String_isalpha(PikaObj *self){
|
||||
char *str = obj_getStr(self,"str");
|
||||
int i=0;
|
||||
while(str[i]!='\0'){
|
||||
if(!isalpha((int)str[i]))
|
||||
return 0;
|
||||
i++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int PikaStdData_String_isspace(PikaObj *self){
|
||||
char *str = obj_getStr(self,"str");
|
||||
int i=0;
|
||||
while(str[i]!='\0'){
|
||||
if(!isspace((int)str[i]))
|
||||
return 0;
|
||||
i++;
|
||||
}
|
||||
return 1;
|
||||
}
|
@ -51,8 +51,12 @@ class String(TinyObj):
|
||||
def __str__(self) -> str: ...
|
||||
|
||||
def startwith(self,prefix:str)->int:...
|
||||
|
||||
def endwith(self,suffix:str)->int:...
|
||||
def isdigit(self)->int:...
|
||||
def islower(self)->int:...
|
||||
def isalnum(self)->int:...
|
||||
def isalpha(self)->int:...
|
||||
def isspace(self)->int:...
|
||||
|
||||
class ByteArray(List):
|
||||
# convert a string to ByteArray
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "PikaStdData_String.h"
|
||||
|
||||
#include "../PLOOC/PikaStdData_String_Util.h"
|
||||
Arg* PikaStdData_String___iter__(PikaObj* self) {
|
||||
obj_setInt(self, "__iter_i", 0);
|
||||
return arg_setRef(NULL, "", self);
|
||||
@ -88,3 +88,58 @@ int PikaStdData_String_endwith(PikaObj *self, char* suffix){
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int PikaStdData_String_isdigit(PikaObj *self){
|
||||
char *str = obj_getStr(self,"str");
|
||||
int i=0;
|
||||
while(str[i]!='\0'){
|
||||
if(!isdigit((int)str[i]))
|
||||
return 0;
|
||||
i++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int PikaStdData_String_islower(PikaObj *self){
|
||||
char *str = obj_getStr(self,"str");
|
||||
int i=0;
|
||||
while(str[i]!='\0'){
|
||||
if(!islower((int)str[i]))
|
||||
return 0;
|
||||
i++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int PikaStdData_String_isalnum(PikaObj *self){
|
||||
char *str = obj_getStr(self,"str");
|
||||
int i=0;
|
||||
while(str[i]!='\0'){
|
||||
if(!isalnum((int)str[i]))
|
||||
return 0;
|
||||
i++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int PikaStdData_String_isalpha(PikaObj *self){
|
||||
char *str = obj_getStr(self,"str");
|
||||
int i=0;
|
||||
while(str[i]!='\0'){
|
||||
if(!isalpha((int)str[i]))
|
||||
return 0;
|
||||
i++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int PikaStdData_String_isspace(PikaObj *self){
|
||||
char *str = obj_getStr(self,"str");
|
||||
int i=0;
|
||||
while(str[i]!='\0'){
|
||||
if(!isspace((int)str[i]))
|
||||
return 0;
|
||||
i++;
|
||||
}
|
||||
return 1;
|
||||
}
|
@ -2243,3 +2243,139 @@ TEST(pikaMain, string_endwith) {
|
||||
obj_deinit(pikaMain);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
TEST(pikaMain, string_isdigit) {
|
||||
/* init */
|
||||
pikaMemInfo.heapUsedMax = 0;
|
||||
PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
|
||||
/* run */
|
||||
obj_run(pikaMain,
|
||||
"a = PikaStdData.String('test')\n"
|
||||
"b = PikaStdData.String('1234')\n"
|
||||
"c = PikaStdData.String('test1234')\n"
|
||||
"res1 = a.isdigit()\n"
|
||||
"res2 = b.isdigit()\n"
|
||||
"res3 = c.isdigit()\n"
|
||||
);
|
||||
/* collect */
|
||||
int res1 = obj_getInt(pikaMain, "res1");
|
||||
int res2 = obj_getInt(pikaMain, "res2");
|
||||
int res3 = obj_getInt(pikaMain, "res3");
|
||||
|
||||
/* assert */
|
||||
EXPECT_EQ(res1, 0);
|
||||
EXPECT_EQ(res2, 1);
|
||||
EXPECT_EQ(res3, 0);
|
||||
|
||||
/* deinit */
|
||||
obj_deinit(pikaMain);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
TEST(pikaMain, string_islower) {
|
||||
/* init */
|
||||
pikaMemInfo.heapUsedMax = 0;
|
||||
PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
|
||||
/* run */
|
||||
obj_run(pikaMain,
|
||||
"a = PikaStdData.String('test')\n"
|
||||
"b = PikaStdData.String('1234')\n"
|
||||
"c = PikaStdData.String('Test')\n"
|
||||
"res1 = a.islower()\n"
|
||||
"res2 = b.islower()\n"
|
||||
"res3 = c.islower()\n"
|
||||
);
|
||||
/* collect */
|
||||
int res1 = obj_getInt(pikaMain, "res1");
|
||||
int res2 = obj_getInt(pikaMain, "res2");
|
||||
int res3 = obj_getInt(pikaMain, "res3");
|
||||
|
||||
/* assert */
|
||||
EXPECT_EQ(res1, 1);
|
||||
EXPECT_EQ(res2, 0);
|
||||
EXPECT_EQ(res3, 0);
|
||||
|
||||
/* deinit */
|
||||
obj_deinit(pikaMain);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
TEST(pikaMain, string_isalnum) {
|
||||
/* init */
|
||||
pikaMemInfo.heapUsedMax = 0;
|
||||
PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
|
||||
/* run */
|
||||
obj_run(pikaMain,
|
||||
"a = PikaStdData.String('test1234')\n"
|
||||
"b = PikaStdData.String('1234')\n"
|
||||
"c = PikaStdData.String(' ')\n"
|
||||
"res1 = a.isalnum()\n"
|
||||
"res2 = b.isalnum()\n"
|
||||
"res3 = c.isalnum()\n"
|
||||
);
|
||||
/* collect */
|
||||
int res1 = obj_getInt(pikaMain, "res1");
|
||||
int res2 = obj_getInt(pikaMain, "res2");
|
||||
int res3 = obj_getInt(pikaMain, "res3");
|
||||
|
||||
/* assert */
|
||||
EXPECT_EQ(res1, 1);
|
||||
EXPECT_EQ(res2, 1);
|
||||
EXPECT_EQ(res3, 0);
|
||||
|
||||
/* deinit */
|
||||
obj_deinit(pikaMain);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
TEST(pikaMain, string_isalpha) {
|
||||
/* init */
|
||||
pikaMemInfo.heapUsedMax = 0;
|
||||
PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
|
||||
/* run */
|
||||
obj_run(pikaMain,
|
||||
"a = PikaStdData.String('test')\n"
|
||||
"b = PikaStdData.String('1234')\n"
|
||||
"c = PikaStdData.String(' ')\n"
|
||||
"res1 = a.isalpha()\n"
|
||||
"res2 = b.isalpha()\n"
|
||||
"res3 = c.isalpha()\n"
|
||||
);
|
||||
/* collect */
|
||||
int res1 = obj_getInt(pikaMain, "res1");
|
||||
int res2 = obj_getInt(pikaMain, "res2");
|
||||
int res3 = obj_getInt(pikaMain, "res3");
|
||||
|
||||
/* assert */
|
||||
EXPECT_EQ(res1, 1);
|
||||
EXPECT_EQ(res2, 0);
|
||||
EXPECT_EQ(res3, 0);
|
||||
|
||||
/* deinit */
|
||||
obj_deinit(pikaMain);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
TEST(pikaMain, string_isspace) {
|
||||
/* init */
|
||||
pikaMemInfo.heapUsedMax = 0;
|
||||
PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
|
||||
/* run */
|
||||
obj_run(pikaMain,
|
||||
"a = PikaStdData.String('test')\n"
|
||||
"b = PikaStdData.String(' ')\n"
|
||||
"res1 = a.isspace()\n"
|
||||
"res2 = b.isspace()\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);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user