From 0696a5c7f9abe5451a0baf3170296704714fcce8 Mon Sep 17 00:00:00 2001 From: Charles Date: Sat, 23 Nov 2019 20:31:58 +0100 Subject: Basic segfault and comparison test for ft_strlen.s --- libasm_test.h | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) (limited to 'libasm_test.h') 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 +# include +# include +# include +# include +# include # include /* @@ -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 -- cgit