]>
git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/experimental/filesystem/path/construct/range.cc
c43f1b1665fec42fc9ab508fa5ff59a83349b9e7
1 // { dg-options "-DUSE_FILESYSTEM_TS -lstdc++fs" }
2 // { dg-do run { target c++11 } }
3 // { dg-require-filesystem-ts "" }
5 // Copyright (C) 2014-2023 Free Software Foundation, Inc.
7 // This file is part of the GNU ISO C++ Library. This library is free
8 // software; you can redistribute it and/or modify it under the
9 // terms of the GNU General Public License as published by the
10 // Free Software Foundation; either version 3, or (at your option)
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU General Public License for more details.
18 // You should have received a copy of the GNU General Public License along
19 // with this library; see the file COPYING3. If not see
20 // <http://www.gnu.org/licenses/>.
22 // 8.4.1 path constructors [path.construct]
24 #include <experimental/filesystem>
26 #include <testsuite_fs.h>
27 #include <testsuite_iterators.h>
29 using std::experimental::filesystem::path
;
30 using __gnu_test::compare_paths
;
35 for (std::string s
: __gnu_test::test_paths
)
38 path
p2( s
.begin(), s
.end() );
40 path
p4( s
.c_str(), s
.c_str() + s
.size() );
42 compare_paths(p1
, p2
);
43 compare_paths(p1
, p3
);
44 compare_paths(p1
, p4
);
46 #if _GLIBCXX_USE_WCHAR_T
47 std::wstring
ws(s
.begin(), s
.end());
49 path
p6( ws
.begin(), ws
.end() );
50 path
p7( ws
.c_str() );
51 path
p8( ws
.c_str(), ws
.c_str() + ws
.size() );
53 compare_paths(p1
, p5
);
54 compare_paths(p1
, p6
);
55 compare_paths(p1
, p7
);
56 compare_paths(p1
, p8
);
59 using __gnu_test::test_container
;
60 using __gnu_test::input_iterator_wrapper
;
61 // Test with input iterators and const value_types
63 test_container
<char, input_iterator_wrapper
>
64 r1((char*)s
.c_str(), (char*)s
.c_str() + s
.size());
65 path
p9(r1
.begin(), r1
.end());
66 compare_paths(p1
, p9
);
68 test_container
<char, input_iterator_wrapper
>
69 r2((char*)s
.c_str(), (char*)s
.c_str() + s
.size() + 1); // includes null-terminator
71 compare_paths(p1
, p10
);
73 test_container
<const char, input_iterator_wrapper
>
74 r3(s
.c_str(), s
.c_str() + s
.size());
75 path
p11(r3
.begin(), r3
.end());
76 compare_paths(p1
, p11
);
78 test_container
<const char, input_iterator_wrapper
>
79 r4(s
.c_str(), s
.c_str() + s
.size() + 1); // includes null-terminator
81 compare_paths(p1
, p12
);
83 #if _GLIBCXX_USE_WCHAR_T
84 // Test with input iterators and const value_types
85 test_container
<wchar_t, input_iterator_wrapper
>
86 r5((wchar_t*)ws
.c_str(), (wchar_t*)ws
.c_str() + ws
.size());
87 path
p13(r5
.begin(), r5
.end());
88 compare_paths(p1
, p13
);
90 test_container
<wchar_t, input_iterator_wrapper
>
91 r6((wchar_t*)ws
.c_str(), (wchar_t*)ws
.c_str() + ws
.size() + 1); // includes null-terminator
93 compare_paths(p1
, p14
);
95 test_container
<const wchar_t, input_iterator_wrapper
>
96 r7(ws
.c_str(), ws
.c_str() + ws
.size());
97 path
p15(r7
.begin(), r7
.end());
98 compare_paths(p1
, p15
);
100 test_container
<const wchar_t, input_iterator_wrapper
>
101 r8(ws
.c_str(), ws
.c_str() + ws
.size() + 1); // includes null-terminator
102 path
p16(r8
.begin());
103 compare_paths(p1
, p16
);