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// path system_complete(const path& p); 156e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier// path system_complete(const path& p, error_code& ec); 166e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 176e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier// Note: For POSIX based operating systems, 'system_complete(p)' has the 186e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier// same semantics as 'absolute(p, current_path())'. 196e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 206e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier#include <experimental/filesystem> 216e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier#include <type_traits> 226e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier#include <cassert> 236e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 246e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier#include "test_macros.h" 256e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier#include "rapid-cxx-test.hpp" 266e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier#include "filesystem_test_helper.hpp" 276e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 286e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselierusing namespace std::experimental::filesystem; 296e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 306e9a694dce70319e60dbdfb09cf055bacb4c948eEric FiselierTEST_SUITE(filesystem_system_complete_test_suite) 316e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 326e9a694dce70319e60dbdfb09cf055bacb4c948eEric FiselierTEST_CASE(signature_test) 336e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier{ 346e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier const path p; ((void)p); 356e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier std::error_code ec; ((void)ec); 366e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier ASSERT_NOT_NOEXCEPT(system_complete(p)); 376e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier ASSERT_NOT_NOEXCEPT(system_complete(p, ec)); 386e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier} 396e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 406e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 416e9a694dce70319e60dbdfb09cf055bacb4c948eEric FiselierTEST_CASE(basic_system_complete_tests) 426e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier{ 436e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier const path testCases[] = { 446e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier "//net/foo", // has_root_name() && has_root_directory() 456e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier "/foo", // !has_root_name() && has_root_directory() 466e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier "//net", // has_root_name() && !has_root_directory() 476e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier "bar/baz" // !has_root_name() && !has_root_directory() 486e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier }; 496e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier const path base = current_path(); 506e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier for (auto& p : testCases) { 516e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier const path ret = system_complete(p); 526e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier const path expect = absolute(p, base); 536e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier TEST_CHECK(ret.is_absolute()); 546e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier TEST_CHECK(ret == expect); 556e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier } 566e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier} 576e9a694dce70319e60dbdfb09cf055bacb4c948eEric Fiselier 586e9a694dce70319e60dbdfb09cf055bacb4c948eEric FiselierTEST_SUITE_END() 59