aboutsummaryrefslogtreecommitdiff
path: root/test/ft_strdup_test.c
blob: a53e58f4c039f4b0baedd18d4de2b0db27b039c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   ft_strdup_test.c                                   :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: cacharle <marvin@42.fr>                    +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2020/02/08 03:08:06 by cacharle          #+#    #+#             */
/*   Updated: 2020/04/13 14:45:00 by charles          ###   ########.fr       */
/*                                                                            */
/* ************************************************************************** */

#include "libasm_test.h"

static char *tmp;

#define FT_STRDUP_EXPECT(str) do {            \
	tmp = ft_strdup(str);                     \
	if (tmp == NULL || strcmp(str, tmp) != 0) \
		printf("KO: [COMPARE]: %s: expected: \"%s\" got: \"%s\"\n", test_name, str, tmp); \
	else                                      \
		print_ok();                           \
	free(tmp);                                \
} while (0);

static
void ft_strdup_test_segfault(void)
{
	char *tmp2 = NULL;
	char a;

	TEST_ASM_FUNCTION(ft_strdup(""));
	TEST_ASM_FUNCTION(ft_strdup("abc"));
	TEST_ASM_FUNCTION(ft_strdup("asl;fjl;asdjfjkasdl;fjadjsf"));
	TEST_ASM_FUNCTION(ft_strdup("yope\0la"));
	TEST_ASM_FUNCTION(ft_strdup("Lorem ipsum dolor sit amet, consectetur adipiscing\
elit. Sed in malesuada purus. Etiam a scelerisque massa. Ut non euismod elit. Aliquam\
bibendum dolor mi, id fringilla tellus pulvinar eu. Fusce vel fermentum sem. Cras\
volutpat, eros eget rhoncus rhoncus, diam augue egestas dolor, vitae rutrum nisi\
felis sed purus. Mauris magna ex, mollis non suscipit eu, lacinia ac turpis. Phasellus\
ac tortor et lectus fermentum lobortis eu at mauris. Vestibulum sit amet posuere\
tortor, sit amet consequat amet."));

	tmp2 = ft_strdup("");
	TEST_ASM_FUNCTION(a = *tmp2);
	tmp2 = ft_strdup("abc");
	TEST_ASM_FUNCTION(a = *tmp2);
	tmp2 = ft_strdup("asl;fjl;asd");
	TEST_ASM_FUNCTION(a = *tmp2);
	tmp2 = ft_strdup("yope\0la");
	TEST_ASM_FUNCTION(a = *tmp2);
}

static
void ft_strdup_test_compare(void)
{
	FT_STRDUP_EXPECT("");
	FT_STRDUP_EXPECT("abc");
	FT_STRDUP_EXPECT("asl;fjl;asdjfjkasdl;fjadjsf");
	FT_STRDUP_EXPECT("yope\0la");
	FT_STRDUP_EXPECT("Lorem ipsum dolor sit amet, consectetur adipiscing\
elit. Sed in malesuada purus. Etiam a scelerisque massa. Ut non euismod elit. Aliquam\
bibendum dolor mi, id fringilla tellus pulvinar eu. Fusce vel fermentum sem. Cras\
volutpat, eros eget rhoncus rhoncus, diam augue egestas dolor, vitae rutrum nisi\
felis sed purus. Mauris magna ex, mollis non suscipit eu, lacinia ac turpis. Phasellus\
ac tortor et lectus fermentum lobortis eu at mauris. Vestibulum sit amet posuere\
tortor, sit amet consequat amet.");
	FT_STRDUP_EXPECT("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0b\x0c\x0d\x0e\x0f");
	FT_STRDUP_EXPECT("\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0b\x0c\x0d\x0e\x0f");
}

void ft_strdup_test(void)
{
	test_name = "ft_strdup.s";

	ft_strdup_test_segfault();
	if (!signaled)
		ft_strdup_test_compare();
}