test/string_tests.c

changeset 382
d746888af4e5
parent 378
952c2df7e7ac
equal deleted inserted replaced
381:f5421bb2c8d1 382:d746888af4e5
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 }

mercurial