test/test_string.cpp

changeset 585
038f5e99e00f
parent 583
0f3c9662f9b5
child 586
aa51aaa907b9
equal deleted inserted replaced
584:184e9ebfc3cc 585:038f5e99e00f
69 EXPECT_EQ(len1, 4); 69 EXPECT_EQ(len1, 4);
70 EXPECT_EQ(len2, 9); 70 EXPECT_EQ(len2, 9);
71 EXPECT_EQ(len3, 10); 71 EXPECT_EQ(len3, 10);
72 } 72 }
73 73
74 TEST(String, strsubs) {
75 cxstring str = CX_STR("A test string");
76
77 cxstring sub = cx_strsubs(str, 0);
78 EXPECT_EQ(cx_strcmp(sub, str), 0);
79
80 sub = cx_strsubs(str, 2);
81 EXPECT_EQ(cx_strcmp(sub, cx_str("test string")), 0);
82
83 sub = cx_strsubs(str, 7);
84 EXPECT_EQ(cx_strcmp(sub, cx_str("string")), 0);
85
86 sub = cx_strsubs(str, 15);
87 EXPECT_EQ(cx_strcmp(sub, cx_str("")), 0);
88
89 sub = cx_strsubsl(str, 2, 4);
90 EXPECT_EQ(cx_strcmp(sub, cx_str("test")), 0);
91
92 sub = cx_strsubsl(str, 7, 3);
93 EXPECT_EQ(cx_strcmp(sub, cx_str("str")), 0);
94
95 sub = cx_strsubsl(str, 7, 20);
96 EXPECT_EQ(cx_strcmp(sub, cx_str("string")), 0);
97
98 // just for coverage, call the _m variant
99 auto m = cx_strsubs_m(cx_mutstrn(nullptr, 0), 0);
100 EXPECT_EQ(cx_strcmp(cx_strcast(m), cx_str("")), 0);
101 }
74 102
75 TEST(String, strchr) { 103 TEST(String, strchr) {
76 cxstring str = CX_STR("I will find you - and I will kill you"); 104 cxstring str = CX_STR("I will find you - and I will kill you");
77 105
78 cxstring notfound = cx_strchr(str, 'x'); 106 cxstring notfound = cx_strchr(str, 'x');
79 EXPECT_EQ(notfound.length, 0); 107 EXPECT_EQ(notfound.length, 0);
80 108
81 cxstring result = cx_strchr(str, 'w'); 109 cxstring result = cx_strchr(str, 'w');
82 EXPECT_EQ(result.length, 35); 110 EXPECT_EQ(result.length, 35);
83 EXPECT_EQ(strcmp("will find you - and I will kill you", result.ptr), 0); 111 EXPECT_EQ(strcmp("will find you - and I will kill you", result.ptr), 0);
112
113 // just for coverage, call the _m variant
114 auto m = cx_strchr_m(cx_mutstrn(nullptr, 0), 'a');
115 EXPECT_EQ(cx_strcmp(cx_strcast(m), cx_str("")), 0);
84 } 116 }
85 117
86 TEST(String, strrchr) { 118 TEST(String, strrchr) {
87 cxstring str = CX_STR("I will find you - and I will kill you"); 119 cxstring str = CX_STR("I will find you - and I will kill you");
88 120
90 EXPECT_EQ(notfound.length, 0); 122 EXPECT_EQ(notfound.length, 0);
91 123
92 cxstring result = cx_strrchr(str, 'w'); 124 cxstring result = cx_strrchr(str, 'w');
93 EXPECT_EQ(result.length, 13); 125 EXPECT_EQ(result.length, 13);
94 EXPECT_EQ(strcmp("will kill you", result.ptr), 0); 126 EXPECT_EQ(strcmp("will kill you", result.ptr), 0);
127
128 // just for coverage, call the _m variant
129 auto m = cx_strrchr_m(cx_mutstrn(nullptr, 0), 'a');
130 EXPECT_EQ(cx_strcmp(cx_strcast(m), cx_str("")), 0);
95 } 131 }
96 132
97 TEST(String, strstr) { 133 TEST(String, strstr) {
98 cxstring str = CX_STR("find the match in this string"); 134 cxstring str = CX_STR("find the match in this string");
99 cxstring longstr = CX_STR( 135 cxstring longstr = CX_STR(
137 EXPECT_EQ(strcmp(str.ptr, result.ptr), 0); 173 EXPECT_EQ(strcmp(str.ptr, result.ptr), 0);
138 174
139 result = cx_strstr(longstr, longstrpattern); 175 result = cx_strstr(longstr, longstrpattern);
140 EXPECT_EQ(result.length, longstrresult.length); 176 EXPECT_EQ(result.length, longstrresult.length);
141 EXPECT_EQ(strcmp(result.ptr, longstrresult.ptr), 0); 177 EXPECT_EQ(strcmp(result.ptr, longstrresult.ptr), 0);
178
179 // just for coverage, call the _m variant
180 auto mstr = cx_strdup(longstr);
181 auto m = cx_strstr_m(mstr, longstrpattern);
182 EXPECT_EQ(m.length, longstrresult.length);
183 EXPECT_EQ(strcmp(m.ptr, longstrresult.ptr), 0);
184 cx_strfree(&mstr);
142 } 185 }
143 186
144 TEST(String, strcmp) { 187 TEST(String, strcmp) {
145 cxstring str = CX_STR("compare this"); 188 cxstring str = CX_STR("compare this");
146 189
281 n = cx_strsplit(test, cx_str("is,"), capa, list); 324 n = cx_strsplit(test, cx_str("is,"), capa, list);
282 ASSERT_EQ(n, 3); 325 ASSERT_EQ(n, 3);
283 EXPECT_EQ(cx_strcmp(list[0], cx_str("th")), 0); 326 EXPECT_EQ(cx_strcmp(list[0], cx_str("th")), 0);
284 EXPECT_EQ(cx_strcmp(list[1], cx_str("")), 0); 327 EXPECT_EQ(cx_strcmp(list[1], cx_str("")), 0);
285 EXPECT_EQ(cx_strcmp(list[2], cx_str("a,csv,string")), 0); 328 EXPECT_EQ(cx_strcmp(list[2], cx_str("a,csv,string")), 0);
329
330 /* call the _m variant just for coverage */
331 auto mtest = cx_strdup(test);
332 cxmutstr mlist[4];
333 n = cx_strsplit_m(mtest, cx_str("is,"), 4, mlist);
334 ASSERT_EQ(n, 3);
335 EXPECT_EQ(cx_strcmp(cx_strcast(mlist[0]), cx_str("th")), 0);
336 EXPECT_EQ(cx_strcmp(cx_strcast(mlist[1]), cx_str("")), 0);
337 EXPECT_EQ(cx_strcmp(cx_strcast(mlist[2]), cx_str("a,csv,string")), 0);
338 cx_strfree(&mtest);
286 } 339 }
287 340
288 TEST(String, strsplit_a) { 341 TEST(String, strsplit_a) {
289 CxTestingAllocator alloc; 342 CxTestingAllocator alloc;
290 343
385 EXPECT_EQ(cx_strcmp(list[0], cx_str("th")), 0); 438 EXPECT_EQ(cx_strcmp(list[0], cx_str("th")), 0);
386 EXPECT_EQ(cx_strcmp(list[1], cx_str("")), 0); 439 EXPECT_EQ(cx_strcmp(list[1], cx_str("")), 0);
387 EXPECT_EQ(cx_strcmp(list[2], cx_str("a,csv,string")), 0); 440 EXPECT_EQ(cx_strcmp(list[2], cx_str("a,csv,string")), 0);
388 cxFree(&alloc, list); 441 cxFree(&alloc, list);
389 442
443 /* call the _m variant just for coverage */
444 auto mtest = cx_strdup(test);
445 cxmutstr *mlist;
446 n = cx_strsplit_ma(&alloc, mtest, cx_str("is,"), 4, &mlist);
447 ASSERT_EQ(n, 3);
448 EXPECT_EQ(cx_strcmp(cx_strcast(mlist[0]), cx_str("th")), 0);
449 EXPECT_EQ(cx_strcmp(cx_strcast(mlist[1]), cx_str("")), 0);
450 EXPECT_EQ(cx_strcmp(cx_strcast(mlist[2]), cx_str("a,csv,string")), 0);
451 cxFree(&alloc, mlist);
452 cx_strfree(&mtest);
453
390 EXPECT_TRUE(alloc.verify()); 454 EXPECT_TRUE(alloc.verify());
391 } 455 }
392 456
393 TEST(String, strtrim) { 457 TEST(String, strtrim) {
394 cxstring t1 = cx_strtrim(cx_str(" ein test \t ")); 458 cxstring t1 = cx_strtrim(cx_str(" ein test \t "));
402 EXPECT_EQ(cx_strcmp(t2, cx_str("abc")), 0); 466 EXPECT_EQ(cx_strcmp(t2, cx_str("abc")), 0);
403 EXPECT_EQ(cx_strcmp(t3, cx_str("123")), 0); 467 EXPECT_EQ(cx_strcmp(t3, cx_str("123")), 0);
404 EXPECT_EQ(cx_strcmp(t4, cx_str("xyz")), 0); 468 EXPECT_EQ(cx_strcmp(t4, cx_str("xyz")), 0);
405 EXPECT_EQ(cx_strcmp(t5, cx_str("")), 0); 469 EXPECT_EQ(cx_strcmp(t5, cx_str("")), 0);
406 EXPECT_EQ(cx_strcmp(empty, cx_str("")), 0); 470 EXPECT_EQ(cx_strcmp(empty, cx_str("")), 0);
471
472 /* call the _m variant just for coverage */
473 cxmutstr m1 = cx_strtrim_m(cx_mutstr((char *) " ein test \t "));
474 EXPECT_EQ(cx_strcmp(cx_strcast(m1), cx_str("ein test")), 0);
407 } 475 }
408 476
409 TEST(String, strprefix) { 477 TEST(String, strprefix) {
410 cxstring str = CX_STR("test my prefix and my suffix"); 478 cxstring str = CX_STR("test my prefix and my suffix");
411 cxstring empty = CX_STR(""); 479 cxstring empty = CX_STR("");

mercurial