diff options
Diffstat (limited to 'string/test-strstr.c')
-rw-r--r-- | string/test-strstr.c | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/string/test-strstr.c b/string/test-strstr.c index 6be4601..e7d8e73 100644 --- a/string/test-strstr.c +++ b/string/test-strstr.c @@ -55,8 +55,9 @@ IMPL (simple_strstr, 0) IMPL (strstr, 1) -static void -do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) +static int +check_result (impl_t *impl, const char *s1, const char *s2, + char *exp_result) { char *result = CALL (impl, s1, s2); if (result != exp_result) @@ -64,9 +65,18 @@ do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) error (0, 0, "Wrong result in function %s %s %s", impl->name, result, exp_result); ret = 1; - return; + return -1; } + return 0; +} + +static void +do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) +{ + if (check_result (impl, s1, s2, exp_result) < 0) + return; + if (HP_TIMING_AVAIL) { hp_timing_t start __attribute ((unused)); @@ -133,12 +143,26 @@ do_test (size_t align1, size_t align2, size_t len1, size_t len2, putchar ('\n'); } +static void +check1 (void) +{ + const char s1[] = + "F_BD_CE_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_C3_88_20_EF_BF_BD_EF_BF_BD_EF_BF_BD_C3_A7_20_EF_BF_BD"; + const char s2[] = "_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD"; + char *exp_result; + + exp_result = stupid_strstr (s1, s2); + FOR_EACH_IMPL (impl, 0) + check_result (impl, s1, s2, exp_result); +} static int test_main (void) { test_init (); + check1 (); + printf ("%23s", ""); FOR_EACH_IMPL (impl, 0) printf ("\t%s", impl->name); |