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 <unittest/unittest.h>
6 #include <minfs/host.h>
7 #include <fcntl.h>
8 
9 #define DEFAULT_DISK_SIZE (1llu << 32)
10 
11 #define MOUNT_PATH "/tmp/zircon-fs-test"
12 
13 typedef struct expected_dirent {
14     bool seen; // Should be set to "false", used internally by checking function.
15     const char* d_name;
16     unsigned char d_type;
17 } expected_dirent_t;
18 
19 void setup_fs_test(size_t disk_size);
20 void teardown_fs_test(void);
21 int run_fsck(void);
22 
23 #define BEGIN_FS_TEST_CASE(case_name, disk_size) \
24     BEGIN_TEST_CASE(case_name)                   \
25     setup_fs_test(disk_size);
26 
27 #define END_FS_TEST_CASE(case_name) \
28     teardown_fs_test();             \
29     END_TEST_CASE(case_name)
30 
31 #define RUN_MINFS_TESTS(case_name, CASE_TESTS) \
32     RUN_MINFS_TESTS_SIZE(case_name, DEFAULT_DISK_SIZE, CASE_TESTS)
33 
34 #define RUN_MINFS_TESTS_SIZE(case_name, disk_size, CASE_TESTS) \
35     BEGIN_FS_TEST_CASE(minfs_##case_name, disk_size)           \
36     CASE_TESTS                                                 \
37     END_FS_TEST_CASE(minfs_##case_name)
38 
39 #define ASSERT_STREAM_ALL(op, fd, buf, len) \
40     ASSERT_EQ(op(fd, (buf), (len)), (ssize_t)(len), "");
41