Martin Storsjö 3784bdf217 [libcxx] [test] Fix string type handling in a few fairly trivial class.path tests
Use string() for convenience for testing where possible, but keep using
native() for move tests where we want to check that no allocations are
made, constructing a reference fs::path::string_type instead.

Use the right value_type in a few places.

Make the synop test check for the right types and for the expected
preferred separator.

Differential Revision: https://reviews.llvm.org/D89537
2020-10-16 21:04:23 +03:00

48 lines
1.3 KiB
C++

//===----------------------------------------------------------------------===//
//
// 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++03
// <filesystem>
// class path
// typedef ... value_type;
// typedef basic_string<value_type> string_type;
// static constexpr value_type preferred_separator = ...;
#include "filesystem_include.h"
#include <type_traits>
#include <cassert>
#include "test_macros.h"
int main(int, char**) {
using namespace fs;
#ifdef _WIN32
ASSERT_SAME_TYPE(path::value_type, wchar_t);
#else
ASSERT_SAME_TYPE(path::value_type, char);
#endif
ASSERT_SAME_TYPE(path::string_type, std::basic_string<path::value_type>);
{
ASSERT_SAME_TYPE(const path::value_type, decltype(path::preferred_separator));
#ifdef _WIN32
static_assert(path::preferred_separator == '\\', "");
#else
static_assert(path::preferred_separator == '/', "");
#endif
// Make preferred_separator ODR used by taking its address.
const path::value_type* dummy = &path::preferred_separator;
((void)dummy);
}
return 0;
}