1// Copyright 2016 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include <string.h>
6
7#include <zircon/syscalls.h>
8#include <unittest/unittest.h>
9
10static bool wrapper_test(void) {
11    BEGIN_TEST;
12    ASSERT_EQ(zx_syscall_test_wrapper(1, 2, 3), 6, "syscall_test_wrapper doesn't add up");
13    ASSERT_EQ(zx_syscall_test_wrapper(-1, 2, 3), ZX_ERR_INVALID_ARGS, "vdso should have checked args");
14    ASSERT_EQ(zx_syscall_test_wrapper(10, 20, 30), ZX_ERR_OUT_OF_RANGE, "vdso should have checked the return");
15    END_TEST;
16}
17
18static bool syscall_test(void) {
19    BEGIN_TEST;
20    ASSERT_EQ(zx_syscall_test_8(1, 2, 3, 4, 5, 6, 7, 8), 36, "syscall8_test doesn't add up");
21    ASSERT_EQ(zx_syscall_test_7(1, 2, 3, 4, 5, 6, 7), 28, "syscall7_test doesn't add up");
22    ASSERT_EQ(zx_syscall_test_6(1, 2, 3, 4, 5, 6), 21, "syscall6_test doesn't add up");
23    ASSERT_EQ(zx_syscall_test_5(1, 2, 3, 4, 5), 15, "syscall5_test doesn't add up");
24    ASSERT_EQ(zx_syscall_test_4(1, 2, 3, 4), 10, "syscall4_test doesn't add up");
25    ASSERT_EQ(zx_syscall_test_3(1, 2, 3), 6, "syscall3_test doesn't add up");
26    ASSERT_EQ(zx_syscall_test_2(1, 2), 3, "syscall2_test doesn't add up");
27    ASSERT_EQ(zx_syscall_test_1(1), 1, "syscall1_test doesn't add up");
28    ASSERT_EQ(zx_syscall_test_0(), 0, "syscall0_test doesn't add up");
29    END_TEST;
30}
31
32BEGIN_TEST_CASE(launchpad_tests)
33RUN_TEST(wrapper_test);
34RUN_TEST(syscall_test);
35END_TEST_CASE(launchpad_tests)
36
37int main(int argc, char **argv) {
38    bool success = unittest_run_all_tests(argc, argv);
39    return success ? 0 : -1;
40}
41