test/string_tests.c

changeset 378
952c2df7e7ac
parent 364
5577d6c27a33
child 382
d746888af4e5
     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

mercurial