aboutsummaryrefslogtreecommitdiff
path: root/libasm_test.h
diff options
context:
space:
mode:
Diffstat (limited to 'libasm_test.h')
-rw-r--r--libasm_test.h56
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