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 )