aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_alloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_alloc.c')
-rw-r--r--tests/test_alloc.c159
1 files changed, 0 insertions, 159 deletions
diff --git a/tests/test_alloc.c b/tests/test_alloc.c
deleted file mode 100644
index 191fbbb..0000000
--- a/tests/test_alloc.c
+++ /dev/null
@@ -1,159 +0,0 @@
-#include "../libft.h"
-#include "test_utils.h"
-
-static void
-_s_ft_strdup_null (void)
-{
- _s_sink = (size_t)ft_strdup (NULL);
-}
-static void
-_s_libc_strdup_null (void)
-{
- _s_sink = (size_t)strdup (NULL);
-}
-
-/* ======================================
- * calloc
- * ====================================== */
-
-static void
-_s_test_calloc (void)
-{
- int i;
- char label[64];
-
- printf ("-- calloc --\n");
-
- /* zeroed memory */
- {
- char *ft_p = ft_calloc (100, 1);
- char *libc_p = calloc (100, 1);
- _s_check ("zeroed", ft_p && libc_p && memcmp (ft_p, libc_p, 100) == 0);
- free (ft_p);
- free (libc_p);
- }
-
- /* nmemb=0 */
- {
- void *p = ft_calloc (0, 10);
- _s_check ("nmemb=0 not NULL", p != NULL);
- free (p);
- }
-
- /* size=0 */
- {
- void *p = ft_calloc (10, 0);
- _s_check ("size=0 not NULL", p != NULL);
- free (p);
- }
-
- /* overflow protection */
- {
- void *p = ft_calloc ((size_t)-1, 2);
- _s_check ("overflow returns NULL", p == NULL);
- }
-
- /* single byte */
- {
- unsigned char *p = ft_calloc (1, 1);
- _s_check ("single byte zeroed", p && *p == 0);
- free (p);
- }
-
- /* randomized: check all bytes are zero */
- srand (time (NULL));
- for (i = 0; i < 50; i++)
- {
- size_t nmemb = rand () % 500 + 1;
- size_t size = rand () % 50 + 1;
- unsigned char *ft_p = ft_calloc (nmemb, size);
- unsigned char *libc_p = calloc (nmemb, size);
- int ok = 1;
- size_t j;
- if (!ft_p || !libc_p)
- {
- ok = 0;
- }
- else
- {
- for (j = 0; j < nmemb * size; j++)
- {
- if (ft_p[j] != 0)
- {
- ok = 0;
- break;
- }
- }
- }
- snprintf (label, sizeof (label), "random nmemb=%zu size=%zu", nmemb,
- size);
- _s_check (label, ok);
- free (ft_p);
- free (libc_p);
- }
-}
-
-/* ======================================
- * strdup
- * ====================================== */
-
-static void
-_s_test_strdup (void)
-{
- int i;
- char label[64];
-
- printf ("-- strdup --\n");
-
- /* NULL */
- _s_check_both_crash ("strdup NULL", _s_ft_strdup_null, _s_libc_strdup_null);
-
- /* empty string */
- {
- char *p = ft_strdup ("");
- _s_check ("empty", p && strcmp (p, "") == 0);
- free (p);
- }
-
- /* returns independent copy */
- {
- char src[] = "hello";
- char *p = ft_strdup (src);
- _s_check ("independent copy", p && p != src && strcmp (p, src) == 0);
- src[0] = 'X';
- _s_check ("mutation safe", p[0] == 'h');
- free (p);
- }
-
- /* randomized */
- for (i = 0; i < 50; i++)
- {
- int len = rand () % 500 + 1;
- char *src = malloc (len + 1);
- int j;
- char *ft_p;
- char *libc_p;
- if (!src)
- continue;
- for (j = 0; j < len; j++)
- src[j] = 'A' + rand () % 26;
- src[len] = '\0';
- ft_p = ft_strdup (src);
- libc_p = strdup (src);
- snprintf (label, sizeof (label), "random len=%d", len);
- _s_check (label, ft_p && libc_p && strcmp (ft_p, libc_p) == 0);
- free (src);
- free (ft_p);
- free (libc_p);
- }
-}
-
-int
-main (void)
-{
- printf ("=== alloc functions ===\n");
- _s_test_calloc ();
- _s_test_strdup ();
- _s_print_results ();
- return (_s_fail != 0);
-}