1 #include "string/string.h"
4 #include "string/string.c"
8 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
10 static char *substrings[] = { "far", "bar", "baz", "b", "ba", "z", "ar", NULL };
12 #define NUM_SUBSTRINGS (ARRAY_SIZE(substrings) - 1)
14 static char *strdup_rev(const char *s)
16 char *ret = strdup(s);
19 for (i = 0; i < strlen(s); i++)
20 ret[i] = s[strlen(s) - i - 1];
24 int main(int argc, char *argv[])
29 char *strings[NUM_SUBSTRINGS * NUM_SUBSTRINGS];
32 for (i = 0; i < NUM_SUBSTRINGS; i++) {
33 for (j = 0; j < NUM_SUBSTRINGS; j++) {
34 strings[n] = malloc(strlen(substrings[i])
35 + strlen(substrings[j]) + 1);
36 sprintf(strings[n++], "%s%s",
37 substrings[i], substrings[j]);
41 plan_tests(n * n * 5);
42 for (i = 0; i < n; i++) {
43 for (j = 0; j < n; j++) {
44 unsigned int k, identical = 0;
47 /* Find first difference. */
48 for (k = 0; strings[i][k]==strings[j][k]; k++) {
49 if (k == strlen(strings[i])) {
56 ok1(streq(strings[i], strings[j]));
58 ok1(!streq(strings[i], strings[j]));
60 /* Postfix test should be equivalent to prefix
61 * test on reversed string. */
62 reva = strdup_rev(strings[i]);
63 revb = strdup_rev(strings[j]);
66 ok1(strstarts(strings[j], strings[i]));
67 ok1(strends(revb, reva));
69 ok1(!strstarts(strings[j], strings[i]));
70 ok1(!strends(revb, reva));
73 ok1(strstarts(strings[i], strings[j]));
74 ok1(strends(reva, revb));
76 ok1(!strstarts(strings[i], strings[j]));
77 ok1(!strends(reva, revb));