Mon, 17 Apr 2023 21:47:34 +0200
change CX_STR: use compound literal in C and ctor in C++
src/cx/string.h | file | annotate | diff | comparison | revisions | |
tests/test_string.cpp | file | annotate | diff | comparison | revisions |
1.1 --- a/src/cx/string.h Sun Apr 16 21:35:08 2023 +0200 1.2 +++ b/src/cx/string.h Mon Apr 17 21:47:34 2023 +0200 1.3 @@ -129,6 +129,18 @@ 1.4 */ 1.5 typedef struct cx_strtok_ctx_s CxStrtokCtx; 1.6 1.7 +#ifdef __cplusplus 1.8 +extern "C" { 1.9 + 1.10 +/** 1.11 + * A literal initializer for an UCX string structure. 1.12 + * 1.13 + * @param literal the string literal 1.14 + */ 1.15 +#define CX_STR(literal) cxstring{literal, sizeof(literal) - 1} 1.16 + 1.17 +#else // __cplusplus 1.18 + 1.19 /** 1.20 * A literal initializer for an UCX string structure. 1.21 * 1.22 @@ -136,10 +148,8 @@ 1.23 * 1.24 * @param literal the string literal 1.25 */ 1.26 -#define CX_STR(literal) {literal, sizeof(literal) - 1} 1.27 +#define CX_STR(literal) (cxstring){literal, sizeof(literal) - 1} 1.28 1.29 -#ifdef __cplusplus 1.30 -extern "C" { 1.31 #endif 1.32 1.33
2.1 --- a/tests/test_string.cpp Sun Apr 16 21:35:08 2023 +0200 2.2 +++ b/tests/test_string.cpp Mon Apr 17 21:47:34 2023 +0200 2.3 @@ -34,7 +34,7 @@ 2.4 #define EXPECT_ZERO_TERMINATED(str) EXPECT_EQ((str).ptr[(str).length], '\0') 2.5 2.6 TEST(String, construct) { 2.7 - cxstring s1 = cx_str("1234"); 2.8 + cxstring s1 = CX_STR("1234"); 2.9 cxstring s2 = cx_strn("abcd", 2); 2.10 cxmutstr s3 = cx_mutstr((char *) "1234"); 2.11 cxmutstr s4 = cx_mutstrn((char *) "abcd", 2); 2.12 @@ -96,26 +96,26 @@ 2.13 EXPECT_EQ(cx_strcmp(sub, str), 0); 2.14 2.15 sub = cx_strsubs(str, 2); 2.16 - EXPECT_EQ(cx_strcmp(sub, cx_str("test string")), 0); 2.17 + EXPECT_EQ(cx_strcmp(sub, CX_STR("test string")), 0); 2.18 2.19 sub = cx_strsubs(str, 7); 2.20 - EXPECT_EQ(cx_strcmp(sub, cx_str("string")), 0); 2.21 + EXPECT_EQ(cx_strcmp(sub, CX_STR("string")), 0); 2.22 2.23 sub = cx_strsubs(str, 15); 2.24 - EXPECT_EQ(cx_strcmp(sub, cx_str("")), 0); 2.25 + EXPECT_EQ(cx_strcmp(sub, CX_STR("")), 0); 2.26 2.27 sub = cx_strsubsl(str, 2, 4); 2.28 - EXPECT_EQ(cx_strcmp(sub, cx_str("test")), 0); 2.29 + EXPECT_EQ(cx_strcmp(sub, CX_STR("test")), 0); 2.30 2.31 sub = cx_strsubsl(str, 7, 3); 2.32 - EXPECT_EQ(cx_strcmp(sub, cx_str("str")), 0); 2.33 + EXPECT_EQ(cx_strcmp(sub, CX_STR("str")), 0); 2.34 2.35 sub = cx_strsubsl(str, 7, 20); 2.36 - EXPECT_EQ(cx_strcmp(sub, cx_str("string")), 0); 2.37 + EXPECT_EQ(cx_strcmp(sub, CX_STR("string")), 0); 2.38 2.39 // just for coverage, call the _m variant 2.40 auto m = cx_strsubs_m(cx_mutstrn(nullptr, 0), 0); 2.41 - EXPECT_EQ(cx_strcmp(cx_strcast(m), cx_str("")), 0); 2.42 + EXPECT_EQ(cx_strcmp(cx_strcast(m), CX_STR("")), 0); 2.43 } 2.44 2.45 TEST(String, strchr) { 2.46 @@ -130,7 +130,7 @@ 2.47 2.48 // just for coverage, call the _m variant 2.49 auto m = cx_strchr_m(cx_mutstrn(nullptr, 0), 'a'); 2.50 - EXPECT_EQ(cx_strcmp(cx_strcast(m), cx_str("")), 0); 2.51 + EXPECT_EQ(cx_strcmp(cx_strcast(m), CX_STR("")), 0); 2.52 } 2.53 2.54 TEST(String, strrchr) { 2.55 @@ -145,7 +145,7 @@ 2.56 2.57 // just for coverage, call the _m variant 2.58 auto m = cx_strrchr_m(cx_mutstrn(nullptr, 0), 'a'); 2.59 - EXPECT_EQ(cx_strcmp(cx_strcast(m), cx_str("")), 0); 2.60 + EXPECT_EQ(cx_strcmp(cx_strcast(m), CX_STR("")), 0); 2.61 } 2.62 2.63 TEST(String, strstr) { 2.64 @@ -179,14 +179,14 @@ 2.65 "wxyz1234567890" 2.66 ); 2.67 2.68 - cxstring notfound = cx_strstr(str, cx_str("no match")); 2.69 + cxstring notfound = cx_strstr(str, CX_STR("no match")); 2.70 EXPECT_EQ(notfound.length, 0); 2.71 2.72 - cxstring result = cx_strstr(str, cx_str("match")); 2.73 + cxstring result = cx_strstr(str, CX_STR("match")); 2.74 EXPECT_EQ(result.length, 20); 2.75 EXPECT_STREQ(result.ptr, "match in this string"); 2.76 2.77 - result = cx_strstr(str, cx_str("")); 2.78 + result = cx_strstr(str, CX_STR("")); 2.79 EXPECT_EQ(result.length, str.length); 2.80 EXPECT_STREQ(result.ptr, str.ptr); 2.81 2.82 @@ -205,36 +205,36 @@ 2.83 TEST(String, strcmp) { 2.84 cxstring str = CX_STR("compare this"); 2.85 2.86 - EXPECT_EQ(cx_strcmp(cx_str(""), cx_str("")), 0); 2.87 - EXPECT_GT(cx_strcmp(str, cx_str("")), 0); 2.88 - EXPECT_EQ(cx_strcmp(str, cx_str("compare this")), 0); 2.89 - EXPECT_NE(cx_strcmp(str, cx_str("Compare This")), 0); 2.90 - EXPECT_LT(cx_strcmp(str, cx_str("compare tool")), 0); 2.91 - EXPECT_GT(cx_strcmp(str, cx_str("compare shit")), 0); 2.92 - EXPECT_LT(cx_strcmp(str, cx_str("compare this not")), 0); 2.93 - EXPECT_GT(cx_strcmp(str, cx_str("compare")), 0); 2.94 + EXPECT_EQ(cx_strcmp(CX_STR(""), CX_STR("")), 0); 2.95 + EXPECT_GT(cx_strcmp(str, CX_STR("")), 0); 2.96 + EXPECT_EQ(cx_strcmp(str, CX_STR("compare this")), 0); 2.97 + EXPECT_NE(cx_strcmp(str, CX_STR("Compare This")), 0); 2.98 + EXPECT_LT(cx_strcmp(str, CX_STR("compare tool")), 0); 2.99 + EXPECT_GT(cx_strcmp(str, CX_STR("compare shit")), 0); 2.100 + EXPECT_LT(cx_strcmp(str, CX_STR("compare this not")), 0); 2.101 + EXPECT_GT(cx_strcmp(str, CX_STR("compare")), 0); 2.102 2.103 - cxstring str2 = cx_str("Compare This"); 2.104 + cxstring str2 = CX_STR("Compare This"); 2.105 EXPECT_NE(cx_strcmp_p(&str, &str2), 0); 2.106 - str2 = cx_str("compare this"); 2.107 + str2 = CX_STR("compare this"); 2.108 EXPECT_EQ(cx_strcmp_p(&str, &str2), 0); 2.109 } 2.110 2.111 TEST(String, strcasecmp) { 2.112 cxstring str = CX_STR("compare this"); 2.113 2.114 - EXPECT_EQ(cx_strcasecmp(cx_str(""), cx_str("")), 0); 2.115 - EXPECT_GT(cx_strcasecmp(str, cx_str("")), 0); 2.116 - EXPECT_EQ(cx_strcasecmp(str, cx_str("compare this")), 0); 2.117 - EXPECT_EQ(cx_strcasecmp(str, cx_str("Compare This")), 0); 2.118 - EXPECT_LT(cx_strcasecmp(str, cx_str("compare tool")), 0); 2.119 - EXPECT_GT(cx_strcasecmp(str, cx_str("compare shit")), 0); 2.120 - EXPECT_LT(cx_strcasecmp(str, cx_str("compare this not")), 0); 2.121 - EXPECT_GT(cx_strcasecmp(str, cx_str("compare")), 0); 2.122 + EXPECT_EQ(cx_strcasecmp(CX_STR(""), CX_STR("")), 0); 2.123 + EXPECT_GT(cx_strcasecmp(str, CX_STR("")), 0); 2.124 + EXPECT_EQ(cx_strcasecmp(str, CX_STR("compare this")), 0); 2.125 + EXPECT_EQ(cx_strcasecmp(str, CX_STR("Compare This")), 0); 2.126 + EXPECT_LT(cx_strcasecmp(str, CX_STR("compare tool")), 0); 2.127 + EXPECT_GT(cx_strcasecmp(str, CX_STR("compare shit")), 0); 2.128 + EXPECT_LT(cx_strcasecmp(str, CX_STR("compare this not")), 0); 2.129 + EXPECT_GT(cx_strcasecmp(str, CX_STR("compare")), 0); 2.130 2.131 - cxstring str2 = cx_str("Compare This"); 2.132 + cxstring str2 = CX_STR("Compare This"); 2.133 EXPECT_EQ(cx_strcasecmp_p(&str, &str2), 0); 2.134 - str2 = cx_str("Compare Tool"); 2.135 + str2 = CX_STR("Compare Tool"); 2.136 EXPECT_LT(cx_strcasecmp_p(&str, &str2), 0); 2.137 } 2.138 2.139 @@ -247,22 +247,22 @@ 2.140 CxTestingAllocator alloc; 2.141 2.142 cxmutstr t1 = cx_strcat_a(&alloc, 2, s1, s2); 2.143 - EXPECT_EQ(cx_strcmp(cx_strcast(t1), cx_str("1234")), 0); 2.144 + EXPECT_EQ(cx_strcmp(cx_strcast(t1), CX_STR("1234")), 0); 2.145 EXPECT_ZERO_TERMINATED(t1); 2.146 cx_strfree_a(&alloc, &t1); 2.147 2.148 cxmutstr t2 = cx_strcat_a(&alloc, 3, s1, s2, s3); 2.149 - EXPECT_EQ(cx_strcmp(cx_strcast(t2), cx_str("123456")), 0); 2.150 + EXPECT_EQ(cx_strcmp(cx_strcast(t2), CX_STR("123456")), 0); 2.151 EXPECT_ZERO_TERMINATED(t2); 2.152 cx_strfree_a(&alloc, &t2); 2.153 2.154 cxmutstr t3 = cx_strcat_a(&alloc, 6, s1, sn, s2, sn, s3, sn); 2.155 - EXPECT_EQ(cx_strcmp(cx_strcast(t3), cx_str("123456")), 0); 2.156 + EXPECT_EQ(cx_strcmp(cx_strcast(t3), CX_STR("123456")), 0); 2.157 EXPECT_ZERO_TERMINATED(t3); 2.158 cx_strfree_a(&alloc, &t3); 2.159 2.160 cxmutstr t4 = cx_strcat_a(&alloc, 2, sn, sn); 2.161 - EXPECT_EQ(cx_strcmp(cx_strcast(t4), cx_str("")), 0); 2.162 + EXPECT_EQ(cx_strcmp(cx_strcast(t4), CX_STR("")), 0); 2.163 EXPECT_ZERO_TERMINATED(t4); 2.164 cx_strfree_a(&alloc, &t4); 2.165 2.166 @@ -270,221 +270,221 @@ 2.167 2.168 // use the macro 2.169 cxmutstr t5 = cx_strcat(3, s3, s1, s2); 2.170 - EXPECT_EQ(cx_strcmp(cx_strcast(t5), cx_str("561234")), 0); 2.171 + EXPECT_EQ(cx_strcmp(cx_strcast(t5), CX_STR("561234")), 0); 2.172 EXPECT_ZERO_TERMINATED(t5); 2.173 cx_strfree(&t5); 2.174 } 2.175 2.176 TEST(String, strsplit) { 2.177 2.178 - cxstring test = cx_str("this,is,a,csv,string"); 2.179 + cxstring test = CX_STR("this,is,a,csv,string"); 2.180 size_t capa = 8; 2.181 cxstring list[8]; 2.182 size_t n; 2.183 2.184 // special case: empty string 2.185 - n = cx_strsplit(test, cx_str(""), capa, list); 2.186 + n = cx_strsplit(test, CX_STR(""), capa, list); 2.187 ASSERT_EQ(n, 1); 2.188 EXPECT_EQ(cx_strcmp(list[0], test), 0); 2.189 2.190 // no delimiter occurrence 2.191 - n = cx_strsplit(test, cx_str("z"), capa, list); 2.192 + n = cx_strsplit(test, CX_STR("z"), capa, list); 2.193 ASSERT_EQ(n, 1); 2.194 EXPECT_EQ(cx_strcmp(list[0], test), 0); 2.195 2.196 // partially matching delimiter 2.197 - n = cx_strsplit(test, cx_str("is,not"), capa, list); 2.198 + n = cx_strsplit(test, CX_STR("is,not"), capa, list); 2.199 ASSERT_EQ(n, 1); 2.200 EXPECT_EQ(cx_strcmp(list[0], test), 0); 2.201 2.202 // matching single-char delimiter 2.203 - n = cx_strsplit(test, cx_str(","), capa, list); 2.204 + n = cx_strsplit(test, CX_STR(","), capa, list); 2.205 ASSERT_EQ(n, 5); 2.206 - EXPECT_EQ(cx_strcmp(list[0], cx_str("this")), 0); 2.207 - EXPECT_EQ(cx_strcmp(list[1], cx_str("is")), 0); 2.208 - EXPECT_EQ(cx_strcmp(list[2], cx_str("a")), 0); 2.209 - EXPECT_EQ(cx_strcmp(list[3], cx_str("csv")), 0); 2.210 - EXPECT_EQ(cx_strcmp(list[4], cx_str("string")), 0); 2.211 + EXPECT_EQ(cx_strcmp(list[0], CX_STR("this")), 0); 2.212 + EXPECT_EQ(cx_strcmp(list[1], CX_STR("is")), 0); 2.213 + EXPECT_EQ(cx_strcmp(list[2], CX_STR("a")), 0); 2.214 + EXPECT_EQ(cx_strcmp(list[3], CX_STR("csv")), 0); 2.215 + EXPECT_EQ(cx_strcmp(list[4], CX_STR("string")), 0); 2.216 2.217 // matching multi-char delimiter 2.218 - n = cx_strsplit(test, cx_str("is"), capa, list); 2.219 + n = cx_strsplit(test, CX_STR("is"), capa, list); 2.220 ASSERT_EQ(n, 3); 2.221 - EXPECT_EQ(cx_strcmp(list[0], cx_str("th")), 0); 2.222 - EXPECT_EQ(cx_strcmp(list[1], cx_str(",")), 0); 2.223 - EXPECT_EQ(cx_strcmp(list[2], cx_str(",a,csv,string")), 0); 2.224 + EXPECT_EQ(cx_strcmp(list[0], CX_STR("th")), 0); 2.225 + EXPECT_EQ(cx_strcmp(list[1], CX_STR(",")), 0); 2.226 + EXPECT_EQ(cx_strcmp(list[2], CX_STR(",a,csv,string")), 0); 2.227 2.228 // bounded list using single-char delimiter 2.229 - n = cx_strsplit(test, cx_str(","), 3, list); 2.230 + n = cx_strsplit(test, CX_STR(","), 3, list); 2.231 ASSERT_EQ(n, 3); 2.232 - EXPECT_EQ(cx_strcmp(list[0], cx_str("this")), 0); 2.233 - EXPECT_EQ(cx_strcmp(list[1], cx_str("is")), 0); 2.234 - EXPECT_EQ(cx_strcmp(list[2], cx_str("a,csv,string")), 0); 2.235 + EXPECT_EQ(cx_strcmp(list[0], CX_STR("this")), 0); 2.236 + EXPECT_EQ(cx_strcmp(list[1], CX_STR("is")), 0); 2.237 + EXPECT_EQ(cx_strcmp(list[2], CX_STR("a,csv,string")), 0); 2.238 2.239 // bounded list using multi-char delimiter 2.240 - n = cx_strsplit(test, cx_str("is"), 2, list); 2.241 + n = cx_strsplit(test, CX_STR("is"), 2, list); 2.242 ASSERT_EQ(n, 2); 2.243 - EXPECT_EQ(cx_strcmp(list[0], cx_str("th")), 0); 2.244 - EXPECT_EQ(cx_strcmp(list[1], cx_str(",is,a,csv,string")), 0); 2.245 + EXPECT_EQ(cx_strcmp(list[0], CX_STR("th")), 0); 2.246 + EXPECT_EQ(cx_strcmp(list[1], CX_STR(",is,a,csv,string")), 0); 2.247 2.248 // start with delimiter 2.249 - n = cx_strsplit(test, cx_str("this"), capa, list); 2.250 + n = cx_strsplit(test, CX_STR("this"), capa, list); 2.251 ASSERT_EQ(n, 2); 2.252 - EXPECT_EQ(cx_strcmp(list[0], cx_str("")), 0); 2.253 - EXPECT_EQ(cx_strcmp(list[1], cx_str(",is,a,csv,string")), 0); 2.254 + EXPECT_EQ(cx_strcmp(list[0], CX_STR("")), 0); 2.255 + EXPECT_EQ(cx_strcmp(list[1], CX_STR(",is,a,csv,string")), 0); 2.256 2.257 // end with delimiter 2.258 - n = cx_strsplit(test, cx_str("string"), capa, list); 2.259 + n = cx_strsplit(test, CX_STR("string"), capa, list); 2.260 ASSERT_EQ(n, 2); 2.261 - EXPECT_EQ(cx_strcmp(list[0], cx_str("this,is,a,csv,")), 0); 2.262 - EXPECT_EQ(cx_strcmp(list[1], cx_str("")), 0); 2.263 + EXPECT_EQ(cx_strcmp(list[0], CX_STR("this,is,a,csv,")), 0); 2.264 + EXPECT_EQ(cx_strcmp(list[1], CX_STR("")), 0); 2.265 2.266 2.267 // end with delimiter exceed bound 2.268 - n = cx_strsplit(cx_str("a,b,c,"), cx_str(","), 3, list); 2.269 + n = cx_strsplit(CX_STR("a,b,c,"), CX_STR(","), 3, list); 2.270 ASSERT_EQ(n, 3); 2.271 - EXPECT_EQ(cx_strcmp(list[0], cx_str("a")), 0); 2.272 - EXPECT_EQ(cx_strcmp(list[1], cx_str("b")), 0); 2.273 - EXPECT_EQ(cx_strcmp(list[2], cx_str("c,")), 0); 2.274 + EXPECT_EQ(cx_strcmp(list[0], CX_STR("a")), 0); 2.275 + EXPECT_EQ(cx_strcmp(list[1], CX_STR("b")), 0); 2.276 + EXPECT_EQ(cx_strcmp(list[2], CX_STR("c,")), 0); 2.277 2.278 // exact match 2.279 - n = cx_strsplit(test, cx_str("this,is,a,csv,string"), capa, list); 2.280 + n = cx_strsplit(test, CX_STR("this,is,a,csv,string"), capa, list); 2.281 ASSERT_EQ(n, 2); 2.282 - EXPECT_EQ(cx_strcmp(list[0], cx_str("")), 0); 2.283 - EXPECT_EQ(cx_strcmp(list[1], cx_str("")), 0); 2.284 + EXPECT_EQ(cx_strcmp(list[0], CX_STR("")), 0); 2.285 + EXPECT_EQ(cx_strcmp(list[1], CX_STR("")), 0); 2.286 2.287 // string to be split is only substring 2.288 - n = cx_strsplit(test, cx_str("this,is,a,csv,string,with,extension"), capa, list); 2.289 + n = cx_strsplit(test, CX_STR("this,is,a,csv,string,with,extension"), capa, list); 2.290 ASSERT_EQ(n, 1); 2.291 EXPECT_EQ(cx_strcmp(list[0], test), 0); 2.292 2.293 // subsequent encounter of delimiter (the string between is empty) 2.294 - n = cx_strsplit(test, cx_str("is,"), capa, list); 2.295 + n = cx_strsplit(test, CX_STR("is,"), capa, list); 2.296 ASSERT_EQ(n, 3); 2.297 - EXPECT_EQ(cx_strcmp(list[0], cx_str("th")), 0); 2.298 - EXPECT_EQ(cx_strcmp(list[1], cx_str("")), 0); 2.299 - EXPECT_EQ(cx_strcmp(list[2], cx_str("a,csv,string")), 0); 2.300 + EXPECT_EQ(cx_strcmp(list[0], CX_STR("th")), 0); 2.301 + EXPECT_EQ(cx_strcmp(list[1], CX_STR("")), 0); 2.302 + EXPECT_EQ(cx_strcmp(list[2], CX_STR("a,csv,string")), 0); 2.303 2.304 // call the _m variant just for coverage 2.305 auto mtest = cx_strdup(test); 2.306 cxmutstr mlist[4]; 2.307 - n = cx_strsplit_m(mtest, cx_str("is,"), 4, mlist); 2.308 + n = cx_strsplit_m(mtest, CX_STR("is,"), 4, mlist); 2.309 ASSERT_EQ(n, 3); 2.310 - EXPECT_EQ(cx_strcmp(cx_strcast(mlist[0]), cx_str("th")), 0); 2.311 - EXPECT_EQ(cx_strcmp(cx_strcast(mlist[1]), cx_str("")), 0); 2.312 - EXPECT_EQ(cx_strcmp(cx_strcast(mlist[2]), cx_str("a,csv,string")), 0); 2.313 + EXPECT_EQ(cx_strcmp(cx_strcast(mlist[0]), CX_STR("th")), 0); 2.314 + EXPECT_EQ(cx_strcmp(cx_strcast(mlist[1]), CX_STR("")), 0); 2.315 + EXPECT_EQ(cx_strcmp(cx_strcast(mlist[2]), CX_STR("a,csv,string")), 0); 2.316 cx_strfree(&mtest); 2.317 } 2.318 2.319 TEST(String, strsplit_a) { 2.320 CxTestingAllocator alloc; 2.321 2.322 - cxstring test = cx_str("this,is,a,csv,string"); 2.323 + cxstring test = CX_STR("this,is,a,csv,string"); 2.324 size_t capa = 8; 2.325 cxstring *list; 2.326 size_t n; 2.327 2.328 // special case: empty string 2.329 - n = cx_strsplit_a(&alloc, test, cx_str(""), capa, &list); 2.330 + n = cx_strsplit_a(&alloc, test, CX_STR(""), capa, &list); 2.331 ASSERT_EQ(n, 1); 2.332 EXPECT_EQ(cx_strcmp(list[0], test), 0); 2.333 cxFree(&alloc, list); 2.334 2.335 // no delimiter occurrence 2.336 - n = cx_strsplit_a(&alloc, test, cx_str("z"), capa, &list); 2.337 + n = cx_strsplit_a(&alloc, test, CX_STR("z"), capa, &list); 2.338 ASSERT_EQ(n, 1); 2.339 EXPECT_EQ(cx_strcmp(list[0], test), 0); 2.340 cxFree(&alloc, list); 2.341 2.342 // partially matching delimiter 2.343 - n = cx_strsplit_a(&alloc, test, cx_str("is,not"), capa, &list); 2.344 + n = cx_strsplit_a(&alloc, test, CX_STR("is,not"), capa, &list); 2.345 ASSERT_EQ(n, 1); 2.346 EXPECT_EQ(cx_strcmp(list[0], test), 0); 2.347 cxFree(&alloc, list); 2.348 2.349 // matching single-char delimiter 2.350 - n = cx_strsplit_a(&alloc, test, cx_str(","), capa, &list); 2.351 + n = cx_strsplit_a(&alloc, test, CX_STR(","), capa, &list); 2.352 ASSERT_EQ(n, 5); 2.353 - EXPECT_EQ(cx_strcmp(list[0], cx_str("this")), 0); 2.354 - EXPECT_EQ(cx_strcmp(list[1], cx_str("is")), 0); 2.355 - EXPECT_EQ(cx_strcmp(list[2], cx_str("a")), 0); 2.356 - EXPECT_EQ(cx_strcmp(list[3], cx_str("csv")), 0); 2.357 - EXPECT_EQ(cx_strcmp(list[4], cx_str("string")), 0); 2.358 + EXPECT_EQ(cx_strcmp(list[0], CX_STR("this")), 0); 2.359 + EXPECT_EQ(cx_strcmp(list[1], CX_STR("is")), 0); 2.360 + EXPECT_EQ(cx_strcmp(list[2], CX_STR("a")), 0); 2.361 + EXPECT_EQ(cx_strcmp(list[3], CX_STR("csv")), 0); 2.362 + EXPECT_EQ(cx_strcmp(list[4], CX_STR("string")), 0); 2.363 cxFree(&alloc, list); 2.364 2.365 // matching multi-char delimiter 2.366 - n = cx_strsplit_a(&alloc, test, cx_str("is"), capa, &list); 2.367 + n = cx_strsplit_a(&alloc, test, CX_STR("is"), capa, &list); 2.368 ASSERT_EQ(n, 3); 2.369 - EXPECT_EQ(cx_strcmp(list[0], cx_str("th")), 0); 2.370 - EXPECT_EQ(cx_strcmp(list[1], cx_str(",")), 0); 2.371 - EXPECT_EQ(cx_strcmp(list[2], cx_str(",a,csv,string")), 0); 2.372 + EXPECT_EQ(cx_strcmp(list[0], CX_STR("th")), 0); 2.373 + EXPECT_EQ(cx_strcmp(list[1], CX_STR(",")), 0); 2.374 + EXPECT_EQ(cx_strcmp(list[2], CX_STR(",a,csv,string")), 0); 2.375 cxFree(&alloc, list); 2.376 2.377 // bounded list using single-char delimiter 2.378 - n = cx_strsplit_a(&alloc, test, cx_str(","), 3, &list); 2.379 + n = cx_strsplit_a(&alloc, test, CX_STR(","), 3, &list); 2.380 ASSERT_EQ(n, 3); 2.381 - EXPECT_EQ(cx_strcmp(list[0], cx_str("this")), 0); 2.382 - EXPECT_EQ(cx_strcmp(list[1], cx_str("is")), 0); 2.383 - EXPECT_EQ(cx_strcmp(list[2], cx_str("a,csv,string")), 0); 2.384 + EXPECT_EQ(cx_strcmp(list[0], CX_STR("this")), 0); 2.385 + EXPECT_EQ(cx_strcmp(list[1], CX_STR("is")), 0); 2.386 + EXPECT_EQ(cx_strcmp(list[2], CX_STR("a,csv,string")), 0); 2.387 cxFree(&alloc, list); 2.388 2.389 // bounded list using multi-char delimiter 2.390 - n = cx_strsplit_a(&alloc, test, cx_str("is"), 2, &list); 2.391 + n = cx_strsplit_a(&alloc, test, CX_STR("is"), 2, &list); 2.392 ASSERT_EQ(n, 2); 2.393 - EXPECT_EQ(cx_strcmp(list[0], cx_str("th")), 0); 2.394 - EXPECT_EQ(cx_strcmp(list[1], cx_str(",is,a,csv,string")), 0); 2.395 + EXPECT_EQ(cx_strcmp(list[0], CX_STR("th")), 0); 2.396 + EXPECT_EQ(cx_strcmp(list[1], CX_STR(",is,a,csv,string")), 0); 2.397 cxFree(&alloc, list); 2.398 2.399 // start with delimiter 2.400 - n = cx_strsplit_a(&alloc, test, cx_str("this"), capa, &list); 2.401 + n = cx_strsplit_a(&alloc, test, CX_STR("this"), capa, &list); 2.402 ASSERT_EQ(n, 2); 2.403 - EXPECT_EQ(cx_strcmp(list[0], cx_str("")), 0); 2.404 - EXPECT_EQ(cx_strcmp(list[1], cx_str(",is,a,csv,string")), 0); 2.405 + EXPECT_EQ(cx_strcmp(list[0], CX_STR("")), 0); 2.406 + EXPECT_EQ(cx_strcmp(list[1], CX_STR(",is,a,csv,string")), 0); 2.407 cxFree(&alloc, list); 2.408 2.409 // end with delimiter 2.410 - n = cx_strsplit_a(&alloc, test, cx_str("string"), capa, &list); 2.411 + n = cx_strsplit_a(&alloc, test, CX_STR("string"), capa, &list); 2.412 ASSERT_EQ(n, 2); 2.413 - EXPECT_EQ(cx_strcmp(list[0], cx_str("this,is,a,csv,")), 0); 2.414 - EXPECT_EQ(cx_strcmp(list[1], cx_str("")), 0); 2.415 + EXPECT_EQ(cx_strcmp(list[0], CX_STR("this,is,a,csv,")), 0); 2.416 + EXPECT_EQ(cx_strcmp(list[1], CX_STR("")), 0); 2.417 cxFree(&alloc, list); 2.418 2.419 // end with delimiter exceed bound 2.420 - n = cx_strsplit_a(&alloc, cx_str("a,b,c,"), cx_str(","), 3, &list); 2.421 + n = cx_strsplit_a(&alloc, CX_STR("a,b,c,"), CX_STR(","), 3, &list); 2.422 ASSERT_EQ(n, 3); 2.423 - EXPECT_EQ(cx_strcmp(list[0], cx_str("a")), 0); 2.424 - EXPECT_EQ(cx_strcmp(list[1], cx_str("b")), 0); 2.425 - EXPECT_EQ(cx_strcmp(list[2], cx_str("c,")), 0); 2.426 + EXPECT_EQ(cx_strcmp(list[0], CX_STR("a")), 0); 2.427 + EXPECT_EQ(cx_strcmp(list[1], CX_STR("b")), 0); 2.428 + EXPECT_EQ(cx_strcmp(list[2], CX_STR("c,")), 0); 2.429 cxFree(&alloc, list); 2.430 2.431 // exact match 2.432 - n = cx_strsplit_a(&alloc, test, cx_str("this,is,a,csv,string"), capa, &list); 2.433 + n = cx_strsplit_a(&alloc, test, CX_STR("this,is,a,csv,string"), capa, &list); 2.434 ASSERT_EQ(n, 2); 2.435 - EXPECT_EQ(cx_strcmp(list[0], cx_str("")), 0); 2.436 - EXPECT_EQ(cx_strcmp(list[1], cx_str("")), 0); 2.437 + EXPECT_EQ(cx_strcmp(list[0], CX_STR("")), 0); 2.438 + EXPECT_EQ(cx_strcmp(list[1], CX_STR("")), 0); 2.439 cxFree(&alloc, list); 2.440 2.441 // string to be split is only substring 2.442 - n = cx_strsplit_a(&alloc, test, cx_str("this,is,a,csv,string,with,extension"), capa, &list); 2.443 + n = cx_strsplit_a(&alloc, test, CX_STR("this,is,a,csv,string,with,extension"), capa, &list); 2.444 ASSERT_EQ(n, 1); 2.445 EXPECT_EQ(cx_strcmp(list[0], test), 0); 2.446 cxFree(&alloc, list); 2.447 2.448 // subsequent encounter of delimiter (the string between is empty) 2.449 - n = cx_strsplit_a(&alloc, test, cx_str("is,"), capa, &list); 2.450 + n = cx_strsplit_a(&alloc, test, CX_STR("is,"), capa, &list); 2.451 ASSERT_EQ(n, 3); 2.452 - EXPECT_EQ(cx_strcmp(list[0], cx_str("th")), 0); 2.453 - EXPECT_EQ(cx_strcmp(list[1], cx_str("")), 0); 2.454 - EXPECT_EQ(cx_strcmp(list[2], cx_str("a,csv,string")), 0); 2.455 + EXPECT_EQ(cx_strcmp(list[0], CX_STR("th")), 0); 2.456 + EXPECT_EQ(cx_strcmp(list[1], CX_STR("")), 0); 2.457 + EXPECT_EQ(cx_strcmp(list[2], CX_STR("a,csv,string")), 0); 2.458 cxFree(&alloc, list); 2.459 2.460 // call the _m variant just for coverage 2.461 auto mtest = cx_strdup(test); 2.462 cxmutstr *mlist; 2.463 - n = cx_strsplit_ma(&alloc, mtest, cx_str("is,"), 4, &mlist); 2.464 + n = cx_strsplit_ma(&alloc, mtest, CX_STR("is,"), 4, &mlist); 2.465 ASSERT_EQ(n, 3); 2.466 - EXPECT_EQ(cx_strcmp(cx_strcast(mlist[0]), cx_str("th")), 0); 2.467 - EXPECT_EQ(cx_strcmp(cx_strcast(mlist[1]), cx_str("")), 0); 2.468 - EXPECT_EQ(cx_strcmp(cx_strcast(mlist[2]), cx_str("a,csv,string")), 0); 2.469 + EXPECT_EQ(cx_strcmp(cx_strcast(mlist[0]), CX_STR("th")), 0); 2.470 + EXPECT_EQ(cx_strcmp(cx_strcast(mlist[1]), CX_STR("")), 0); 2.471 + EXPECT_EQ(cx_strcmp(cx_strcast(mlist[2]), CX_STR("a,csv,string")), 0); 2.472 cxFree(&alloc, mlist); 2.473 cx_strfree(&mtest); 2.474 2.475 @@ -492,63 +492,63 @@ 2.476 } 2.477 2.478 TEST(String, strtrim) { 2.479 - cxstring t1 = cx_strtrim(cx_str(" ein test \t ")); 2.480 - cxstring t2 = cx_strtrim(cx_str("abc")); 2.481 - cxstring t3 = cx_strtrim(cx_str(" 123")); 2.482 - cxstring t4 = cx_strtrim(cx_str("xyz ")); 2.483 - cxstring t5 = cx_strtrim(cx_str(" ")); 2.484 - cxstring empty = cx_strtrim(cx_str("")); 2.485 + cxstring t1 = cx_strtrim(CX_STR(" ein test \t ")); 2.486 + cxstring t2 = cx_strtrim(CX_STR("abc")); 2.487 + cxstring t3 = cx_strtrim(CX_STR(" 123")); 2.488 + cxstring t4 = cx_strtrim(CX_STR("xyz ")); 2.489 + cxstring t5 = cx_strtrim(CX_STR(" ")); 2.490 + cxstring empty = cx_strtrim(CX_STR("")); 2.491 2.492 - EXPECT_EQ(cx_strcmp(t1, cx_str("ein test")), 0); 2.493 - EXPECT_EQ(cx_strcmp(t2, cx_str("abc")), 0); 2.494 - EXPECT_EQ(cx_strcmp(t3, cx_str("123")), 0); 2.495 - EXPECT_EQ(cx_strcmp(t4, cx_str("xyz")), 0); 2.496 - EXPECT_EQ(cx_strcmp(t5, cx_str("")), 0); 2.497 - EXPECT_EQ(cx_strcmp(empty, cx_str("")), 0); 2.498 + EXPECT_EQ(cx_strcmp(t1, CX_STR("ein test")), 0); 2.499 + EXPECT_EQ(cx_strcmp(t2, CX_STR("abc")), 0); 2.500 + EXPECT_EQ(cx_strcmp(t3, CX_STR("123")), 0); 2.501 + EXPECT_EQ(cx_strcmp(t4, CX_STR("xyz")), 0); 2.502 + EXPECT_EQ(cx_strcmp(t5, CX_STR("")), 0); 2.503 + EXPECT_EQ(cx_strcmp(empty, CX_STR("")), 0); 2.504 2.505 // call the _m variant just for coverage 2.506 cxmutstr m1 = cx_strtrim_m(cx_mutstr((char *) " ein test \t ")); 2.507 - EXPECT_EQ(cx_strcmp(cx_strcast(m1), cx_str("ein test")), 0); 2.508 + EXPECT_EQ(cx_strcmp(cx_strcast(m1), CX_STR("ein test")), 0); 2.509 } 2.510 2.511 TEST(String, strprefix) { 2.512 cxstring str = CX_STR("test my prefix and my suffix"); 2.513 cxstring empty = CX_STR(""); 2.514 - EXPECT_FALSE(cx_strprefix(empty, cx_str("pref"))); 2.515 + EXPECT_FALSE(cx_strprefix(empty, CX_STR("pref"))); 2.516 EXPECT_TRUE(cx_strprefix(str, empty)); 2.517 EXPECT_TRUE(cx_strprefix(empty, empty)); 2.518 - EXPECT_TRUE(cx_strprefix(str, cx_str("test "))); 2.519 - EXPECT_FALSE(cx_strprefix(str, cx_str("8-) fsck "))); 2.520 + EXPECT_TRUE(cx_strprefix(str, CX_STR("test "))); 2.521 + EXPECT_FALSE(cx_strprefix(str, CX_STR("8-) fsck "))); 2.522 } 2.523 2.524 TEST(String, strsuffix) { 2.525 cxstring str = CX_STR("test my prefix and my suffix"); 2.526 cxstring empty = CX_STR(""); 2.527 - EXPECT_FALSE(cx_strsuffix(empty, cx_str("suf"))); 2.528 + EXPECT_FALSE(cx_strsuffix(empty, CX_STR("suf"))); 2.529 EXPECT_TRUE(cx_strsuffix(str, empty)); 2.530 EXPECT_TRUE(cx_strsuffix(empty, empty)); 2.531 - EXPECT_TRUE(cx_strsuffix(str, cx_str("fix"))); 2.532 - EXPECT_FALSE(cx_strsuffix(str, cx_str("fox"))); 2.533 + EXPECT_TRUE(cx_strsuffix(str, CX_STR("fix"))); 2.534 + EXPECT_FALSE(cx_strsuffix(str, CX_STR("fox"))); 2.535 } 2.536 2.537 TEST(String, strcaseprefix) { 2.538 cxstring str = CX_STR("test my prefix and my suffix"); 2.539 cxstring empty = CX_STR(""); 2.540 - EXPECT_FALSE(cx_strcaseprefix(empty, cx_str("pREf"))); 2.541 + EXPECT_FALSE(cx_strcaseprefix(empty, CX_STR("pREf"))); 2.542 EXPECT_TRUE(cx_strcaseprefix(str, empty)); 2.543 EXPECT_TRUE(cx_strcaseprefix(empty, empty)); 2.544 - EXPECT_TRUE(cx_strcaseprefix(str, cx_str("TEST "))); 2.545 - EXPECT_FALSE(cx_strcaseprefix(str, cx_str("8-) fsck "))); 2.546 + EXPECT_TRUE(cx_strcaseprefix(str, CX_STR("TEST "))); 2.547 + EXPECT_FALSE(cx_strcaseprefix(str, CX_STR("8-) fsck "))); 2.548 } 2.549 2.550 TEST(String, strcasesuffix) { 2.551 cxstring str = CX_STR("test my prefix and my suffix"); 2.552 cxstring empty = CX_STR(""); 2.553 - EXPECT_FALSE(cx_strcasesuffix(empty, cx_str("sUf"))); 2.554 + EXPECT_FALSE(cx_strcasesuffix(empty, CX_STR("sUf"))); 2.555 EXPECT_TRUE(cx_strcasesuffix(str, empty)); 2.556 EXPECT_TRUE(cx_strcasesuffix(empty, empty)); 2.557 - EXPECT_TRUE(cx_strcasesuffix(str, cx_str("FIX"))); 2.558 - EXPECT_FALSE(cx_strcasesuffix(str, cx_str("fox"))); 2.559 + EXPECT_TRUE(cx_strcasesuffix(str, CX_STR("FIX"))); 2.560 + EXPECT_FALSE(cx_strcasesuffix(str, CX_STR("fox"))); 2.561 } 2.562 2.563 TEST(String, strreplace) { 2.564 @@ -561,44 +561,44 @@ 2.565 cxstring astr = CX_STR("aaaaaaaaaa"); 2.566 cxstring csstr = CX_STR("test AB ab TEST xyz"); 2.567 2.568 - cxmutstr repl = cx_strreplace(str, cx_str("abab"), cx_str("muchlonger")); 2.569 + cxmutstr repl = cx_strreplace(str, CX_STR("abab"), CX_STR("muchlonger")); 2.570 auto expected = "test muchlongerab string aba"; 2.571 2.572 - cxmutstr repln = cx_strreplacen(str, cx_str("ab"), cx_str("c"), 2); 2.573 + cxmutstr repln = cx_strreplacen(str, CX_STR("ab"), CX_STR("c"), 2); 2.574 auto expectedn = "test ccab string aba"; 2.575 2.576 - cxmutstr longrepl = cx_strreplace(longstr, cx_str("a"), cx_str("z")); 2.577 + cxmutstr longrepl = cx_strreplace(longstr, CX_STR("a"), CX_STR("z")); 2.578 auto longexpect = "xyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzcd"; 2.579 2.580 - cxmutstr replnotrail = cx_strreplace(notrail, cx_str("ab"), cx_str("z")); 2.581 + cxmutstr replnotrail = cx_strreplace(notrail, CX_STR("ab"), CX_STR("z")); 2.582 auto notrailexpect = "test zz"; 2.583 2.584 - cxmutstr repleq = cx_strreplace(str, str, cx_str("hello")); 2.585 + cxmutstr repleq = cx_strreplace(str, str, CX_STR("hello")); 2.586 auto eqexpect = "hello"; 2.587 2.588 - cxmutstr replempty1 = cx_strreplace(empty, cx_str("ab"), cx_str("c")); // expect: empty 2.589 - cxmutstr replempty2 = cx_strreplace(str, cx_str("abab"), empty); 2.590 + cxmutstr replempty1 = cx_strreplace(empty, CX_STR("ab"), CX_STR("c")); // expect: empty 2.591 + cxmutstr replempty2 = cx_strreplace(str, CX_STR("abab"), empty); 2.592 auto emptyexpect2 = "test ab string aba"; 2.593 2.594 - cxmutstr replpre = cx_strreplace(str, cx_str("test "), cx_str("TEST ")); 2.595 + cxmutstr replpre = cx_strreplace(str, CX_STR("test "), CX_STR("TEST ")); 2.596 auto preexpected = "TEST ababab string aba"; 2.597 2.598 - cxmutstr replan1 = cx_strreplacen(astr, cx_str("a"), cx_str("x"), 1); 2.599 + cxmutstr replan1 = cx_strreplacen(astr, CX_STR("a"), CX_STR("x"), 1); 2.600 auto an1expected = "xaaaaaaaaa"; 2.601 2.602 - cxmutstr replan4 = cx_strreplacen(astr, cx_str("a"), cx_str("x"), 4); 2.603 + cxmutstr replan4 = cx_strreplacen(astr, CX_STR("a"), CX_STR("x"), 4); 2.604 auto an4expected = "xxxxaaaaaa"; 2.605 2.606 - cxmutstr replan9 = cx_strreplacen(astr, cx_str("a"), cx_str("x"), 9); 2.607 + cxmutstr replan9 = cx_strreplacen(astr, CX_STR("a"), CX_STR("x"), 9); 2.608 auto an9expected = "xxxxxxxxxa"; 2.609 2.610 - cxmutstr replan10 = cx_strreplacen(astr, cx_str("a"), cx_str("x"), 10); 2.611 + cxmutstr replan10 = cx_strreplacen(astr, CX_STR("a"), CX_STR("x"), 10); 2.612 auto an10expected = "xxxxxxxxxx"; 2.613 2.614 - cxmutstr repl1_a = cx_strreplace_a(&alloc, csstr, cx_str("AB"), cx_str("*")); 2.615 + cxmutstr repl1_a = cx_strreplace_a(&alloc, csstr, CX_STR("AB"), CX_STR("*")); 2.616 auto expeced1_a = "test * ab TEST xyz"; 2.617 2.618 - cxmutstr repl2_a = cx_strreplace_a(&alloc, csstr, cx_str("test"), cx_str("TEST")); 2.619 + cxmutstr repl2_a = cx_strreplace_a(&alloc, csstr, CX_STR("test"), CX_STR("TEST")); 2.620 auto expected2_a = "TEST AB ab TEST xyz"; 2.621 2.622 2.623 @@ -651,22 +651,22 @@ 2.624 } 2.625 2.626 TEST(String, strupper) { 2.627 - cxmutstr str = cx_strdup(cx_str("thIs 1s @ Te$t")); 2.628 + cxmutstr str = cx_strdup(CX_STR("thIs 1s @ Te$t")); 2.629 cx_strupper(str); 2.630 EXPECT_STREQ(str.ptr, "THIS 1S @ TE$T"); 2.631 cx_strfree(&str); 2.632 } 2.633 2.634 TEST(String, strlower) { 2.635 - cxmutstr str = cx_strdup(cx_str("thIs 1s @ Te$t")); 2.636 + cxmutstr str = cx_strdup(CX_STR("thIs 1s @ Te$t")); 2.637 cx_strlower(str); 2.638 EXPECT_STREQ(str.ptr, "this 1s @ te$t"); 2.639 cx_strfree(&str); 2.640 } 2.641 2.642 TEST(String, strtok) { 2.643 - cxstring str = cx_str("a,comma,separated,string"); 2.644 - cxstring delim = cx_str(","); 2.645 + cxstring str = CX_STR("a,comma,separated,string"); 2.646 + cxstring delim = CX_STR(","); 2.647 CxStrtokCtx ctx = cx_strtok(str, delim, 3); 2.648 EXPECT_EQ(ctx.str.ptr, str.ptr); 2.649 EXPECT_EQ(ctx.str.length, str.length); 2.650 @@ -681,8 +681,8 @@ 2.651 } 2.652 2.653 TEST(String, strtok_m) { 2.654 - cxmutstr str = cx_strdup(cx_str("a,comma,separated,string")); 2.655 - cxstring delim = cx_str(","); 2.656 + cxmutstr str = cx_strdup(CX_STR("a,comma,separated,string")); 2.657 + cxstring delim = CX_STR(","); 2.658 CxStrtokCtx ctx = cx_strtok_m(str, delim, 3); 2.659 EXPECT_EQ(ctx.str.ptr, str.ptr); 2.660 EXPECT_EQ(ctx.str.length, str.length); 2.661 @@ -698,8 +698,8 @@ 2.662 } 2.663 2.664 TEST(String, strtok_delim) { 2.665 - cxstring str = cx_str("an,arbitrarily|separated;string"); 2.666 - cxstring delim = cx_str(","); 2.667 + cxstring str = CX_STR("an,arbitrarily|separated;string"); 2.668 + cxstring delim = CX_STR(","); 2.669 cxstring delim_more[2] = {CX_STR("|"), CX_STR(";")}; 2.670 CxStrtokCtx ctx = cx_strtok(str, delim, 3); 2.671 cx_strtok_delim(&ctx, delim_more, 2); 2.672 @@ -716,15 +716,15 @@ 2.673 } 2.674 2.675 TEST(String, strtok_next_easy) { 2.676 - cxstring str = cx_str("a,comma,separated,string"); 2.677 - cxstring delim = cx_str(","); 2.678 + cxstring str = CX_STR("a,comma,separated,string"); 2.679 + cxstring delim = CX_STR(","); 2.680 CxStrtokCtx ctx = cx_strtok(str, delim, 3); 2.681 bool ret; 2.682 cxstring tok; 2.683 2.684 ret = cx_strtok_next(&ctx, &tok); 2.685 ASSERT_TRUE(ret); 2.686 - EXPECT_EQ(cx_strcmp(tok, cx_str("a")), 0); 2.687 + EXPECT_EQ(cx_strcmp(tok, CX_STR("a")), 0); 2.688 EXPECT_EQ(ctx.pos, 0); 2.689 EXPECT_EQ(ctx.next_pos, 2); 2.690 EXPECT_EQ(ctx.delim_pos, 1); 2.691 @@ -732,7 +732,7 @@ 2.692 2.693 ret = cx_strtok_next(&ctx, &tok); 2.694 ASSERT_TRUE(ret); 2.695 - EXPECT_EQ(cx_strcmp(tok, cx_str("comma")), 0); 2.696 + EXPECT_EQ(cx_strcmp(tok, CX_STR("comma")), 0); 2.697 EXPECT_EQ(ctx.pos, 2); 2.698 EXPECT_EQ(ctx.next_pos, 8); 2.699 EXPECT_EQ(ctx.delim_pos, 7); 2.700 @@ -740,7 +740,7 @@ 2.701 2.702 ret = cx_strtok_next(&ctx, &tok); 2.703 ASSERT_TRUE(ret); 2.704 - EXPECT_EQ(cx_strcmp(tok, cx_str("separated")), 0); 2.705 + EXPECT_EQ(cx_strcmp(tok, CX_STR("separated")), 0); 2.706 EXPECT_EQ(ctx.pos, 8); 2.707 EXPECT_EQ(ctx.next_pos, 18); 2.708 EXPECT_EQ(ctx.delim_pos, 17); 2.709 @@ -755,15 +755,15 @@ 2.710 } 2.711 2.712 TEST(String, strtok_next_unlimited) { 2.713 - cxstring str = cx_str("some;-;otherwise;-;separated;-;string;-;"); 2.714 - cxstring delim = cx_str(";-;"); 2.715 + cxstring str = CX_STR("some;-;otherwise;-;separated;-;string;-;"); 2.716 + cxstring delim = CX_STR(";-;"); 2.717 CxStrtokCtx ctx = cx_strtok(str, delim, SIZE_MAX); 2.718 bool ret; 2.719 cxstring tok; 2.720 2.721 ret = cx_strtok_next(&ctx, &tok); 2.722 ASSERT_TRUE(ret); 2.723 - EXPECT_EQ(cx_strcmp(tok, cx_str("some")), 0); 2.724 + EXPECT_EQ(cx_strcmp(tok, CX_STR("some")), 0); 2.725 EXPECT_EQ(ctx.pos, 0); 2.726 EXPECT_EQ(ctx.next_pos, 7); 2.727 EXPECT_EQ(ctx.delim_pos, 4); 2.728 @@ -771,7 +771,7 @@ 2.729 2.730 ret = cx_strtok_next(&ctx, &tok); 2.731 ASSERT_TRUE(ret); 2.732 - EXPECT_EQ(cx_strcmp(tok, cx_str("otherwise")), 0); 2.733 + EXPECT_EQ(cx_strcmp(tok, CX_STR("otherwise")), 0); 2.734 EXPECT_EQ(ctx.pos, 7); 2.735 EXPECT_EQ(ctx.next_pos, 19); 2.736 EXPECT_EQ(ctx.delim_pos, 16); 2.737 @@ -779,7 +779,7 @@ 2.738 2.739 ret = cx_strtok_next(&ctx, &tok); 2.740 ASSERT_TRUE(ret); 2.741 - EXPECT_EQ(cx_strcmp(tok, cx_str("separated")), 0); 2.742 + EXPECT_EQ(cx_strcmp(tok, CX_STR("separated")), 0); 2.743 EXPECT_EQ(ctx.pos, 19); 2.744 EXPECT_EQ(ctx.next_pos, 31); 2.745 EXPECT_EQ(ctx.delim_pos, 28); 2.746 @@ -787,7 +787,7 @@ 2.747 2.748 ret = cx_strtok_next(&ctx, &tok); 2.749 ASSERT_TRUE(ret); 2.750 - EXPECT_EQ(cx_strcmp(tok, cx_str("string")), 0); 2.751 + EXPECT_EQ(cx_strcmp(tok, CX_STR("string")), 0); 2.752 EXPECT_EQ(ctx.pos, 31); 2.753 EXPECT_EQ(ctx.next_pos, 40); 2.754 EXPECT_EQ(ctx.delim_pos, 37); 2.755 @@ -795,7 +795,7 @@ 2.756 2.757 ret = cx_strtok_next(&ctx, &tok); 2.758 ASSERT_TRUE(ret); 2.759 - EXPECT_EQ(cx_strcmp(tok, cx_str("")), 0); 2.760 + EXPECT_EQ(cx_strcmp(tok, CX_STR("")), 0); 2.761 EXPECT_EQ(ctx.pos, 40); 2.762 EXPECT_EQ(ctx.next_pos, 40); 2.763 EXPECT_EQ(ctx.delim_pos, 40); 2.764 @@ -809,8 +809,8 @@ 2.765 } 2.766 2.767 TEST(String, strtok_next_advanced) { 2.768 - cxmutstr str = cx_strdup(cx_str("an,arbitrarily;||separated;string")); 2.769 - cxstring delim = cx_str(","); 2.770 + cxmutstr str = cx_strdup(CX_STR("an,arbitrarily;||separated;string")); 2.771 + cxstring delim = CX_STR(","); 2.772 cxstring delim_more[2] = {CX_STR("||"), CX_STR(";")}; 2.773 CxStrtokCtx ctx = cx_strtok_m(str, delim, 10); 2.774 cx_strtok_delim(&ctx, delim_more, 2); 2.775 @@ -819,7 +819,7 @@ 2.776 2.777 ret = cx_strtok_next_m(&ctx, &tok); 2.778 ASSERT_TRUE(ret); 2.779 - EXPECT_EQ(cx_strcmp(cx_strcast(tok), cx_str("an")), 0); 2.780 + EXPECT_EQ(cx_strcmp(cx_strcast(tok), CX_STR("an")), 0); 2.781 EXPECT_EQ(ctx.pos, 0); 2.782 EXPECT_EQ(ctx.next_pos, 3); 2.783 EXPECT_EQ(ctx.delim_pos, 2); 2.784 @@ -828,7 +828,7 @@ 2.785 2.786 ret = cx_strtok_next_m(&ctx, &tok); 2.787 ASSERT_TRUE(ret); 2.788 - EXPECT_EQ(cx_strcmp(cx_strcast(tok), cx_str("arbitrarily")), 0); 2.789 + EXPECT_EQ(cx_strcmp(cx_strcast(tok), CX_STR("arbitrarily")), 0); 2.790 EXPECT_EQ(ctx.pos, 3); 2.791 EXPECT_EQ(ctx.next_pos, 15); 2.792 EXPECT_EQ(ctx.delim_pos, 14); 2.793 @@ -837,7 +837,7 @@ 2.794 2.795 ret = cx_strtok_next_m(&ctx, &tok); 2.796 ASSERT_TRUE(ret); 2.797 - EXPECT_EQ(cx_strcmp(cx_strcast(tok), cx_str("")), 0); 2.798 + EXPECT_EQ(cx_strcmp(cx_strcast(tok), CX_STR("")), 0); 2.799 EXPECT_EQ(ctx.pos, 15); 2.800 EXPECT_EQ(ctx.next_pos, 17); 2.801 EXPECT_EQ(ctx.delim_pos, 15); 2.802 @@ -846,7 +846,7 @@ 2.803 2.804 ret = cx_strtok_next_m(&ctx, &tok); 2.805 ASSERT_TRUE(ret); 2.806 - EXPECT_EQ(cx_strcmp(cx_strcast(tok), cx_str("separated")), 0); 2.807 + EXPECT_EQ(cx_strcmp(cx_strcast(tok), CX_STR("separated")), 0); 2.808 EXPECT_EQ(ctx.pos, 17); 2.809 EXPECT_EQ(ctx.next_pos, 27); 2.810 EXPECT_EQ(ctx.delim_pos, 26); 2.811 @@ -855,7 +855,7 @@ 2.812 2.813 ret = cx_strtok_next_m(&ctx, &tok); 2.814 ASSERT_TRUE(ret); 2.815 - EXPECT_EQ(cx_strcmp(cx_strcast(tok), cx_str("string")), 0); 2.816 + EXPECT_EQ(cx_strcmp(cx_strcast(tok), CX_STR("string")), 0); 2.817 EXPECT_EQ(ctx.pos, 27); 2.818 EXPECT_EQ(ctx.next_pos, 33); 2.819 EXPECT_EQ(ctx.delim_pos, 33); 2.820 @@ -869,7 +869,7 @@ 2.821 EXPECT_EQ(ctx.delim_pos, 33); 2.822 EXPECT_EQ(ctx.found, 5); 2.823 2.824 - EXPECT_EQ(cx_strcmp(cx_strcast(str), cx_str("AN,ARBITRARILY;||SEPARATED;STRING")), 0); 2.825 + EXPECT_EQ(cx_strcmp(cx_strcast(str), CX_STR("AN,ARBITRARILY;||SEPARATED;STRING")), 0); 2.826 2.827 cx_strfree(&str); 2.828 }