1 // { dg-options "-DUSE_FILESYSTEM_TS -lstdc++fs" } 2 // { dg-do run { target c++11 } } 3 // { dg-require-filesystem-ts "" } 4 5 // Copyright (C) 2018-2020 Free Software Foundation, Inc. 6 // 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) 11 // any later version. 12 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. 17 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/>. 21 22 // 8.4.9 path decomposition [path.decompose] 23 24 #include <experimental/filesystem> 25 #include <testsuite_hooks.h> 26 27 using std::experimental::filesystem::path; 28 29 void test01()30test01() 31 { 32 #ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS 33 const bool is_posix = false; 34 #else 35 const bool is_posix = true; 36 #endif 37 38 VERIFY( path("/").is_absolute() == is_posix ); 39 VERIFY( path("/foo").is_absolute() == is_posix ); 40 VERIFY( path("/foo/").is_absolute() == is_posix ); 41 VERIFY( path("/foo/bar").is_absolute() == is_posix ); 42 VERIFY( path("/foo/bar/").is_absolute() == is_posix ); 43 VERIFY( ! path("foo").is_absolute() ); 44 VERIFY( ! path("foo/").is_absolute() ); 45 VERIFY( ! path("foo/bar").is_absolute() ); 46 VERIFY( ! path("foo/bar/").is_absolute() ); 47 VERIFY( ! path("c:").is_absolute() ); 48 VERIFY( ! path("c:foo").is_absolute() ); 49 VERIFY( ! path("c:foo/").is_absolute() ); 50 VERIFY( ! path("c:foo/bar").is_absolute() ); 51 VERIFY( ! path("c:foo/bar/").is_absolute() ); 52 VERIFY( path("c:/").is_absolute() == !is_posix ); 53 VERIFY( path("c:/foo").is_absolute() == !is_posix ); 54 VERIFY( path("c:/foo/").is_absolute() == !is_posix ); 55 VERIFY( path("c:/foo/bar").is_absolute() == !is_posix ); 56 VERIFY( path("c:/foo/bar/").is_absolute() == !is_posix ); 57 } 58 59 int main()60main() 61 { 62 test01(); 63 } 64