diff options
Diffstat (limited to 'libasm_test.h')
| -rw-r--r-- | libasm_test.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/libasm_test.h b/libasm_test.h index 37577e5..c340903 100644 --- a/libasm_test.h +++ b/libasm_test.h @@ -1,6 +1,12 @@ #ifndef LIBASM_TEST_H # define LIBASM_TEST_H +# include <unistd.h> +# include <stdbool.h> +# include <stdlib.h> +# include <stdio.h> +# include <string.h> +# include <sys/wait.h> # include <stddef.h> /* @@ -55,4 +61,54 @@ void ft_strdup_test(void); +void +print_ok(void); +void +print_signaled_ko(void); +void +expect_int(int expected, int actual); + +int pid; +bool signaled; + +# define TEST_SEGFAULT(x) do { \ + if ((pid = fork()) < 0) \ + exit(EXIT_FAILURE); \ + if (pid == 0) { \ + do { x; } while(0); \ + exit(EXIT_SUCCESS); \ + } else { \ + wait(&pid); \ + signaled = WIFSIGNALED(pid); \ + } \ +} while(0); + + +// void *saved_sp; +// bool stack_alignment_error; +// +// # define TEST_STACK_ALIGNMENT(x) do { \ +// stack_alignment_error = false; \ +// saved_sp = asm ("sp"); \ +// do { x } while(0); \ +// stack_alignment_error = saved_sp != asm("sp")); \ +// } while (0); + +char *test_name; + +# define TEST_ASM_FUNCTION(x) do { \ + TEST_SEGFAULT(x); \ + if (signaled) \ + print_signaled_ko(); \ + else \ + print_ok(); \ +} while(0); + +// # define EXPECT(expected, actual) do { \ +// if (actual == expected) \ +// print_ok(); \ +// else \ +// printf("KO: [COMPARE]: expected: \""#expected"\" got: \""#actual"\"\n", test_name); \ +// while (0); + #endif |
