tests/test_string.c

changeset 1674
8b0f162ac88e
parent 1673
0c338b80e7dd
child 1676
f889ffd07c86
--- a/tests/test_string.c	Sun Dec 28 14:47:36 2025 +0100
+++ b/tests/test_string.c	Sun Dec 28 15:45:39 2025 +0100
@@ -226,34 +226,115 @@
     }
 }
 
-CX_TEST(test_strsubs) {
+CX_TEST(test_strsubs_cxs) {
     cxstring str = cx_str("A test string");
+    cxstring sub;
 
     CX_TEST_DO {
-        cxstring sub = cx_strsubs(str, 0);
+        sub = cx_strsubs(str, 0);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, str));
+
+        sub = cx_strsubs(str, 2);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "test string"));
+
+        sub = cx_strsubs(str, 7);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "string"));
+
+        sub = cx_strsubs(str, 15);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, ""));
+
+        sub = cx_strsubsl(str, 2, 4);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "test"));
+
+        sub = cx_strsubsl(str, 7, 3);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "str"));
+
+        sub = cx_strsubsl(str, 7, 20);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "string"));
+    }
+}
+
+CX_TEST(test_strsubs_cc) {
+    const char *str = "A test string";
+    cxstring sub;
+
+    CX_TEST_DO {
+        sub = cx_strsubs(str, 0);
         CX_TEST_ASSERT(0 == cx_strcmp(sub, str));
 
         sub = cx_strsubs(str, 2);
-        CX_TEST_ASSERT(0 == cx_strcmp(sub, cx_str("test string")));
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "test string"));
 
         sub = cx_strsubs(str, 7);
-        CX_TEST_ASSERT(0 == cx_strcmp(sub, cx_str("string")));
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "string"));
 
         sub = cx_strsubs(str, 15);
-        CX_TEST_ASSERT(0 == cx_strcmp(sub, cx_str("")));
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, ""));
 
         sub = cx_strsubsl(str, 2, 4);
-        CX_TEST_ASSERT(0 == cx_strcmp(sub, cx_str("test")));
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "test"));
 
         sub = cx_strsubsl(str, 7, 3);
-        CX_TEST_ASSERT(0 == cx_strcmp(sub, cx_str("str")));
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "str"));
 
         sub = cx_strsubsl(str, 7, 20);
-        CX_TEST_ASSERT(0 == cx_strcmp(sub, cx_str("string")));
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "string"));
+    }
+}
+
+CX_TEST(test_strsubs_cxms) {
+    cxmutstr str = cx_mutstr((char*)"A test string");
+    cxmutstr sub;
+
+    CX_TEST_DO {
+        sub = cx_strsubs(str, 0);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, str));
+
+        sub = cx_strsubs(str, 2);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "test string"));
+
+        sub = cx_strsubs(str, 7);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "string"));
+
+        sub = cx_strsubs(str, 15);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, ""));
+
+        sub = cx_strsubsl(str, 2, 4);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "test"));
+
+        sub = cx_strsubsl(str, 7, 3);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "str"));
 
-        // just for coverage, call the _m variant
-        cxmutstr m = cx_strsubs_m(cx_mutstrn(NULL, 0), 0);
-        CX_TEST_ASSERT(0 == cx_strcmp(m, ""));
+        sub = cx_strsubsl(str, 7, 20);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "string"));
+    }
+}
+
+CX_TEST(test_strsubs_c) {
+    char *str = "A test string";
+    cxmutstr sub;
+
+    CX_TEST_DO {
+        sub = cx_strsubs(str, 0);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, str));
+
+        sub = cx_strsubs(str, 2);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "test string"));
+
+        sub = cx_strsubs(str, 7);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "string"));
+
+        sub = cx_strsubs(str, 15);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, ""));
+
+        sub = cx_strsubsl(str, 2, 4);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "test"));
+
+        sub = cx_strsubsl(str, 7, 3);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "str"));
+
+        sub = cx_strsubsl(str, 7, 20);
+        CX_TEST_ASSERT(0 == cx_strcmp(sub, "string"));
     }
 }
 
@@ -1566,7 +1647,10 @@
     cx_test_register(suite, test_strdup_shortened);
     cx_test_register(suite, test_strcpy);
     cx_test_register(suite, test_strlen);
-    cx_test_register(suite, test_strsubs);
+    cx_test_register(suite, test_strsubs_cxs);
+    cx_test_register(suite, test_strsubs_cxms);
+    cx_test_register(suite, test_strsubs_cc);
+    cx_test_register(suite, test_strsubs_c);
     cx_test_register(suite, test_strat);
     cx_test_register(suite, test_strchr);
     cx_test_register(suite, test_strrchr);

mercurial