]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/27_io/filesystem/path/generic/utf.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 27_io / filesystem / path / generic / utf.cc
CommitLineData
fe7cc34f
JW
1// { dg-do run { target c++17 } }
2
a945c346 3// Copyright (C) 2017-2024 Free Software Foundation, Inc.
fe7cc34f
JW
4//
5// This file is part of the GNU ISO C++ Library. This library is free
6// software; you can redistribute it and/or modify it under the
7// terms of the GNU General Public License as published by the
8// Free Software Foundation; either version 3, or (at your option)
9// any later version.
10
11// This library is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14// GNU General Public License for more details.
15
16// You should have received a copy of the GNU General Public License along
17// with this library; see the file COPYING3. If not see
18// <http://www.gnu.org/licenses/>.
19
20// C++17 30.10.7.4.7 path generic format observers [fs.path.generic.obs]
21
22#include <filesystem>
23#include <testsuite_hooks.h>
24
25using std::filesystem::path;
26
27void
28test01()
29{
30 VERIFY( path().generic_u32string() == U"" );
31 VERIFY( path("/").generic_u32string() == U"/" );
32 VERIFY( path("////").generic_u32string() == U"/" );
33#ifdef __CYGWIN__
34 VERIFY( path("//a").generic_u32string() == U"//a" );
35 VERIFY( path("//a/").generic_u32string() == U"//a/" );
36 VERIFY( path("//a/b").generic_u32string() == U"//a/b" );
37#else
38 VERIFY( path("//a").generic_u32string() == U"/a" );
39 VERIFY( path("//a/").generic_u32string() == U"/a/" );
40 VERIFY( path("//a/b").generic_u32string() == U"/a/b" );
41#endif
42 VERIFY( path("/a//b").generic_u32string() == U"/a/b" );
43 VERIFY( path("/a//b/").generic_u32string() == U"/a/b/" );
44 VERIFY( path("/a//b//").generic_u32string() == U"/a/b/" );
45 VERIFY( path("/a//b//.").generic_u32string() == U"/a/b/." );
46}
47
48void
49test02()
50{
180eeeae
JW
51 if constexpr (path::preferred_separator == L'\\')
52 {
53 // PR libstdc++/93244
54 VERIFY( path("C:\\foo\\bar").generic_u32string() == U"C:/foo/bar" );
55 VERIFY( path("C://foo//bar").generic_u32string() == U"C:/foo/bar" );
56 }
fe7cc34f
JW
57}
58
59int
60main()
61{
62 test01();
63 test02();
64}