1 //===----------------------------------------------------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // UNSUPPORTED: c++98, c++03
12 // <experimental/filesystem>
14 // class directory_iterator
16 // directory_iterator(directory_iterator const&);
18 #include "filesystem_include.hpp"
19 #include <type_traits>
23 #include "test_macros.h"
24 #include "rapid-cxx-test.hpp"
25 #include "filesystem_test_helper.hpp"
29 TEST_SUITE(directory_iterator_copy_construct_tests)
31 TEST_CASE(test_constructor_signature)
33 using D = directory_iterator;
34 static_assert(std::is_copy_constructible<D>::value, "");
37 TEST_CASE(test_copy_end_iterator)
39 const directory_iterator endIt;
40 directory_iterator it(endIt);
41 TEST_CHECK(it == endIt);
44 TEST_CASE(test_copy_valid_iterator)
46 const path testDir = StaticEnv::Dir;
47 const directory_iterator endIt{};
49 const directory_iterator it(testDir);
50 TEST_REQUIRE(it != endIt);
51 const path entry = *it;
53 const directory_iterator it2(it);
54 TEST_REQUIRE(it2 == it);
55 TEST_CHECK(*it2 == entry);
56 TEST_CHECK(*it == entry);