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) {