diff options
Diffstat (limited to 'test/hook.test.c')
-rw-r--r-- | test/hook.test.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/test/hook.test.c b/test/hook.test.c index 831fbf6..50e07a8 100644 --- a/test/hook.test.c +++ b/test/hook.test.c @@ -25,6 +25,12 @@ static int (*orig_some_function)(int, int); static int some_hook(int a, int b) { return orig_some_function(a, b) + 5; } +__attribute__((noinline)) +static int other_function(int a, int b) { return a - b; } +static int (*orig_other_function)(int, int); +static int other_hook(int a, int b) { + return orig_other_function(a, b) + 5; +} TEST("Inline hooks should be able to wrap the original function", 0) { orig_some_function = hook_inline(&some_function, &some_hook); @@ -39,6 +45,16 @@ TEST("Inline hooks should be removable again", 0) { return some_function(5, 5) == 10; } +TEST("Multiple functions should be able to be inline hooked at once", 0) { + orig_some_function = hook_inline(&some_function, &some_hook); + if (!orig_some_function) return false; + + orig_other_function = hook_inline(&other_function, &other_hook); + if (!orig_other_function) return false; + + return other_function(5, 5) == 5; +} + #endif // vi: sw=4 ts=4 noet tw=80 cc=80 |