1.1 --- a/test/string_tests.c Fri Dec 27 11:48:55 2019 +0100 1.2 +++ b/test/string_tests.c Sun Dec 29 11:29:17 2019 +0100 1.3 @@ -476,3 +476,41 @@ 1.4 1.5 UCX_TEST_END 1.6 } 1.7 + 1.8 +UCX_TEST(test_sstrreplace) { 1.9 + 1.10 + sstr_t str = ST("test ababab string aba"); 1.11 + sstr_t longstr = ST("xyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacd"); 1.12 + sstr_t notrail = ST("test abab"); 1.13 + 1.14 + sstr_t repl = sstrreplace(str, SC("abab"), SC("muchlonger")); 1.15 + sstr_t expected = ST("test muchlongerab string aba"); 1.16 + 1.17 + sstr_t repln = sstrreplacen(str, SC("ab"), SC("c"), 2); 1.18 + sstr_t expectedn = ST("test ccab string aba"); 1.19 + 1.20 + sstr_t longrepl = sstrreplace(longstr, SC("a"), SC("z")); 1.21 + sstr_t longexpect = ST("xyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzcd"); 1.22 + 1.23 + sstr_t replnotrail = sstrreplace(notrail, SC("ab"), SC("z")); 1.24 + sstr_t notrailexpect = ST("test zz"); 1.25 + 1.26 + UCX_TEST_BEGIN 1.27 + 1.28 + UCX_TEST_ASSERT(repl.ptr != str.ptr, "result string is not fresh"); 1.29 + UCX_TEST_ASSERT(!sstrcmp(repl, expected), "incorrect replacement"); 1.30 + 1.31 + UCX_TEST_ASSERT(repln.ptr != str.ptr, "result string is not fresh"); 1.32 + UCX_TEST_ASSERT(!sstrcmp(repln, expectedn), "incorrect replacement"); 1.33 + 1.34 + UCX_TEST_ASSERT(!sstrcmp(longrepl, longexpect), 1.35 + "incorrect handling of long strings"); 1.36 + 1.37 + UCX_TEST_ASSERT(!sstrcmp(replnotrail, notrailexpect), 1.38 + "no trail replacement fails"); 1.39 + 1.40 + UCX_TEST_END 1.41 + 1.42 + free(repl.ptr); 1.43 + free(repln.ptr); 1.44 +} 1.45 \ No newline at end of file