91 lines
2.4 KiB
C
91 lines
2.4 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_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,
|
|
};
|