122 lines
3.6 KiB
C
122 lines
3.6 KiB
C
#include <ft/test.h>
|
|
#include <ft/all-tests.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <errno.h>
|
|
|
|
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_assert(t, strnlen("9738634", 4) == 4);
|
|
ft_assert(t, strnlen("347383", 21) == 6);
|
|
|
|
ft_assert(t, strcmp("abCd93E", "aBcd93e") != 0);
|
|
ft_assert(t, strcasecmp("abCd93E", "aBcd93e") == 0);
|
|
ft_assert(t, strncasecmp("abCd93E", "aBcdX", 4) == 0);
|
|
ft_assert(t, strncasecmp("abCd93E", "aBcd93e", 10) == 0);
|
|
|
|
s1 = "abc abcdab abcdabcdabde";
|
|
ft_assert(t, strstr(s1, "abcdabd") == s1 + 15);
|
|
ft_assert(t, strstr(s1, "bcdab") == s1 + 5);
|
|
ft_assert(t, strstr(s1, "Hello, World!") == NULL);
|
|
ft_assert(t, strstr(s1, "abde") == s1 + 19);
|
|
ft_assert(t, strstr(s1, "abdef") == NULL);
|
|
ft_assert(t, strstr(s1, "abc") == s1);
|
|
s1 = "acabcababacababcabac";
|
|
ft_assert(t, strstr(s1, "abacababc") == s1 + 7);
|
|
|
|
s1 = "abc aBcdAb abCdabcdAbde";
|
|
ft_assert(t, strstr(s1, "abcd") == s1 + 15);
|
|
ft_assert(t, strcasestr(s1, "abcd") == s1 + 4);
|
|
ft_assert(t, strstr(s1, "abcdabc") == NULL);
|
|
ft_assert(t, strcasestr(s1, "ABCdaBd") == s1 + 15);
|
|
|
|
char input[] = ",;,section 1;section 2,,section 3,,";
|
|
ft_assert(t, strcmp(strtok(input, ";,"), "section 1") == 0);
|
|
ft_assert(t, strcmp(strtok(NULL, ";,"), "section 2") == 0);
|
|
ft_assert(t, strcmp(strtok(NULL, ";,"), "section 3") == 0);
|
|
ft_assert(t, strtok(NULL, ";,") == NULL);
|
|
ft_assert(t, strtok(NULL, ";,") == NULL);
|
|
}
|
|
|
|
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,
|
|
};
|