1// { dg-options "-std=gnu++11 -lstdc++fs" } 2// { dg-require-filesystem-ts "" } 3 4// Copyright (C) 2014-2015 Free Software Foundation, Inc. 5// 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) 10// any later version. 11 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. 16 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/>. 20 21// 8.4.9 path decomposition [path.decompose] 22 23#include <experimental/filesystem> 24#include <testsuite_hooks.h> 25#include <testsuite_fs.h> 26 27using std::experimental::filesystem::path; 28 29void 30test01() 31{ 32 path p1 = "foo"; 33 VERIFY( p1.relative_path() == p1 ); 34 path p2 = "foo/bar"; 35 VERIFY( p2.relative_path() == p2 ); 36 path p3 = "/foo/bar"; 37 VERIFY( p3.relative_path() == p2 ); 38} 39 40void 41test02() 42{ 43 for (const path& p : __gnu_test::test_paths) 44 { 45 bool after_root = false; 46 const path prel = p.relative_path(); 47 VERIFY( !prel.has_root_name() ); 48 path rel; 49 for (const auto& cmpt : p) 50 { 51 if (!cmpt.has_root_path()) 52 after_root = true; 53 if (after_root) 54 rel /= cmpt; 55 } 56 VERIFY( prel == rel ); 57 } 58} 59 60int 61main() 62{ 63 test01(); 64 test02(); 65} 66