mirror of
https://git.mirrors.martin98.com/https://github.com/gulrak/filesystem
synced 2025-06-11 02:36:33 +08:00
refs #119, add additional tests and missing character literal types support
This commit is contained in:
parent
134dffdcbd
commit
37442cc5ea
@ -411,11 +411,23 @@ public:
|
|||||||
template <typename T1, typename T2 = void>
|
template <typename T1, typename T2 = void>
|
||||||
using path_type = typename std::enable_if<!std::is_same<path, T1>::value, path>::type;
|
using path_type = typename std::enable_if<!std::is_same<path, T1>::value, path>::type;
|
||||||
template <typename T>
|
template <typename T>
|
||||||
|
#if defined(__cpp_lib_char8_t) && !defined(GHC_FILESYSTEM_ENFORCE_CPP17_API)
|
||||||
|
using path_from_string =
|
||||||
|
typename std::enable_if<_is_basic_string<T>::value || std::is_same<char const*, typename std::decay<T>::type>::value || std::is_same<char*, typename std::decay<T>::type>::value || std::is_same<char8_t const*, typename std::decay<T>::type>::value ||
|
||||||
|
std::is_same<char8_t*, typename std::decay<T>::type>::value || std::is_same<char16_t const*, typename std::decay<T>::type>::value || std::is_same<char16_t*, typename std::decay<T>::type>::value ||
|
||||||
|
std::is_same<char32_t const*, typename std::decay<T>::type>::value || std::is_same<char32_t*, typename std::decay<T>::type>::value || std::is_same<wchar_t const*, typename std::decay<T>::type>::value ||
|
||||||
|
std::is_same<wchar_t*, typename std::decay<T>::type>::value,
|
||||||
|
path>::type;
|
||||||
|
template <typename T>
|
||||||
|
using path_type_EcharT = typename std::enable_if<std::is_same<T, char>::value || std::is_same<T, char8_t>::value || std::is_same<T, char16_t>::value || std::is_same<T, char32_t>::value || std::is_same<T, wchar_t>::value, path>::type;
|
||||||
|
#else
|
||||||
using path_from_string = typename std::enable_if<_is_basic_string<T>::value || std::is_same<char const*, typename std::decay<T>::type>::value || std::is_same<char*, typename std::decay<T>::type>::value ||
|
using path_from_string = typename std::enable_if<_is_basic_string<T>::value || std::is_same<char const*, typename std::decay<T>::type>::value || std::is_same<char*, typename std::decay<T>::type>::value ||
|
||||||
std::is_same<wchar_t const*, typename std::decay<T>::type>::value || std::is_same<wchar_t*, typename std::decay<T>::type>::value,
|
std::is_same<char16_t const*, typename std::decay<T>::type>::value || std::is_same<char16_t*, typename std::decay<T>::type>::value || std::is_same<char32_t const*, typename std::decay<T>::type>::value ||
|
||||||
path>::type;
|
std::is_same<char32_t*, typename std::decay<T>::type>::value || std::is_same<wchar_t const*, typename std::decay<T>::type>::value || std::is_same<wchar_t*, typename std::decay<T>::type>::value,
|
||||||
|
path>::type;
|
||||||
template <typename T>
|
template <typename T>
|
||||||
using path_type_EcharT = typename std::enable_if<std::is_same<T, char>::value || std::is_same<T, char16_t>::value || std::is_same<T, char32_t>::value || std::is_same<T, wchar_t>::value, path>::type;
|
using path_type_EcharT = typename std::enable_if<std::is_same<T, char>::value || std::is_same<T, char16_t>::value || std::is_same<T, char32_t>::value || std::is_same<T, wchar_t>::value, path>::type;
|
||||||
|
#endif
|
||||||
// [fs.path.construct] constructors and destructor
|
// [fs.path.construct] constructors and destructor
|
||||||
path() noexcept;
|
path() noexcept;
|
||||||
path(const path& p);
|
path(const path& p);
|
||||||
|
@ -385,11 +385,22 @@ TEST_CASE("fs.path.construct - path constructors and destructor", "[filesystem][
|
|||||||
{
|
{
|
||||||
CHECK("/usr/local/bin" == fs::path("/usr/local/bin").generic_string());
|
CHECK("/usr/local/bin" == fs::path("/usr/local/bin").generic_string());
|
||||||
std::string str = "/usr/local/bin";
|
std::string str = "/usr/local/bin";
|
||||||
|
#if defined(__cpp_lib_char8_t) && !defined(GHC_FILESYSTEM_ENFORCE_CPP17_API)
|
||||||
|
std::u8string u8str = u8"/usr/local/bin";
|
||||||
|
#endif
|
||||||
std::u16string u16str = u"/usr/local/bin";
|
std::u16string u16str = u"/usr/local/bin";
|
||||||
std::u32string u32str = U"/usr/local/bin";
|
std::u32string u32str = U"/usr/local/bin";
|
||||||
|
#if defined(__cpp_lib_char8_t) && !defined(GHC_FILESYSTEM_ENFORCE_CPP17_API)
|
||||||
|
CHECK(u8str == fs::path(u8str).generic_u8string());
|
||||||
|
#endif
|
||||||
|
CHECK(u16str == fs::path(u16str).generic_u16string());
|
||||||
|
CHECK(u32str == fs::path(u32str).generic_u32string());
|
||||||
CHECK(str == fs::path(str, fs::path::format::generic_format));
|
CHECK(str == fs::path(str, fs::path::format::generic_format));
|
||||||
CHECK(str == fs::path(str.begin(), str.end()));
|
CHECK(str == fs::path(str.begin(), str.end()));
|
||||||
CHECK(fs::path(std::wstring(3, 67)) == "CCC");
|
CHECK(fs::path(std::wstring(3, 67)) == "CCC");
|
||||||
|
#if defined(__cpp_lib_char8_t) && !defined(GHC_FILESYSTEM_ENFORCE_CPP17_API)
|
||||||
|
CHECK(str == fs::path(u8str.begin(), u8str.end()));
|
||||||
|
#endif
|
||||||
CHECK(str == fs::path(u16str.begin(), u16str.end()));
|
CHECK(str == fs::path(u16str.begin(), u16str.end()));
|
||||||
CHECK(str == fs::path(u32str.begin(), u32str.end()));
|
CHECK(str == fs::path(u32str.begin(), u32str.end()));
|
||||||
#ifdef GHC_FILESYSTEM_VERSION
|
#ifdef GHC_FILESYSTEM_VERSION
|
||||||
@ -1993,6 +2004,9 @@ TEST_CASE("fs.op.exists - exists", "[filesystem][operations][fs.op.exists]")
|
|||||||
CHECK(!ec);
|
CHECK(!ec);
|
||||||
ec = std::error_code(42, std::system_category());
|
ec = std::error_code(42, std::system_category());
|
||||||
CHECK(!fs::exists("foo", ec));
|
CHECK(!fs::exists("foo", ec));
|
||||||
|
#if defined(__cpp_lib_char8_t) && !defined(GHC_FILESYSTEM_ENFORCE_CPP17_API)
|
||||||
|
CHECK(!fs::exists(u8"foo"));
|
||||||
|
#endif
|
||||||
CHECK(!ec);
|
CHECK(!ec);
|
||||||
ec.clear();
|
ec.clear();
|
||||||
CHECK(fs::exists(t.path()));
|
CHECK(fs::exists(t.path()));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user