#include #include #include #include #include static void _ft_string_naive(ft_test *t) { char const *s1; char s2[64]; char *s3; s1 = "xyztuvxyztuv"; ft_assert(t, strchr(s1, 'z') == s1 + 2); ft_assert(t, strchr(s1, 'w') == NULL); ft_assert(t, strrchr(s1, 'u') == s1 + 10); ft_assert(t, strrchr(s1, 'x') == s1 + 6); ft_assert(t, strrchr(s1, 'w') == NULL); ft_assert(t, strchrnul(s1, 't') == s1 + 3); ft_assert(t, strchrnul(s1, 'w') == s1 + 12); ft_assert(t, strcmp("xyz", "xyz") == 0); ft_assert(t, strcmp("xyz\0t", "xyz\0v") == 0); ft_assert(t, strcmp("xyz", "xyt") == 6); ft_assert(t, strcmp("xyt", "xyz") == -6); ft_assert(t, strcmp("ab", "abc") == -'c'); ft_assert(t, strcmp("", "") == 0); ft_assert(t, strcmp("x", "") == 'x'); ft_assert(t, strncmp("xyz", "xyt", 2) == 0); ft_assert(t, strncmp("xyz\0t", "xyz\0v", 5) == 0); strcpy(s2, s1); ft_assert(t, strcmp(s1, s2) == 0); memset(s2, 0x55, sizeof s2); strncpy(s2, s1, 10); ft_assert(t, strcmp(s1, s2) != 0 && strncmp(s1, s2, 10) == 0); strncpy(s2, s1, 15); ft_assert(t, memcmp(s2, "xyztuvxyztuv\0\0\0", 15) == 0); strncpy(s2, s1, 5); s2[5] = 0; strcat(s2, s1 + 5); ft_assert(t, strcmp(s1, s2) == 0); memset(s2, 0x55, sizeof s2); strncpy(s2, s1, 4); s2[4] = 0; strncat(s2, s1 + 4, 4); ft_assert(t, strcmp(s1, s2) != 0 && strncmp(s1, s2, 8) == 0); ft_assert(t, strcmp(s2, "xyztuvxy") == 0); s3 = strdup(s1); ft_assert(t, strcmp(s1, s3) == 0); free(s3); s3 = strndup(s1, 5); ft_assert(t, strcmp(s3, "xyztu") == 0); free(s3); ft_assert(t, strspn("abcbdbabed", "abcd") == 8); ft_assert(t, strspn("abcbdbabed", "abcde") == 10); ft_assert(t, strcspn("10234.283", "x.") == 5); ft_assert(t, strcspn("10234.283", "x") == 9); ft_assert(t, strpbrk(s1, "rstuv") == s1 + 3); ft_assert(t, strpbrk(s1, "abc") == NULL); ft_assert(t, strpbrk(s1, s1) == s1); } ft_test ft_string_naive = { .name = "Naive string functions", .function = _ft_string_naive, }; static void _ft_string_strerror(ft_test *t) { ft_log(t, "0: %s\n", strerror(0)); ft_log(t, "EDOM: %s\n", strerror(EDOM)); ft_log(t, "EILSEQ: %s\n", strerror(EILSEQ)); ft_log(t, "ERANGE: %s\n", strerror(ERANGE)); ft_log(t, "-1: %s\n", strerror(-1)); ft_log(t, "999999: %s\n", strerror(999999)); } ft_test ft_string_strerror = { .name = "strerror messages", .function = _ft_string_strerror, };