//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03 // // class path // template // path(const Source& source); // template // path(InputIterator first, InputIterator last); #include #include #include #include "test_macros.h" #include "test_iterators.h" #include "min_allocator.h" #include "filesystem_test_helper.hpp" namespace fs = std::experimental::filesystem; template void RunTestCase(MultiStringType const& MS) { using namespace fs; const char* Expect = MS; const CharT* TestPath = MS; const CharT* TestPathEnd = StrEnd(TestPath); const std::size_t Size = TestPathEnd - TestPath; const std::size_t SSize = StrEnd(Expect) - Expect; assert(Size == SSize); // StringTypes { const std::basic_string S(TestPath); path p(S); assert(p.native() == Expect); assert(p.string() == TestPath); assert(p.string() == S); } // Char* pointers { path p(TestPath); assert(p.native() == Expect); assert(p.string() == TestPath); } { path p(TestPath, TestPathEnd); assert(p.native() == Expect); assert(p.string() == TestPath); } // Iterators { using It = input_iterator; path p(It{TestPath}); assert(p.native() == Expect); assert(p.string() == TestPath); } { using It = input_iterator; path p(It{TestPath}, It{TestPathEnd}); assert(p.native() == Expect); assert(p.string() == TestPath); } } int main() { for (auto const& MS : PathList) { RunTestCase(MS); RunTestCase(MS); RunTestCase(MS); RunTestCase(MS); } }