xref: /relibc/tests/string/mem.c (revision ed19381547d66b76981ea1e4ff942c5a4da45ab7)
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 
5 #include "test_helpers.h"
6 
7 int main(void) {
8     puts("# mem #");
9     char arr[100];
10     memset(arr, 0, 100); // Compiler builtin, should work
11     arr[50] = 1;
12     if ((size_t)memchr((void *)arr, 1, 100) - (size_t)arr != 50) {
13         puts("Incorrect memchr");
14         exit(EXIT_FAILURE);
15     }
16     puts("Correct memchr");
17     if ((size_t)memrchr((void *)arr, 1, 100) - (size_t)arr != 50) {
18         puts("Incorrect memrchr");
19         exit(EXIT_FAILURE);
20     }
21     puts("Correct memrchr");
22     char arr2[51];
23     memset(arr2, 0, 51); // Compiler builtin, should work
24     memccpy((void *)arr2, (void *)arr, 1, 100);
25     if (arr[50] != 1) {
26         puts("Incorrect memccpy");
27         exit(EXIT_FAILURE);
28     }
29     puts("Correct memccpy");
30     int res;
31     if ((res = memcmp("hello world", "hello world", 11))) {
32         printf("Incorrect memcmp (1), expected 0 found %d\n", res);
33         exit(EXIT_FAILURE);
34     }
35     if ((res = memcmp("hello world", "hello worlt", 11)) >= 0) {
36         printf("Incorrect memcmp (2), expected -, found %d\n", res);
37         exit(EXIT_FAILURE);
38     }
39     if ((res = memcmp("hello world", "hallo world", 5)) <= 0) {
40         printf("Incorrect memcmp (3), expected +, found %d\n", res);
41         exit(EXIT_FAILURE);
42     }
43     if ((res = memcmp("hello world", "henlo world", 5)) >= 0) {
44         printf("Incorrect memcmp (4), expected -, found %d\n", res);
45         exit(EXIT_FAILURE);
46     }
47     puts("Correct memcmp");
48 }
49