]>
git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/27_io/filesystem/path/assign/copy.cc
70614074e729d38a5d7c58139decd58b6bcf9fbb
1 // { dg-do run { target c++17 } }
2 // { dg-options "-Wno-self-move" }
4 // Copyright (C) 2014-2025 Free Software Foundation, Inc.
6 // This file is part of the GNU ISO C++ Library. This library is free
7 // software; you can redistribute it and/or modify it under the
8 // terms of the GNU General Public License as published by the
9 // Free Software Foundation; either version 3, or (at your option)
12 // This library is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
17 // You should have received a copy of the GNU General Public License along
18 // with this library; see the file COPYING3. If not see
19 // <http://www.gnu.org/licenses/>.
22 #include <testsuite_fs.h>
23 #include <testsuite_hooks.h>
25 using std::filesystem::path
;
26 using __gnu_test::compare_paths
;
31 for (const path p
: __gnu_test::test_paths
)
35 __gnu_test::compare_paths(p
, copy
);
42 for (const path p
: __gnu_test::test_paths
)
46 move
= std::move(copy
);
47 __gnu_test::compare_paths(p
, move
);
54 // self assignment should have no effect
55 const path orig
= "foo/bar/baz";
57 const auto ptr1
= p
.c_str();
58 const auto ptr2
= p
.begin()->c_str();
60 __gnu_test::compare_paths(p
, orig
);
62 __gnu_test::compare_paths(p
, orig
);
63 VERIFY( ptr1
== p
.c_str() );
64 VERIFY( ptr2
== p
.begin()->c_str() );
72 const path p2
= "d/e";
76 __gnu_test::compare_paths(p1
, p2
);
77 __gnu_test::compare_paths(p1
, p3
);
78 __gnu_test::compare_paths(p2
, p3
);