annotate libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/cmp.cc @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
152
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1 // { dg-options "-std=gnu++17" }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2 // { dg-do run { target c++17 } }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4 // Copyright (C) 2020 Free Software Foundation, Inc.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5 //
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 // This file is part of the GNU ISO C++ Library. This library is free
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7 // software; you can redistribute it and/or modify it under the
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8 // terms of the GNU General Public License as published by the
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9 // Free Software Foundation; either version 3, or (at your option)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10 // any later version.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12 // This library is distributed in the hope that it will be useful,
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15 // GNU General Public License for more details.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17 // You should have received a copy of the GNU General Public License along
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18 // with this library; see the file COPYING3. If not see
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19 // <http://www.gnu.org/licenses/>.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21 // C++17 30.10.8.6 path non-member functions [fs.path.nonmember]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23 #include <filesystem>
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24 #include <testsuite_hooks.h>
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25 #include <testsuite_fs.h>
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27 using std::filesystem::path;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
29 void
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
30 test01()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
31 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
32 path p("/foo/bar");
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
33 VERIFY( p == p );
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
34 VERIFY( p == "/foo//bar" );
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
35
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
36 path q("/foo/baz");
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
37 VERIFY( p < q );
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
38 VERIFY( q > p );
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
39
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
40 path r("/foo/bar/.");
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
41 VERIFY( p < r );
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
42
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
43 VERIFY( path("a/b/") == path("a/b//") );
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
44 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
45
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
46 void
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
47 test02()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
48 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
49 const path p0 = "/a/a/b/b";
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
50 for (const path& p : __gnu_test::test_paths)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
51 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
52 VERIFY( p.compare(p) == 0 );
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
53 int cmp = p.compare(p0);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
54 if (cmp == 0)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
55 VERIFY( p0 == p );
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
56 else if (cmp < 0)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
57 VERIFY( p0 > p );
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
58 else if (cmp > 0)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
59 VERIFY( p0 < p );
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
60 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
61 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
62
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
63 void
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
64 test03()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
65 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
66 VERIFY( path("/") == path("////") );
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
67 VERIFY( path("/a") > path("/") );
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
68 VERIFY( path("/") < path("/a") );
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
69 VERIFY( path("/ab") > path("/a") );
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
70 VERIFY( path("/ab") > path("/a/b") );
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
71 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
72
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
73 int
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
74 main()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
75 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
76 test01();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
77 test02();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
78 test03();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
79 }