diff options
Diffstat (limited to 'tests/test_mem.c')
| -rw-r--r-- | tests/test_mem.c | 296 |
1 files changed, 0 insertions, 296 deletions
diff --git a/tests/test_mem.c b/tests/test_mem.c deleted file mode 100644 index adbe12d..0000000 --- a/tests/test_mem.c +++ /dev/null @@ -1,296 +0,0 @@ -#include "../libft.h" -#include "test_utils.h" -#include <strings.h> - -static void -_s_ft_memset_null (void) -{ - _s_sink = (size_t)ft_memset (NULL, 'A', 10); -} -static void -_s_libc_memset_null (void) -{ - _s_sink = (size_t)memset (NULL, 'A', 10); -} -static void -_s_ft_bzero_null (void) -{ - ft_bzero (NULL, 10); -} -static void -_s_libc_bzero_null (void) -{ - bzero (NULL, 10); -} -static void -_s_ft_memcpy_null_dst (void) -{ - char buf[10]; - _s_sink = (size_t)ft_memcpy (NULL, buf, 10); -} -static void -_s_libc_memcpy_null_dst (void) -{ - char buf[10]; - _s_sink = (size_t)memcpy (NULL, buf, 10); -} -static void -_s_ft_memcpy_null_src (void) -{ - char buf[10]; - _s_sink = (size_t)ft_memcpy (buf, NULL, 10); -} -static void -_s_libc_memcpy_null_src (void) -{ - char buf[10]; - _s_sink = (size_t)memcpy (buf, NULL, 10); -} -static void -_s_ft_memmove_null_dst (void) -{ - char buf[10]; - _s_sink = (size_t)ft_memmove (NULL, buf, 10); -} -static void -_s_libc_memmove_null_dst (void) -{ - char buf[10]; - _s_sink = (size_t)memmove (NULL, buf, 10); -} -static void -_s_ft_memmove_null_src (void) -{ - char buf[10]; - _s_sink = (size_t)ft_memmove (buf, NULL, 10); -} -static void -_s_libc_memmove_null_src (void) -{ - char buf[10]; - _s_sink = (size_t)memmove (buf, NULL, 10); -} - -/* ====================================== - * memset - * ====================================== */ - -static void -_s_test_memset (void) -{ - char ft_buf[256]; - char libc_buf[256]; - int i; - int c; - size_t len; - void *ret; - char label[64]; - - printf ("-- memset --\n"); - - /* NULL */ - _s_check_both_crash ("memset NULL", _s_ft_memset_null, _s_libc_memset_null); - - /* zero length */ - memset (ft_buf, 'X', 256); - memset (libc_buf, 'X', 256); - ft_memset (ft_buf, 'A', 0); - memset (libc_buf, 'A', 0); - _s_check ("n=0", memcmp (ft_buf, libc_buf, 256) == 0); - - /* return value */ - ret = ft_memset (ft_buf, 'B', 10); - _s_check ("return value", ret == ft_buf); - - /* randomized */ - srand (time (NULL)); - for (i = 0; i < 50; i++) - { - c = rand () % 256; - len = rand () % 256; - ft_memset (ft_buf, c, len); - memset (libc_buf, c, len); - snprintf (label, sizeof (label), "random c=%d len=%zu", c, len); - _s_check (label, memcmp (ft_buf, libc_buf, len) == 0); - } -} - -/* ====================================== - * bzero - * ====================================== */ - -static void -_s_test_bzero (void) -{ - char ft_buf[256]; - char libc_buf[256]; - int i; - size_t len; - char label[64]; - - printf ("-- bzero --\n"); - - /* NULL */ - _s_check_both_crash ("bzero NULL", _s_ft_bzero_null, _s_libc_bzero_null); - - /* zero length */ - memset (ft_buf, 'X', 256); - memset (libc_buf, 'X', 256); - ft_bzero (ft_buf, 0); - bzero (libc_buf, 0); - _s_check ("n=0", memcmp (ft_buf, libc_buf, 256) == 0); - - /* full clear */ - memset (ft_buf, 'X', 256); - memset (libc_buf, 'X', 256); - ft_bzero (ft_buf, 256); - bzero (libc_buf, 256); - _s_check ("n=256", memcmp (ft_buf, libc_buf, 256) == 0); - - /* randomized */ - for (i = 0; i < 50; i++) - { - len = rand () % 256; - memset (ft_buf, 'Z', 256); - memset (libc_buf, 'Z', 256); - ft_bzero (ft_buf, len); - bzero (libc_buf, len); - snprintf (label, sizeof (label), "random len=%zu", len); - _s_check (label, memcmp (ft_buf, libc_buf, 256) == 0); - } -} - -/* ====================================== - * memcpy - * ====================================== */ - -static void -_s_test_memcpy (void) -{ - char src[256]; - char ft_dst[256]; - char libc_dst[256]; - int i; - size_t len; - void *ret; - char label[64]; - - printf ("-- memcpy --\n"); - - /* NULL */ - _s_check_both_crash ("memcpy NULL dst", _s_ft_memcpy_null_dst, - _s_libc_memcpy_null_dst); - _s_check_both_crash ("memcpy NULL src", _s_ft_memcpy_null_src, - _s_libc_memcpy_null_src); - - /* fill source with pattern */ - for (i = 0; i < 256; i++) - src[i] = i; - - /* zero length */ - memset (ft_dst, 'X', 256); - memset (libc_dst, 'X', 256); - ft_memcpy (ft_dst, src, 0); - memcpy (libc_dst, src, 0); - _s_check ("n=0", memcmp (ft_dst, libc_dst, 256) == 0); - - /* return value */ - ret = ft_memcpy (ft_dst, src, 10); - _s_check ("return value", ret == ft_dst); - - /* NULL src and dst with n=0 */ - ret = ft_memcpy (NULL, NULL, 0); - _s_check ("NULL,NULL,0", ret == NULL); - - /* randomized */ - for (i = 0; i < 50; i++) - { - len = rand () % 256; - memset (ft_dst, 0, 256); - memset (libc_dst, 0, 256); - ft_memcpy (ft_dst, src, len); - memcpy (libc_dst, src, len); - snprintf (label, sizeof (label), "random len=%zu", len); - _s_check (label, memcmp (ft_dst, libc_dst, 256) == 0); - } -} - -/* ====================================== - * memmove - * ====================================== */ - -static void -_s_test_memmove (void) -{ - char ft_buf[256]; - char libc_buf[256]; - int i; - size_t len; - size_t offset; - void *ret; - char label[64]; - - printf ("-- memmove --\n"); - - /* NULL */ - _s_check_both_crash ("memmove NULL dst", _s_ft_memmove_null_dst, - _s_libc_memmove_null_dst); - _s_check_both_crash ("memmove NULL src", _s_ft_memmove_null_src, - _s_libc_memmove_null_src); - - /* return value */ - memset (ft_buf, 'A', 256); - ret = ft_memmove (ft_buf, ft_buf + 10, 10); - _s_check ("return value", ret == ft_buf); - - /* NULL src and dst with n=0 */ - ret = ft_memmove (NULL, NULL, 0); - _s_check ("NULL,NULL,0", ret == NULL); - - /* forward overlap: src before dest */ - for (i = 0; i < 256; i++) - ft_buf[i] = libc_buf[i] = i; - ft_memmove (ft_buf + 10, ft_buf, 100); - memmove (libc_buf + 10, libc_buf, 100); - _s_check ("forward overlap", memcmp (ft_buf, libc_buf, 256) == 0); - - /* backward overlap: dest before src */ - for (i = 0; i < 256; i++) - ft_buf[i] = libc_buf[i] = i; - ft_memmove (ft_buf, ft_buf + 10, 100); - memmove (libc_buf, libc_buf + 10, 100); - _s_check ("backward overlap", memcmp (ft_buf, libc_buf, 256) == 0); - - /* non-overlapping */ - for (i = 0; i < 256; i++) - ft_buf[i] = libc_buf[i] = i; - ft_memmove (ft_buf + 128, ft_buf, 50); - memmove (libc_buf + 128, libc_buf, 50); - _s_check ("non-overlapping", memcmp (ft_buf, libc_buf, 256) == 0); - - /* randomized overlapping copies */ - for (i = 0; i < 50; i++) - { - for (int j = 0; j < 256; j++) - ft_buf[j] = libc_buf[j] = rand () % 256; - len = rand () % 128 + 1; - offset = rand () % 128; - ft_memmove (ft_buf + offset, ft_buf, len); - memmove (libc_buf + offset, libc_buf, len); - snprintf (label, sizeof (label), "random overlap len=%zu off=%zu", len, - offset); - _s_check (label, memcmp (ft_buf, libc_buf, 256) == 0); - } -} - -int -main (void) -{ - printf ("=== mem functions ===\n"); - _s_test_memset (); - _s_test_bzero (); - _s_test_memcpy (); - _s_test_memmove (); - _s_print_results (); - return (_s_fail != 0); -} |
