tests/test_string.c

changeset 806
e06249e09f99
parent 777
e5b29e6f0615
child 809
b7e2e1d7ed22
     1.1 --- a/tests/test_string.c	Sun Jan 14 13:13:12 2024 +0100
     1.2 +++ b/tests/test_string.c	Sun Jan 14 13:50:17 2024 +0100
     1.3 @@ -175,34 +175,37 @@
     1.4  
     1.5  CX_TEST(test_strstr) {
     1.6      cxstring str = CX_STR("find the match in this string");
     1.7 -    cxstring longstr = CX_STR(
     1.8 -            "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl"
     1.9 -            "mnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwx"
    1.10 -            "yzabcdeababababnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghij"
    1.11 -            "klmnopqrstuvwxyzaababababababababrstuvwxyzabcdefghijklmnopqrstuv"
    1.12 -            "abababababababababababababababababababababababababababababababab"
    1.13 -            "abababababababababababababababababababababababababababababababab"
    1.14 -            "abababababababababababababababababababababababababababababababab"
    1.15 -            "abababababababababababababababababababababababababababababababab"
    1.16 -            "abababababababababababababababababababababababababababababababab"
    1.17 -            "abababababababababababababababababababababababababababababababab"
    1.18 -            "wxyz1234567890");
    1.19 -    cxstring longstrpattern = CX_STR(
    1.20 -            "abababababababababababababababababababababababababababababababab"
    1.21 -            "abababababababababababababababababababababababababababababababab"
    1.22 -            "abababababababababababababababababababababababababababababababab"
    1.23 -            "abababababababababababababababababababababababababababababababab"
    1.24 -            "abababababababababababababababababababababababababababababababab"
    1.25 +
    1.26 +    size_t const longstrpatternlen = 64 + cx_strstr_sbo_size;
    1.27 +    size_t const longstrlen = 320 + longstrpatternlen + 14;
    1.28 +
    1.29 +    char *longstrc = malloc(longstrlen+1);
    1.30 +    char *longstrpatternc = malloc(longstrpatternlen+1);
    1.31 +
    1.32 +    memcpy(longstrc,
    1.33 +           "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl"
    1.34 +           "mnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwx"
    1.35 +           "yzabcdeababababnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghij"
    1.36 +           "klmnopqrstuvwxyzaababababababababrstuvwxyzabcdefghijklmnopqrstuv"
    1.37 +           "abababababababababababababababababababababababababababababababab",
    1.38 +           320
    1.39      );
    1.40 -    cxstring longstrresult = CX_STR(
    1.41 -            "abababababababababababababababababababababababababababababababab"
    1.42 -            "abababababababababababababababababababababababababababababababab"
    1.43 -            "abababababababababababababababababababababababababababababababab"
    1.44 -            "abababababababababababababababababababababababababababababababab"
    1.45 -            "abababababababababababababababababababababababababababababababab"
    1.46 -            "abababababababababababababababababababababababababababababababab"
    1.47 -            "wxyz1234567890"
    1.48 +    memcpy(longstrpatternc,
    1.49 +           "abababababababababababababababababababababababababababababababab",
    1.50 +           64
    1.51      );
    1.52 +    char x = 'a', y='b', z;
    1.53 +    for (size_t i = 0; i < cx_strstr_sbo_size ; i++) {
    1.54 +        longstrpatternc[64+i] = x;
    1.55 +        longstrc[320+i] = x;
    1.56 +        z=x; x=y; y=z;
    1.57 +    }
    1.58 +    longstrpatternc[longstrpatternlen] = '\0';
    1.59 +    memcpy(longstrc+longstrlen-14, "wxyz1234567890", 15);
    1.60 +
    1.61 +    cxmutstr longstr = cx_mutstrn(longstrc, longstrlen);
    1.62 +    cxstring longstrpattern = cx_strn(longstrpatternc, longstrpatternlen);
    1.63 +    cxmutstr longstrresult = cx_mutstrn(longstrc+256, longstrlen-256);
    1.64  
    1.65      CX_TEST_DO {
    1.66          cxstring notfound = cx_strstr(str, CX_STR("no match"));
    1.67 @@ -216,17 +219,13 @@
    1.68          CX_TEST_ASSERT(result.length == str.length);
    1.69          CX_TEST_ASSERT(0 == strcmp(result.ptr, str.ptr));
    1.70  
    1.71 -        result = cx_strstr(longstr, longstrpattern);
    1.72 -        CX_TEST_ASSERT(result.length == longstrresult.length);
    1.73 -        CX_TEST_ASSERT(0 == strcmp(result.ptr, longstrresult.ptr));
    1.74 +        cxmutstr resultm = cx_strstr_m(longstr, longstrpattern);
    1.75 +        CX_TEST_ASSERT(resultm.length == longstrresult.length);
    1.76 +        CX_TEST_ASSERT(0 == strcmp(resultm.ptr, longstrresult.ptr));
    1.77 +    }
    1.78  
    1.79 -        // just for coverage, call the _m variant
    1.80 -        cxmutstr mstr = cx_strdup(longstr);
    1.81 -        cxmutstr m = cx_strstr_m(mstr, longstrpattern);
    1.82 -        CX_TEST_ASSERT(m.length == longstrresult.length);
    1.83 -        CX_TEST_ASSERT(0 == strcmp(m.ptr, longstrresult.ptr));
    1.84 -        cx_strfree(&mstr);
    1.85 -    }
    1.86 +    free(longstrc);
    1.87 +    free(longstrpatternc);
    1.88  }
    1.89  
    1.90  CX_TEST(test_strcmp) {

mercurial