1// Copyright 2018 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 <fuchsia/io/c/fidl.h>
6#include <lib/fdio/util.h>
7#include <unittest/unittest.h>
8#include <zircon/syscalls.h>
9
10namespace {
11
12bool test_fidl_basic() {
13    BEGIN_TEST;
14
15    zx_handle_t h = ZX_HANDLE_INVALID;
16    zx_handle_t request = ZX_HANDLE_INVALID;
17    fuchsia_io_NodeInfo info = {};
18
19    ASSERT_EQ(zx_channel_create(0, &h, &request), ZX_OK);
20    ASSERT_EQ(fdio_service_connect("/dev/class", request), ZX_OK);
21    memset(&info, 0, sizeof(info));
22    ASSERT_EQ(fuchsia_io_FileDescribe(h, &info), ZX_OK);
23    ASSERT_EQ(info.tag, fuchsia_io_NodeInfoTag_directory);
24    zx_handle_close(h);
25
26    ASSERT_EQ(zx_channel_create(0, &h, &request), ZX_OK);
27    ASSERT_EQ(fdio_service_connect("/dev/zero", request), ZX_OK);
28    memset(&info, 0, sizeof(info));
29    ASSERT_EQ(fuchsia_io_FileDescribe(h, &info), ZX_OK);
30    ASSERT_EQ(info.tag, fuchsia_io_NodeInfoTag_device);
31    ASSERT_NE(info.device.event, ZX_HANDLE_INVALID);
32    zx_handle_close(info.device.event);
33    zx_handle_close(h);
34
35    END_TEST;
36}
37
38} // namespace
39
40BEGIN_TEST_CASE(fidl_tests)
41RUN_TEST(test_fidl_basic)
42END_TEST_CASE(fidl_tests)
43