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 <lib/zxio/null.h>
6 #include <lib/zxio/zxio.h>
7
8 #include <unittest/unittest.h>
9
null_basic_test(void)10 bool null_basic_test(void) {
11 BEGIN_TEST;
12
13 zxio_t io;
14 zxio_null_init(&io);
15
16 zxio_signals_t observed = ZXIO_SIGNAL_NONE;
17 ASSERT_EQ(ZX_ERR_NOT_SUPPORTED, zxio_wait_one(&io, ZXIO_READABLE,
18 ZX_TIME_INFINITE, &observed));
19
20 ASSERT_EQ(ZX_ERR_NOT_SUPPORTED, zxio_clone_async(&io, 0u, ZX_HANDLE_INVALID));
21 ASSERT_EQ(ZX_ERR_NOT_SUPPORTED, zxio_sync(&io));
22
23 zxio_node_attr_t attr = {};
24 ASSERT_EQ(ZX_ERR_NOT_SUPPORTED, zxio_attr_get(&io, &attr));
25 ASSERT_EQ(ZX_ERR_NOT_SUPPORTED, zxio_attr_set(&io, 0u, &attr));
26 char buffer[1024];
27 memset(buffer, 0, sizeof(buffer));
28 size_t actual = 5u;
29 ASSERT_EQ(ZX_OK, zxio_read(&io, buffer, sizeof(buffer), &actual));
30 EXPECT_EQ(0u, actual);
31 ASSERT_EQ(ZX_ERR_WRONG_TYPE, zxio_read_at(&io, 0u, buffer, sizeof(buffer), &actual));
32 ASSERT_EQ(ZX_OK, zxio_write(&io, buffer, sizeof(buffer), &actual));
33 EXPECT_EQ(sizeof(buffer), actual);
34 ASSERT_EQ(ZX_ERR_WRONG_TYPE, zxio_write_at(&io, 0u, buffer, sizeof(buffer), &actual));
35 size_t offset = 0u;
36 ASSERT_EQ(ZX_ERR_WRONG_TYPE, zxio_seek(&io, 0u, fuchsia_io_SeekOrigin_START,
37 &offset));
38 ASSERT_EQ(ZX_ERR_NOT_SUPPORTED, zxio_truncate(&io, 0u));
39 uint32_t flags = 0u;
40 ASSERT_EQ(ZX_ERR_NOT_SUPPORTED, zxio_flags_get(&io, &flags));
41 ASSERT_EQ(ZX_ERR_NOT_SUPPORTED, zxio_flags_set(&io, flags));
42 zx_handle_t vmo = ZX_HANDLE_INVALID;
43 size_t size = 0u;
44 ASSERT_EQ(ZX_ERR_NOT_SUPPORTED, zxio_vmo_get_copy(&io, &vmo, &size));
45 ASSERT_EQ(ZX_ERR_NOT_SUPPORTED, zxio_vmo_get_clone(&io, &vmo, &size));
46 ASSERT_EQ(ZX_ERR_NOT_SUPPORTED, zxio_vmo_get_exact(&io, &vmo, &size));
47
48 zxio_t* result = nullptr;
49 ASSERT_EQ(ZX_ERR_NOT_SUPPORTED, zxio_open(&io, 0u, 0u, "hello", &result));
50 ASSERT_EQ(ZX_ERR_NOT_SUPPORTED,
51 zxio_open_async(&io, 0u, 0u, "hello", ZX_HANDLE_INVALID));
52 ASSERT_EQ(ZX_ERR_NOT_SUPPORTED, zxio_unlink(&io, "hello"));
53
54 zxio_t io2;
55 zxio_null_init(&io2);
56 ASSERT_EQ(ZX_ERR_NOT_SUPPORTED, zxio_rename(&io, "one", &io2, "two"));
57 ASSERT_EQ(ZX_ERR_NOT_SUPPORTED, zxio_link(&io, "one", &io2, "two"));
58 zxio_dirent_iterator_t iter = {};
59 char buffer2[ZXIO_DIRENT_ITERATOR_DEFAULT_BUFFER_SIZE];
60 ASSERT_EQ(ZX_ERR_NOT_SUPPORTED,
61 zxio_dirent_iterator_init(&iter, &io, buffer2, sizeof(buffer2)));
62 zxio_dirent_t* entry = nullptr;
63 ASSERT_EQ(ZX_ERR_NOT_SUPPORTED, zxio_dirent_iterator_next(&iter, &entry));
64
65 ASSERT_EQ(ZX_OK, zxio_close(&io));
66
67 END_TEST;
68 }
69
70 BEGIN_TEST_CASE(null_test)
71 RUN_TEST(null_basic_test);
72 END_TEST_CASE(null_test)
73