From 72122d058b170eafc643ec659a9298b3b103cdfd Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Tue, 19 Mar 2019 19:09:33 +0000 Subject: [libc++] Build support as part of the dylib Summary: This patch treats as a first-class citizen of the dylib, like all other sub-libraries (e.g. ). As such, it also removes all special handling for installing the filesystem library separately or disabling part of the test suite from the lit command line. Reviewers: mclow.lists, EricWF, serge-sans-paille Subscribers: mgorny, christof, jkorous, dexonsmith, jfb, jdoerfert, libcxx-commits Differential Revision: https://reviews.llvm.org/D59152 llvm-svn: 356500 --- .../path.member/path.assign/source.pass.cpp | 242 --------------------- 1 file changed, 242 deletions(-) delete mode 100644 libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp (limited to 'libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp') diff --git a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp b/libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp deleted file mode 100644 index 9c23e3b3ebf..00000000000 --- a/libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp +++ /dev/null @@ -1,242 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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& operator=(Source const&); -// path& operator=(string_type&&); -// template -// path& assign(Source const&); -// template -// path& assign(InputIterator first, InputIterator last); - - -#include "filesystem_include.hpp" -#include -#include -#include - -#include "test_macros.h" -#include "test_iterators.h" -#include "count_new.hpp" -#include "filesystem_test_helper.hpp" -#include - - -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); - ////////////////////////////////////////////////////////////////////////////// - // basic_string - { - const std::basic_string S(TestPath); - path p; PathReserve(p, S.length() + 1); - { - // string provides a contiguous iterator. No allocation needed. - DisableAllocationGuard g; - path& pref = (p = S); - assert(&pref == &p); - } - assert(p.native() == Expect); - assert(p.string() == TestPath); - assert(p.string() == S); - } - { - const std::basic_string S(TestPath); - path p; PathReserve(p, S.length() + 1); - { - DisableAllocationGuard g; - path& pref = p.assign(S); - assert(&pref == &p); - } - assert(p.native() == Expect); - assert(p.string() == TestPath); - assert(p.string() == S); - } - // basic_string - { - const std::basic_string_view S(TestPath); - path p; PathReserve(p, S.length() + 1); - { - // string provides a contiguous iterator. No allocation needed. - DisableAllocationGuard g; - path& pref = (p = S); - assert(&pref == &p); - } - assert(p.native() == Expect); - assert(p.string() == TestPath); - assert(p.string() == S); - } - { - const std::basic_string_view S(TestPath); - path p; PathReserve(p, S.length() + 1); - { - DisableAllocationGuard g; - path& pref = p.assign(S); - assert(&pref == &p); - } - assert(p.native() == Expect); - assert(p.string() == TestPath); - assert(p.string() == S); - } - ////////////////////////////////////////////////////////////////////////////// - // Char* pointers - { - path p; PathReserve(p, Size + 1); - { - // char* pointers are contiguous and can be used with code_cvt directly. - // no allocations needed. - DisableAllocationGuard g; - path& pref = (p = TestPath); - assert(&pref == &p); - } - assert(p.native() == Expect); - assert(p.string() == TestPath); - } - { - path p; PathReserve(p, Size + 1); - { - DisableAllocationGuard g; - path& pref = p.assign(TestPath); - assert(&pref == &p); - } - assert(p.native() == Expect); - assert(p.string() == TestPath); - } - { - path p; PathReserve(p, Size + 1); - { - DisableAllocationGuard g; - path& pref = p.assign(TestPath, TestPathEnd); - assert(&pref == &p); - } - assert(p.native() == Expect); - assert(p.string() == TestPath); - } - ////////////////////////////////////////////////////////////////////////////// - // Iterators - { - using It = input_iterator; - path p; PathReserve(p, Size + 1); - It it(TestPath); - { - // Iterators cannot be used with code_cvt directly. This assignment - // may allocate if it's larger than a "short-string". - path& pref = (p = it); - assert(&pref == &p); - } - assert(p.native() == Expect); - assert(p.string() == TestPath); - } - { - using It = input_iterator; - path p; PathReserve(p, Size + 1); - It it(TestPath); - { - path& pref = p.assign(it); - assert(&pref == &p); - } - assert(p.native() == Expect); - assert(p.string() == TestPath); - } - { - using It = input_iterator; - path p; PathReserve(p, Size + 1); - It it(TestPath); - It e(TestPathEnd); - { - path& pref = p.assign(it, e); - assert(&pref == &p); - } - assert(p.native() == Expect); - assert(p.string() == TestPath); - } -} - -template ()))> -constexpr bool has_assign(int) { return true; } -template -constexpr bool has_assign(long) { return false; } -template -constexpr bool has_assign() { return has_assign(0); } - -void test_sfinae() { - using namespace fs; - { - using It = const char* const; - static_assert(std::is_assignable::value, ""); - static_assert(has_assign(), ""); - } - { - using It = input_iterator; - static_assert(std::is_assignable::value, ""); - static_assert(has_assign(), ""); - } - { - 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_assignable::value, ""); - static_assert(has_assign(), ""); - } - { - using It = output_iterator; - static_assert(!std::is_assignable::value, ""); - static_assert(!has_assign(), ""); - - } - { - static_assert(!std::is_assignable::value, ""); - static_assert(!has_assign(), ""); - } -} - -void RunStringMoveTest(const char* Expect) { - using namespace fs; - std::string ss(Expect); - path p; - { - DisableAllocationGuard g; ((void)g); - path& pr = (p = std::move(ss)); - assert(&pr == &p); - } - assert(p == Expect); - { - // Signature test - ASSERT_NOEXCEPT(p = std::move(ss)); - } -} - -int main(int, char**) { - for (auto const& MS : PathList) { - RunTestCase(MS); - RunTestCase(MS); - RunTestCase(MS); - RunTestCase(MS); - RunStringMoveTest(MS); - } - test_sfinae(); - - return 0; -} -- cgit v1.2.3