-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.c
More file actions
179 lines (144 loc) · 7.27 KB
/
Copy pathtest.c
File metadata and controls
179 lines (144 loc) · 7.27 KB
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
#include <stdio.h>
#include <limits.h>
#include <stdint.h>
#include <string.h>
int ft_printf(const char *format, ...); // Assurez-vous que cette déclaration correspond à votre ft_printf
int main() {
int original_ret, ft_ret;
printf("-- Test --\n");
original_ret = printf("%s", "");
ft_ret = ft_printf("%s", "");
printf("\nOriginal printf returned: %d\n", original_ret);
printf("ft_printf returned: %d\n\n", ft_ret);
printf("-- Test: Chaîne de format nulle --\n");
original_ret = printf(NULL);
ft_ret = ft_printf(NULL);
printf("\nOriginal printf returned: %d\n", original_ret);
printf("ft_printf returned: %d\n\n", ft_ret);
printf("-- Test: Arguments manquants --\n");
original_ret = printf("%d");
printf("\n");
ft_ret = ft_printf("%d");
printf("\nOriginal printf returned: %d\n", original_ret);
printf("ft_printf returned: %d\n\n", ft_ret);
printf("-- Test: Longue chaîne --\n");
char long_string[1000];
memset(long_string, 'a', sizeof(long_string) - 1);
long_string[sizeof(long_string) - 1] = '\0';
original_ret = printf("%s", long_string);
ft_ret = ft_printf("%s", long_string);
printf("\nOriginal printf returned: %d\n", original_ret);
printf("ft_printf returned: %d\n\n", ft_ret);
printf("-- Test: Passer un mauvais type --\n");
original_ret = printf("%d", "string");
ft_ret = ft_printf("%d", "string");
printf("\nOriginal printf returned: %d\n", original_ret);
printf("ft_printf returned: %d\n\n", ft_ret);
// Test: Impression de pointeurs non initialisés
void *uninitialized_ptr;
original_ret = printf("%p\n", uninitialized_ptr);
ft_ret = ft_printf("%p\n", uninitialized_ptr);
printf("\nOriginal printf returned: %d | ft_printf returned: %d\n", original_ret, ft_ret);
// Test: Utilisation de spécificateurs de format incomplets
original_ret = printf("Incomplete specifier: % \n");
ft_ret = ft_printf("Incomplete specifier: % \n");
printf("\nOriginal printf returned: %d | ft_printf returned: %d\n", original_ret, ft_ret);
// Test: Utiliser des pointeurs de fonction avec `%p`
original_ret = printf("%p\n", main);
ft_ret = ft_printf("%p\n", main);
printf("\nOriginal printf returned: %d | ft_printf returned: %d\n", original_ret, ft_ret);
// Test: Impression de la représentation en mémoire d'une variable
int a = 42;
original_ret = printf("%p\n", &a);
ft_ret = ft_printf("%p\n", &a);
printf("\nOriginal printf returned: %d | ft_printf returned: %d\n", original_ret, ft_ret);
// Test: Caractères non-ASCII avec `%c` et `%s`
original_ret = printf("%c\n", 0x80);
ft_ret = ft_printf("%c\n", 0x80);
printf("\nOriginal printf returned: %d | ft_printf returned: %d\n", original_ret, ft_ret);
original_ret = printf("%s\n", "\xc3\xb1");
ft_ret = ft_printf("%s\n", "\xc3\xb1");
printf("\nOriginal printf returned: %d | ft_printf returned: %d\n", original_ret, ft_ret);
original_ret = printf("%|bc%");
ft_ret = ft_printf("%|bc%");
printf("\nOriginal printf returned: %d | ft_printf returned: %d\n", original_ret, ft_ret);
original_ret = printf("%|bc%\n");
ft_ret = ft_printf("%|bc%\n");
printf("\nOriginal printf returned: %d | ft_printf returned: %d\n", original_ret, ft_ret);
ft_ret = ft_printf("\n|bc%");
original_ret = printf("\n|bc%");
printf("\nOriginal printf returned: %d | ft_printf returned: %d\n", original_ret, ft_ret);
ft_ret = ft_printf("\n%m%m\n");
original_ret = printf("\n%m\n");
printf("Original printf returned: %d | ft_printf returned: %d\n", original_ret, ft_ret);
ft_ret = ft_printf("\n%5%\n");
original_ret = printf("\n%5%\n");
printf("Original printf returned: %d | ft_printf returned: %d\n", original_ret, ft_ret);
ft_ret = ft_printf(NULL);
original_ret = printf("\n%kjg%%HGF%%5d%");
printf("Original printf returned: %d | ft_printf returned: %d\n", original_ret, ft_ret);
printf("-- Test: Valeurs max et min pour les entiers --\n");
original_ret = printf("%d %d\n", INT_MAX, INT_MIN);
ft_ret = ft_printf("%d %d\n", INT_MAX, INT_MIN);
printf("\nOriginal printf returned: %d\n", original_ret);
printf("ft_printf returned: %d\n\n", ft_ret);
printf("-- Test: Valeurs max et min pour les unsigned int --\n");
original_ret = printf("%u %u\n", UINT_MAX, 0);
ft_ret = ft_printf("%u %u\n", UINT_MAX, 0);
printf("\nOriginal printf returned: %d\n", original_ret);
printf("ft_printf returned: %d\n\n", ft_ret);
printf("-- Test: Valeurs max et min pour les pointeurs --\n");
int* max_ptr = (int*) UINTPTR_MAX; // Utiliser avec précaution, pas portable et peut être dangereux
int* min_ptr = (int*) 0;
original_ret = printf("%p %p\n", max_ptr, min_ptr);
ft_ret = ft_printf("%p %p\n", max_ptr, min_ptr);
printf("\nOriginal printf returned: %d\n", original_ret);
printf("ft_printf returned: %d\n\n", ft_ret);
printf("-- Test: Spécificateurs de format incorrects --\n");
original_ret = printf("%y %z\n");
ft_ret = ft_printf("%y %z\n");
printf("\nOriginal printf returned: %d\n", original_ret);
printf("ft_printf returned: %d\n\n", ft_ret);
printf("-- Test: Conversion avec les spécificateurs de format multiples --\n");
original_ret = printf("%d %s %x %X %u %c %%\n", 42, "test", 42, 42, 42, 'A');
ft_ret = ft_printf("%d %s %x %X %u %c %%\n", 42, "test", 42, 42, 42, 'A');
printf("\nOriginal printf returned: %d\n", original_ret);
printf("ft_printf returned: %d\n\nw", ft_ret);
printf("-- Test: Chaînes de format bizarres --\n");
original_ret = printf("%s %d %10s\n", "test", 42, "aligned");
ft_ret = ft_printf("%s %d %10s\n", "test", 42, "aligned");
printf("\nOriginal printf returned: %d\n", original_ret);
printf("ft_printf returned: %d\n\n", ft_ret);
printf("-- Test: Utilisation incorrecte de pourcentage --\n");
original_ret = printf("%%d\n");
ft_ret = ft_printf("%%d\n");
printf("\nOriginal printf returned: %d\n", original_ret);
printf("ft_printf returned: %d\n\n", ft_ret);
printf("-- Test: Spécificateurs de format mélangés avec du texte --\n");
original_ret = printf("Ceci est un test: %d %s\n", 123, "fin");
ft_ret = ft_printf("Ceci est un test: %d %s\n", 123, "fin");
printf("\nOriginal printf returned: %d\n", original_ret);
printf("ft_printf returned: %d\n\n", ft_ret);
printf("-- Test: Valeurs limites --\n");
original_ret = printf("%d %d %u %x %X\n", INT_MAX, INT_MIN, UINT_MAX, INT_MAX, INT_MAX);
ft_ret = ft_printf("%d %d %u %x %X\n", INT_MAX, INT_MIN, UINT_MAX, INT_MAX, INT_MAX);
printf("Original printf returned: %d | ft_printf returned: %d\n", original_ret, ft_ret);
printf("-- Test: Chaîne de format incorrecte --\n");
original_ret = printf("%y\n");
ft_ret = ft_printf("%y\n");
printf("Original printf returned: %d | ft_printf returned: %d\n", original_ret, ft_ret);
printf("-- Test: Types incorrects pour les spécificateurs --\n");
original_ret = printf("%d\n", "test");
ft_ret = ft_printf("%d\n", "test");
printf("Original printf returned: %d | ft_printf returned: %d\n", original_ret, ft_ret);
printf("-- Test: Spécificateurs de format incomplets --\n");
original_ret = printf("%\n");
ft_ret = ft_printf("%\n");
printf("Original printf returned: %d | ft_printf returned: %d\n", original_ret, ft_ret);
printf("-- Test: Impression de l'adresse de la fonction main --\n");
original_ret = printf("%p\n", main);
ft_ret = ft_printf("%p\n", main);
printf("Original printf returned: %d | ft_printf returned: %d\n\n", original_ret, ft_ret);
// Continuez à ajouter plus de tests en suivant les principes ci-dessus...
return 0;
}