480 UCX_TEST(test_sstrreplace) { |
480 UCX_TEST(test_sstrreplace) { |
481 |
481 |
482 sstr_t str = ST("test ababab string aba"); |
482 sstr_t str = ST("test ababab string aba"); |
483 sstr_t longstr = ST("xyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacd"); |
483 sstr_t longstr = ST("xyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacd"); |
484 sstr_t notrail = ST("test abab"); |
484 sstr_t notrail = ST("test abab"); |
|
485 sstr_t empty = ST(""); |
|
486 sstr_t astr = ST("aaaaaaaaaa"); |
|
487 sstr_t csstr = ST("test AB ab TEST xyz"); |
485 |
488 |
486 sstr_t repl = sstrreplace(str, SC("abab"), SC("muchlonger")); |
489 sstr_t repl = sstrreplace(str, SC("abab"), SC("muchlonger")); |
487 sstr_t expected = ST("test muchlongerab string aba"); |
490 sstr_t expected = ST("test muchlongerab string aba"); |
488 |
491 |
489 sstr_t repln = sstrreplacen(str, SC("ab"), SC("c"), 2); |
492 sstr_t repln = sstrreplacen(str, SC("ab"), SC("c"), 2); |
492 sstr_t longrepl = sstrreplace(longstr, SC("a"), SC("z")); |
495 sstr_t longrepl = sstrreplace(longstr, SC("a"), SC("z")); |
493 sstr_t longexpect = ST("xyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzcd"); |
496 sstr_t longexpect = ST("xyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzcd"); |
494 |
497 |
495 sstr_t replnotrail = sstrreplace(notrail, SC("ab"), SC("z")); |
498 sstr_t replnotrail = sstrreplace(notrail, SC("ab"), SC("z")); |
496 sstr_t notrailexpect = ST("test zz"); |
499 sstr_t notrailexpect = ST("test zz"); |
497 |
500 |
|
501 sstr_t repleq = sstrreplace(str, str, SC("hello")); |
|
502 sstr_t eqexpect = ST("hello"); |
|
503 |
|
504 sstr_t replempty1 = sstrreplace(empty, SC("ab"), SC("c")); // expect: empty |
|
505 sstr_t replempty2 = sstrreplace(str, SC("abab"), empty); |
|
506 sstr_t emptyexpect2 = ST("test ab string aba"); |
|
507 |
|
508 sstr_t replpre = sstrreplace(str, SC("test "), SC("TEST ")); |
|
509 sstr_t preexpected = ST("TEST ababab string aba"); |
|
510 |
|
511 sstr_t replan1 = sstrreplacen(astr, SC("a"), SC("x"), 1); |
|
512 sstr_t an1expected = ST("xaaaaaaaaa"); |
|
513 |
|
514 sstr_t replan4 = sstrreplacen(astr, SC("a"), SC("x"), 4); |
|
515 sstr_t an4expected = ST("xxxxaaaaaa"); |
|
516 |
|
517 sstr_t replan9 = sstrreplacen(astr, SC("a"), SC("x"), 9); |
|
518 sstr_t an9expected = ST("xxxxxxxxxa"); |
|
519 |
|
520 sstr_t replan10 = sstrreplacen(astr, SC("a"), SC("x"), 10); |
|
521 sstr_t an10expected = ST("xxxxxxxxxx"); |
|
522 |
|
523 sstr_t replcs1 = sstrreplace(csstr, SC("AB"), SC("*")); |
|
524 sstr_t cs1expected = ST("test * ab TEST xyz"); |
|
525 |
|
526 sstr_t replcs2 = sstrreplace(csstr, SC("test"), SC("TEST")); |
|
527 sstr_t cs2expected = ST("TEST AB ab TEST xyz"); |
|
528 |
498 UCX_TEST_BEGIN |
529 UCX_TEST_BEGIN |
499 |
530 |
500 UCX_TEST_ASSERT(repl.ptr != str.ptr, "result string is not fresh"); |
531 UCX_TEST_ASSERT(repl.ptr != str.ptr, "result string is not fresh"); |
501 UCX_TEST_ASSERT(!sstrcmp(repl, expected), "incorrect replacement"); |
532 UCX_TEST_ASSERT(!sstrcmp(repl, expected), "incorrect replacement"); |
502 |
533 |
506 UCX_TEST_ASSERT(!sstrcmp(longrepl, longexpect), |
537 UCX_TEST_ASSERT(!sstrcmp(longrepl, longexpect), |
507 "incorrect handling of long strings"); |
538 "incorrect handling of long strings"); |
508 |
539 |
509 UCX_TEST_ASSERT(!sstrcmp(replnotrail, notrailexpect), |
540 UCX_TEST_ASSERT(!sstrcmp(replnotrail, notrailexpect), |
510 "no trail replacement fails"); |
541 "no trail replacement fails"); |
|
542 |
|
543 UCX_TEST_ASSERT(!sstrcmp(repleq, eqexpect), |
|
544 "equal replacement fails"); |
|
545 |
|
546 UCX_TEST_ASSERT(!sstrcmp(replempty1, empty), |
|
547 "replacement in empty string fails"); |
|
548 |
|
549 UCX_TEST_ASSERT(!sstrcmp(replempty2, emptyexpect2), |
|
550 "empty replacement fails"); |
|
551 |
|
552 UCX_TEST_ASSERT(!sstrcmp(replpre, preexpected), |
|
553 "prefix replacement fails"); |
|
554 |
|
555 UCX_TEST_ASSERT(!sstrcmp(replan1, an1expected), |
|
556 "a1 replacement fails"); |
|
557 |
|
558 UCX_TEST_ASSERT(!sstrcmp(replan4, an4expected), |
|
559 "a4 replacement fails"); |
|
560 |
|
561 UCX_TEST_ASSERT(!sstrcmp(replan9, an9expected), |
|
562 "a9 replacement fails"); |
|
563 |
|
564 UCX_TEST_ASSERT(!sstrcmp(replan10, an10expected), |
|
565 "a10 replacement fails"); |
|
566 |
|
567 UCX_TEST_ASSERT(!sstrcmp(replcs1, cs1expected), |
|
568 "case sensitivity test1 fails"); |
|
569 |
|
570 UCX_TEST_ASSERT(!sstrcmp(replcs2, cs2expected), |
|
571 "case sensitivity test2 fails"); |
511 |
572 |
512 UCX_TEST_END |
573 UCX_TEST_END |
513 |
574 |
514 free(repl.ptr); |
575 free(repl.ptr); |
515 free(repln.ptr); |
576 free(repln.ptr); |
516 } |
577 free(longrepl.ptr); |
|
578 free(replnotrail.ptr); |
|
579 free(repleq.ptr); |
|
580 if(replempty1.ptr) free(replempty1.ptr); |
|
581 free(replempty2.ptr); |
|
582 free(replpre.ptr); |
|
583 free(replan1.ptr); |
|
584 free(replan4.ptr); |
|
585 free(replan9.ptr); |
|
586 free(replan10.ptr); |
|
587 free(replcs1.ptr); |
|
588 free(replcs2.ptr); |
|
589 } |