1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8
9 // UNSUPPORTED: c++03, c++11, c++14
10 // UNSUPPORTED: no-filesystem
11 // UNSUPPORTED: availability-filesystem-missing
12
13 // <filesystem>
14
15 // bool status_known(file_status s) noexcept;
16
17 #include <filesystem>
18 #include <type_traits>
19 #include <cassert>
20
21 #include "test_macros.h"
22 #include "filesystem_test_helper.h"
23 namespace fs = std::filesystem;
24 using namespace fs;
25
signature_test()26 static void signature_test()
27 {
28 file_status s; ((void)s);
29 ASSERT_SAME_TYPE(decltype(status_known(s)), bool);
30 ASSERT_NOEXCEPT(status_known(s));
31 }
32
status_known_test()33 static void status_known_test()
34 {
35 struct TestCase {
36 file_type type;
37 bool expect;
38 };
39 const TestCase testCases[] = {
40 {file_type::none, false},
41 {file_type::not_found, true},
42 {file_type::regular, true},
43 {file_type::directory, true},
44 {file_type::symlink, true},
45 {file_type::block, true},
46 {file_type::character, true},
47 {file_type::fifo, true},
48 {file_type::socket, true},
49 {file_type::unknown, true}
50 };
51 for (auto& TC : testCases) {
52 file_status s(TC.type);
53 assert(status_known(s) == TC.expect);
54 }
55 }
56
main(int,char **)57 int main(int, char**) {
58 signature_test();
59 status_known_test();
60
61 return 0;
62 }
63