16e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier//===----------------------------------------------------------------------===// 26e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier// 36e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier// The LLVM Compiler Infrastructure 46e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier// 56e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier// This file is dual licensed under the MIT and the University of Illinois Open 66e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier// Source Licenses. See LICENSE.TXT for details. 76e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier// 86e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier//===----------------------------------------------------------------------===// 96e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 106e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier// UNSUPPORTED: c++98, c++03 116e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 126e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier// <experimental/filesystem> 136e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 146e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier// class directory_iterator 156e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 166e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier// directory_iterator(directory_iterator const&); 176e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 186e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier#include <experimental/filesystem> 196e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier#include <type_traits> 206e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier#include <set> 216e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier#include <cassert> 226e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 236e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier#include "test_macros.h" 246e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier#include "rapid-cxx-test.hpp" 256e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier#include "filesystem_test_helper.hpp" 266e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 276e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselierusing namespace std::experimental::filesystem; 286e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 296e9a694dce70319e60dbdfb09cf055bacb4c948eEric FiselierTEST_SUITE(directory_iterator_copy_construct_tests) 306e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 316e9a694dce70319e60dbdfb09cf055bacb4c948eEric FiselierTEST_CASE(test_constructor_signature) 326e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier{ 336e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier using D = directory_iterator; 346e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier static_assert(std::is_copy_constructible<D>::value, ""); 356e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier} 366e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 376e9a694dce70319e60dbdfb09cf055bacb4c948eEric FiselierTEST_CASE(test_copy_end_iterator) 386e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier{ 396e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier const directory_iterator endIt; 406e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier directory_iterator it(endIt); 416e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier TEST_CHECK(it == endIt); 426e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier} 436e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 446e9a694dce70319e60dbdfb09cf055bacb4c948eEric FiselierTEST_CASE(test_copy_valid_iterator) 456e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier{ 466e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier const path testDir = StaticEnv::Dir; 476e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier const directory_iterator endIt{}; 486e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 496e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier const directory_iterator it(testDir); 506e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier TEST_REQUIRE(it != endIt); 516e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier const path entry = *it; 526e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 536e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier const directory_iterator it2(it); 546e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier TEST_REQUIRE(it2 == it); 556e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier TEST_CHECK(*it2 == entry); 566e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier TEST_CHECK(*it == entry); 576e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier} 586e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 596e9a694dce70319e60dbdfb09cf055bacb4c948eEric FiselierTEST_SUITE_END() 60