From f7b43230b844373b421571467864a5fbf644e38d Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Tue, 19 Mar 2019 19:27:29 +0000 Subject: Revert "[libc++] Build support as part of the dylib" When I applied r356500 (https://reviews.llvm.org/D59152), I somehow deleted all of filesystem's tests. I will revert r356500 and re-apply it properly. llvm-svn: 356505 --- .../path.member/path.construct/copy.pass.cpp | 35 ++++++ .../path.member/path.construct/default.pass.cpp | 31 +++++ .../path.member/path.construct/move.pass.cpp | 41 +++++++ .../path.member/path.construct/source.pass.cpp | 130 +++++++++++++++++++++ 4 files changed, 237 insertions(+) create mode 100644 libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/copy.pass.cpp create mode 100644 libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/default.pass.cpp create mode 100644 libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/move.pass.cpp create mode 100644 libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp (limited to 'libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct') diff --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/copy.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/copy.pass.cpp new file mode 100644 index 00000000000..1490c0b9fed --- /dev/null +++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/copy.pass.cpp @@ -0,0 +1,35 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03 + +// + +// class path + +// path(path const&) + +#include "filesystem_include.hpp" +#include +#include + +#include "test_macros.h" + + +int main(int, char**) { + using namespace fs; + static_assert(std::is_copy_constructible::value, ""); + static_assert(!std::is_nothrow_copy_constructible::value, "should not be noexcept"); + const std::string s("foo"); + const path p(s); + path p2(p); + assert(p.native() == s); + assert(p2.native() == s); + + return 0; +} diff --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/default.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/default.pass.cpp new file mode 100644 index 00000000000..b31728da1f9 --- /dev/null +++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/default.pass.cpp @@ -0,0 +1,31 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03 + +// + +// class path + +// path() noexcept + +#include "filesystem_include.hpp" +#include +#include + +#include "test_macros.h" + + +int main(int, char**) { + using namespace fs; + static_assert(std::is_nothrow_default_constructible::value, ""); + const path p; + assert(p.empty()); + + return 0; +} diff --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/move.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/move.pass.cpp new file mode 100644 index 00000000000..494a77c3c86 --- /dev/null +++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/move.pass.cpp @@ -0,0 +1,41 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03 + +// + +// class path + +// path(path&&) noexcept + +#include "filesystem_include.hpp" +#include +#include + +#include "test_macros.h" +#include "count_new.hpp" + + +int main(int, char**) { + using namespace fs; + static_assert(std::is_nothrow_move_constructible::value, ""); + assert(globalMemCounter.checkOutstandingNewEq(0)); + const std::string s("we really really really really really really really " + "really really long string so that we allocate"); + assert(globalMemCounter.checkOutstandingNewEq(1)); + path p(s); + { + DisableAllocationGuard g; + path p2(std::move(p)); + assert(p2.native() == s); + assert(p.native() != s); // Testing moved from state + } + + return 0; +} diff --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp new file mode 100644 index 00000000000..bcb9986cec9 --- /dev/null +++ b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/source.pass.cpp @@ -0,0 +1,130 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03 + +// + +// class path + +// template +// path(const Source& source); +// template +// path(InputIterator first, InputIterator last); + + +#include "filesystem_include.hpp" +#include +#include + +#include "test_macros.h" +#include "test_iterators.h" +#include "min_allocator.h" +#include "filesystem_test_helper.hpp" + + +template +void RunTestCaseImpl(MultiStringType const& MS, Args... args) { + 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, args...); + assert(p.native() == Expect); + assert(p.string() == TestPath); + assert(p.string() == S); + } + { + const std::basic_string_view S(TestPath); + path p(S, args...); + assert(p.native() == Expect); + assert(p.string() == TestPath); + assert(p.string() == S); + } + // Char* pointers + { + path p(TestPath, args...); + assert(p.native() == Expect); + assert(p.string() == TestPath); + } + { + path p(TestPath, TestPathEnd, args...); + assert(p.native() == Expect); + assert(p.string() == TestPath); + } + // Iterators + { + using It = input_iterator; + path p(It{TestPath}, args...); + assert(p.native() == Expect); + assert(p.string() == TestPath); + } + { + using It = input_iterator; + path p(It{TestPath}, It{TestPathEnd}, args...); + assert(p.native() == Expect); + assert(p.string() == TestPath); + } +} + +template +void RunTestCase(MultiStringType const& MS) { + RunTestCaseImpl(MS); + RunTestCaseImpl(MS, fs::path::format::auto_format); + RunTestCaseImpl(MS, fs::path::format::native_format); + RunTestCaseImpl(MS, fs::path::format::generic_format); +} + +void test_sfinae() { + using namespace fs; + { + using It = const char* const; + static_assert(std::is_constructible::value, ""); + } + { + using It = input_iterator; + static_assert(std::is_constructible::value, ""); + } + { + struct Traits { + using iterator_category = std::input_iterator_tag; + using value_type = const char; + using pointer = const char*; + using reference = const char&; + using difference_type = std::ptrdiff_t; + }; + using It = input_iterator; + static_assert(std::is_constructible::value, ""); + } + { + using It = output_iterator; + static_assert(!std::is_constructible::value, ""); + + } + { + static_assert(!std::is_constructible::value, ""); + } +} + +int main(int, char**) { + for (auto const& MS : PathList) { + RunTestCase(MS); + RunTestCase(MS); + RunTestCase(MS); + RunTestCase(MS); + } + test_sfinae(); + + return 0; +} -- cgit v1.2.3