1 // Copyright 2017 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 "util.h"
6
test_basic(void)7 bool test_basic(void) {
8 BEGIN_TEST;
9 ASSERT_EQ(emu_mkdir("::alpha", 0755), 0);
10 ASSERT_EQ(emu_mkdir("::alpha/bravo", 0755), 0);
11 ASSERT_EQ(emu_mkdir("::alpha/bravo/charlie", 0755), 0);
12 ASSERT_EQ(emu_mkdir("::alpha/bravo/charlie/delta", 0755), 0);
13 ASSERT_EQ(emu_mkdir("::alpha/bravo/charlie/delta/echo", 0755), 0);
14 int fd1 = emu_open("::alpha/bravo/charlie/delta/echo/foxtrot", O_RDWR | O_CREAT, 0644);
15 ASSERT_GT(fd1, 0);
16 int fd2 = emu_open("::alpha/bravo/charlie/delta/echo/foxtrot", O_RDWR, 0644);
17 ASSERT_GT(fd2, 0);
18 ASSERT_EQ(emu_write(fd1, "Hello, World!\n", 14), 14);
19 ASSERT_EQ(emu_close(fd1), 0);
20 ASSERT_EQ(emu_close(fd2), 0);
21
22 fd1 = emu_open("::file.txt", O_CREAT | O_RDWR, 0644);
23 ASSERT_GT(fd1, 0);
24 ASSERT_EQ(emu_close(fd1), 0);
25
26 ASSERT_EQ(emu_mkdir("::emptydir", 0755), 0);
27 fd1 = emu_open("::emptydir", O_RDONLY, 0644);
28 ASSERT_GT(fd1, 0);
29 char buf;
30 ASSERT_LT(emu_read(fd1, &buf, 1), 0);
31 ASSERT_EQ(emu_write(fd1, "Don't write to directories", 26), -1);
32 ASSERT_EQ(emu_ftruncate(fd1, 0), -1);
33 ASSERT_EQ(emu_close(fd1), 0);
34 ASSERT_EQ(run_fsck(), 0);
35 END_TEST;
36 }
37
38 RUN_MINFS_TESTS(basic_tests,
39 RUN_TEST_MEDIUM(test_basic)
40 )