]> Nishi Git Mirror - gwion.git/commitdiff
:white_check_mark: test string find
authorfennecdjay <fennecdjay@gwion.tk>
Thu, 5 Nov 2020 18:49:07 +0000 (19:49 +0100)
committerfennecdjay <fennecdjay@gwion.tk>
Thu, 5 Nov 2020 18:49:07 +0000 (19:49 +0100)
src/lib/string.c
tests/string/find.gw [new file with mode: 0644]

index b87a31d2e35b1144f55abbef68d22f84fb911e26..a99fbfefd86b27530bc31489d287a035291de229 100644 (file)
@@ -302,10 +302,6 @@ static MFUN(string_findStr) {
   strcpy(str, STRING(o));
   m_int ret = -1;
   const M_Object obj = *(M_Object*)MEM(SZ_INT);
-  if(!obj) {
-    *(m_uint*)RETURN = 0;
-    return;
-  }
   const m_str arg = STRING(obj);
   const m_int len  = strlen(str);
   m_int i = 0;
@@ -331,10 +327,6 @@ static MFUN(string_findStrStart) {
   m_int ret = -1;
   const m_int start = *(m_int*)MEM(SZ_INT);
   const M_Object obj = *(M_Object*)MEM(SZ_INT * 2);
-  if(!obj) {
-    *(M_Object*)RETURN = NULL;
-    return;
-  }
   const m_str arg = STRING(obj);
   const m_int len  = strlen(str);
   m_int i = start;
@@ -418,10 +410,6 @@ static MFUN(string_rfindStrStart) {
   m_int ret = -1;
   m_int start = *(m_int*)MEM(SZ_INT);
   const M_Object obj = *(M_Object*)MEM(SZ_INT * 2);
-  if(!obj) {
-    *(m_uint*)RETURN = 0;
-    return;
-  }
   m_str arg = STRING(obj);
 
   m_int i = start;
@@ -518,12 +506,12 @@ GWION_IMPORT(string) {
   GWI_BB(gwi_func_end(gwi, string_findStart, ae_flag_none))
 
   gwi_func_ini(gwi, "int", "find");
-  gwi_func_arg(gwi, "string", "str");
+  gwi_func_arg(gwi, "nonnull string", "str");
   GWI_BB(gwi_func_end(gwi, string_findStr, ae_flag_none))
 
   gwi_func_ini(gwi, "int", "find");
   gwi_func_arg(gwi, "int", "pos");
-  gwi_func_arg(gwi, "string", "str");
+  gwi_func_arg(gwi, "nonnull string", "str");
   GWI_BB(gwi_func_end(gwi, string_findStrStart, ae_flag_none))
 
   gwi_func_ini(gwi, "int", "rfind");
@@ -536,12 +524,12 @@ GWION_IMPORT(string) {
   GWI_BB(gwi_func_end(gwi, string_rfindStart, ae_flag_none))
 
   gwi_func_ini(gwi, "int", "rfind");
-  gwi_func_arg(gwi, "string", "str");
+  gwi_func_arg(gwi, "nonnull string", "str");
   GWI_BB(gwi_func_end(gwi, string_rfindStr, ae_flag_none))
 
   gwi_func_ini(gwi, "int", "rfind");
   gwi_func_arg(gwi, "int", "pos");
-  gwi_func_arg(gwi, "string", "str");
+  gwi_func_arg(gwi, "nonnull string", "str");
   GWI_BB(gwi_func_end(gwi, string_rfindStrStart, ae_flag_none))
 
   gwi_func_ini(gwi, "void", "erase");
diff --git a/tests/string/find.gw b/tests/string/find.gw
new file mode 100644 (file)
index 0000000..6c42cca
--- /dev/null
@@ -0,0 +1,26 @@
+<<< "test".find('e') >>>;
+<<< "test".find('a') >>>;
+<<< "".find('a') >>>;
+
+<<< "test".find(-1, 'e') >>>;
+<<< "test".find(0, 'e') >>>;
+<<< "test".find(1, 'a') >>>;
+<<< "".find(1, 'a') >>>;
+
+<<< "test".find("es") >>>;
+<<< "test".find("a") >>>;
+<<< "".find("") >>>;
+
+<<< "test".find(-1, "es") >>>;
+<<< "test".find(0, "es") >>>;
+<<< "test".find(1, "a") >>>;
+<<< "".find(1, "") >>>;
+
+<<< "test".rfind("es") >>>;
+<<< "test".rfind("a") >>>;
+<<< "".rfind("") >>>;
+
+<<< "test".rfind(-1, "es") >>>;
+<<< "test".rfind(0, "e") >>>;
+<<< "test".rfind(1, "a") >>>;
+<<< "".rfind(1, "") >>>;