refresh path functionality and names

[SVN r16446]
This commit is contained in:
Beman Dawes
2002-11-27 19:26:45 +00:00
parent c09ff41675
commit 028b2f3140
8 changed files with 343 additions and 122 deletions

View File

@@ -64,6 +64,7 @@ int test_main( int, char*[] )
path p1( "fe/fi/fo/fum" );
path p2( p1 );
path p3;
BOOST_TEST( p1.string() != p3.string() );
p3 = p2;
// p1.branch_path() = p2; // should fail
@@ -83,8 +84,8 @@ int test_main( int, char*[] )
BOOST_TEST( path( "foo" ).branch_path().string() == "" );
BOOST_TEST( p1.leaf() == "fum" );
BOOST_TEST( p1.branch_path().string() == "fe/fi/fo" );
BOOST_TEST( path( "" ).is_null() == true );
BOOST_TEST( path( "foo" ).is_null() == false );
BOOST_TEST( path( "" ).empty() == true );
BOOST_TEST( path( "foo" ).empty() == false );
PATH_CHECK( "", "" );
@@ -233,40 +234,97 @@ int test_main( int, char*[] )
BOOST_TEST( *prior( itr_ck.end() ) == std::string( "foo" ) );
BOOST_TEST( prior( itr_ck.end() ) == itr_ck.begin() );
BOOST_TEST( path( "/" ).relative_path().string() == "" );
BOOST_TEST( path( "/" ).branch_path().string() == "" );
BOOST_TEST( path( "/" ).leaf() == "/" );
BOOST_TEST( path( "/" ).system_specific_root() == "" );
BOOST_TEST( path( "/" ).root_directory() == "/" );
BOOST_TEST( path( "/" ).root_path().string() == "/" );
path p;
BOOST_TEST( path( "foo" ).relative_path().string() == "foo" );
BOOST_TEST( path( "foo" ).branch_path().string() == "" );
BOOST_TEST( path( "foo" ).leaf() == "foo" );
BOOST_TEST( path( "foo" ).system_specific_root() == "" );
BOOST_TEST( path( "foo" ).root_directory() == "" );
BOOST_TEST( path( "foo" ).root_path().string() == "" );
p = "";
BOOST_TEST( p.relative_path().string() == "" );
BOOST_TEST( p.branch_path().string() == "" );
BOOST_TEST( p.leaf() == "" );
BOOST_TEST( p.system_specific_root() == "" );
BOOST_TEST( p.root_directory() == "" );
BOOST_TEST( p.root_path().string() == "" );
BOOST_TEST( !p.has_root_path() );
BOOST_TEST( !p.has_system_specific_root() );
BOOST_TEST( !p.has_root_directory() );
BOOST_TEST( !p.has_relative_path() );
BOOST_TEST( !p.has_leaf() );
BOOST_TEST( !p.has_branch_path() );
BOOST_TEST( !p.is_complete() );
BOOST_TEST( path( "/foo" ).relative_path().string() == "foo" );
BOOST_TEST( path( "/foo" ).branch_path().string() == "/" );
BOOST_TEST( path( "/foo" ).leaf() == "foo" );
BOOST_TEST( path( "/foo" ).system_specific_root() == "" );
BOOST_TEST( path( "/foo" ).root_directory() == "/" );
BOOST_TEST( path( "/foo" ).root_path().string() == "/" );
p = "/";
BOOST_TEST( p.relative_path().string() == "" );
BOOST_TEST( p.branch_path().string() == "" );
BOOST_TEST( p.leaf() == "/" );
BOOST_TEST( p.system_specific_root() == "" );
BOOST_TEST( p.root_directory() == "/" );
BOOST_TEST( p.root_path().string() == "/" );
BOOST_TEST( p.has_root_path() );
BOOST_TEST( !p.has_system_specific_root() );
BOOST_TEST( p.has_root_directory() );
BOOST_TEST( !p.has_relative_path() );
BOOST_TEST( p.has_leaf() );
BOOST_TEST( !p.has_branch_path() );
BOOST_TEST( fs::detail::single_rooted_filesystem() == p.is_complete() );
BOOST_TEST( path( "foo/bar" ).relative_path().string() == "foo/bar" );
BOOST_TEST( path( "foo/bar" ).branch_path().string() == "foo" );
BOOST_TEST( path( "foo/bar" ).leaf() == "bar" );
BOOST_TEST( path( "foo/bar" ).system_specific_root() == "" );
BOOST_TEST( path( "foo/bar" ).root_directory() == "" );
BOOST_TEST( path( "foo/bar" ).root_path().string() == "" );
p = "foo";
BOOST_TEST( p.relative_path().string() == "foo" );
BOOST_TEST( p.branch_path().string() == "" );
BOOST_TEST( p.leaf() == "foo" );
BOOST_TEST( p.system_specific_root() == "" );
BOOST_TEST( p.root_directory() == "" );
BOOST_TEST( p.root_path().string() == "" );
BOOST_TEST( !p.has_root_path() );
BOOST_TEST( !p.has_system_specific_root() );
BOOST_TEST( !p.has_root_directory() );
BOOST_TEST( p.has_relative_path() );
BOOST_TEST( p.has_leaf() );
BOOST_TEST( !p.has_branch_path() );
BOOST_TEST( !p.is_complete() );
BOOST_TEST( path( "/foo/bar" ).relative_path().string() == "foo/bar" );
BOOST_TEST( path( "/foo/bar" ).branch_path().string() == "/foo" );
BOOST_TEST( path( "/foo/bar" ).leaf() == "bar" );
BOOST_TEST( path( "/foo/bar" ).system_specific_root() == "" );
BOOST_TEST( path( "/foo/bar" ).root_directory() == "/" );
BOOST_TEST( path( "/foo/bar" ).root_path().string() == "/" );
p = "/foo";
BOOST_TEST( p.relative_path().string() == "foo" );
BOOST_TEST( p.branch_path().string() == "/" );
BOOST_TEST( p.leaf() == "foo" );
BOOST_TEST( p.system_specific_root() == "" );
BOOST_TEST( p.root_directory() == "/" );
BOOST_TEST( p.root_path().string() == "/" );
BOOST_TEST( p.has_root_path() );
BOOST_TEST( !p.has_system_specific_root() );
BOOST_TEST( p.has_root_directory() );
BOOST_TEST( p.has_relative_path() );
BOOST_TEST( p.has_leaf() );
BOOST_TEST( p.has_branch_path() );
BOOST_TEST( fs::detail::single_rooted_filesystem() == p.is_complete() );
p = "foo/bar";
BOOST_TEST( p.relative_path().string() == "foo/bar" );
BOOST_TEST( p.branch_path().string() == "foo" );
BOOST_TEST( p.leaf() == "bar" );
BOOST_TEST( p.system_specific_root() == "" );
BOOST_TEST( p.root_directory() == "" );
BOOST_TEST( p.root_path().string() == "" );
BOOST_TEST( !p.has_root_path() );
BOOST_TEST( !p.has_system_specific_root() );
BOOST_TEST( !p.has_root_directory() );
BOOST_TEST( p.has_relative_path() );
BOOST_TEST( p.has_leaf() );
BOOST_TEST( p.has_branch_path() );
BOOST_TEST( !p.is_complete() );
p = "/foo/bar";
BOOST_TEST( p.relative_path().string() == "foo/bar" );
BOOST_TEST( p.branch_path().string() == "/foo" );
BOOST_TEST( p.leaf() == "bar" );
BOOST_TEST( p.system_specific_root() == "" );
BOOST_TEST( p.root_directory() == "/" );
BOOST_TEST( p.root_path().string() == "/" );
BOOST_TEST( p.has_root_path() );
BOOST_TEST( !p.has_system_specific_root() );
BOOST_TEST( p.has_root_directory() );
BOOST_TEST( p.has_relative_path() );
BOOST_TEST( p.has_leaf() );
BOOST_TEST( p.has_branch_path() );
BOOST_TEST( fs::detail::single_rooted_filesystem() == p.is_complete() );
if ( std::strcmp( fs::detail::implementation_name(), "Windows" ) == 0 )
{
@@ -288,61 +346,125 @@ int test_main( int, char*[] )
PATH_CHECK( path( "c:/foo", fs::system_specific ), "c:/foo" );
PATH_CHECK( path( "prn:", fs::system_specific ), "prn:" );
BOOST_TEST( path( "c:", fs::system_specific ).relative_path().string() == "" );
BOOST_TEST( path( "c:", fs::system_specific ).branch_path().string() == "" );
BOOST_TEST( path( "c:", fs::system_specific ).leaf() == "c:" );
BOOST_TEST( path( "c:", fs::system_specific ).system_specific_root() == "c:" );
BOOST_TEST( path( "c:", fs::system_specific ).root_directory() == "" );
BOOST_TEST( path( "c:", fs::system_specific ).root_path().string() == "c:" );
p = path( "c:", fs::system_specific );
BOOST_TEST( p.relative_path().string() == "" );
BOOST_TEST( p.branch_path().string() == "" );
BOOST_TEST( p.leaf() == "c:" );
BOOST_TEST( p.system_specific_root() == "c:" );
BOOST_TEST( p.root_directory() == "" );
BOOST_TEST( p.root_path().string() == "c:" );
BOOST_TEST( p.has_root_path() );
BOOST_TEST( p.has_system_specific_root() );
BOOST_TEST( !p.has_root_directory() );
BOOST_TEST( !p.has_relative_path() );
BOOST_TEST( p.has_leaf() );
BOOST_TEST( !p.has_branch_path() );
BOOST_TEST( !p.is_complete() );
BOOST_TEST( path( "c:foo", fs::system_specific ).relative_path().string() == "foo" );
BOOST_TEST( path( "c:foo", fs::system_specific ).branch_path().string() == "c:" );
BOOST_TEST( path( "c:foo", fs::system_specific ).leaf() == "foo" );
BOOST_TEST( path( "c:foo", fs::system_specific ).system_specific_root() == "c:" );
BOOST_TEST( path( "c:foo", fs::system_specific ).root_directory() == "" );
BOOST_TEST( path( "c:foo", fs::system_specific ).root_path().string() == "c:" );
p = path( "c:foo", fs::system_specific );
BOOST_TEST( p.relative_path().string() == "foo" );
BOOST_TEST( p.branch_path().string() == "c:" );
BOOST_TEST( p.leaf() == "foo" );
BOOST_TEST( p.system_specific_root() == "c:" );
BOOST_TEST( p.root_directory() == "" );
BOOST_TEST( p.root_path().string() == "c:" );
BOOST_TEST( p.has_root_path() );
BOOST_TEST( p.has_system_specific_root() );
BOOST_TEST( !p.has_root_directory() );
BOOST_TEST( p.has_relative_path() );
BOOST_TEST( p.has_leaf() );
BOOST_TEST( p.has_branch_path() );
BOOST_TEST( !p.is_complete() );
p = path( "c:/", fs::system_specific );
BOOST_TEST( p.relative_path().string() == "" );
BOOST_TEST( p.branch_path().string() == "c:" );
BOOST_TEST( p.leaf() == "/" );
BOOST_TEST( p.system_specific_root() == "c:" );
BOOST_TEST( p.root_directory() == "/" );
BOOST_TEST( p.root_path().string() == "c:/" );
BOOST_TEST( p.has_root_path() );
BOOST_TEST( p.has_system_specific_root() );
BOOST_TEST( p.has_root_directory() );
BOOST_TEST( !p.has_relative_path() );
BOOST_TEST( p.has_leaf() );
BOOST_TEST( p.has_branch_path() );
BOOST_TEST( p.is_complete() );
BOOST_TEST( path( "c:/", fs::system_specific ).relative_path().string() == "" );
BOOST_TEST( path( "c:/", fs::system_specific ).branch_path().string() == "c:" );
BOOST_TEST( path( "c:/", fs::system_specific ).leaf() == "/" );
BOOST_TEST( path( "c:/", fs::system_specific ).system_specific_root() == "c:" );
BOOST_TEST( path( "c:/", fs::system_specific ).root_directory() == "/" );
BOOST_TEST( path( "c:/", fs::system_specific ).root_path().string() == "c:/" );
p = path( "c:/foo", fs::system_specific );
BOOST_TEST( p.relative_path().string() == "foo" );
BOOST_TEST( p.branch_path().string() == "c:/" );
BOOST_TEST( p.leaf() == "foo" );
BOOST_TEST( p.system_specific_root() == "c:" );
BOOST_TEST( p.root_directory() == "/" );
BOOST_TEST( p.root_path().string() == "c:/" );
BOOST_TEST( p.has_root_path() );
BOOST_TEST( p.has_system_specific_root() );
BOOST_TEST( p.has_root_directory() );
BOOST_TEST( p.has_relative_path() );
BOOST_TEST( p.has_leaf() );
BOOST_TEST( p.has_branch_path() );
BOOST_TEST( p.is_complete() );
BOOST_TEST( path( "c:/foo", fs::system_specific ).relative_path().string() == "foo" );
BOOST_TEST( path( "c:/foo", fs::system_specific ).branch_path().string() == "c:/" );
BOOST_TEST( path( "c:/foo", fs::system_specific ).leaf() == "foo" );
BOOST_TEST( path( "c:/foo", fs::system_specific ).system_specific_root() == "c:" );
BOOST_TEST( path( "c:/foo", fs::system_specific ).root_directory() == "/" );
BOOST_TEST( path( "c:/foo", fs::system_specific ).root_path().string() == "c:/" );
p = path( "//share", fs::system_specific );
BOOST_TEST( p.relative_path().string() == "" );
BOOST_TEST( p.branch_path().string() == "" );
BOOST_TEST( p.leaf() == "//share" );
BOOST_TEST( p.system_specific_root() == "//share" );
BOOST_TEST( p.root_directory() == "/" );
BOOST_TEST( p.root_path().string() == "//share/" );
BOOST_TEST( p.has_root_path() );
BOOST_TEST( p.has_system_specific_root() );
BOOST_TEST( p.has_root_directory() );
BOOST_TEST( !p.has_relative_path() );
BOOST_TEST( p.has_leaf() );
BOOST_TEST( p.has_branch_path() );
BOOST_TEST( p.is_complete() );
BOOST_TEST( path( "//share", fs::system_specific ).relative_path().string() == "" );
BOOST_TEST( path( "//share", fs::system_specific ).branch_path().string() == "" );
BOOST_TEST( path( "//share", fs::system_specific ).leaf() == "//share" );
BOOST_TEST( path( "//share", fs::system_specific ).system_specific_root() == "//share" );
BOOST_TEST( path( "//share", fs::system_specific ).root_directory() == "/" );
BOOST_TEST( path( "//share", fs::system_specific ).root_path().string() == "//share/" );
p = path( "//share/", fs::system_specific );
BOOST_TEST( p.relative_path().string() == "" );
BOOST_TEST( p.branch_path().string() == "//share" );
BOOST_TEST( p.leaf() == "/" );
BOOST_TEST( p.system_specific_root() == "//share" );
BOOST_TEST( p.root_directory() == "/" );
BOOST_TEST( p.root_path().string() == "//share/" );
BOOST_TEST( p.has_root_path() );
BOOST_TEST( p.has_system_specific_root() );
BOOST_TEST( p.has_root_directory() );
BOOST_TEST( !p.has_relative_path() );
BOOST_TEST( p.has_leaf() );
BOOST_TEST( p.has_branch_path() );
BOOST_TEST( p.is_complete() );
BOOST_TEST( path( "//share/", fs::system_specific ).relative_path().string() == "" );
BOOST_TEST( path( "//share/", fs::system_specific ).branch_path().string() == "//share" );
BOOST_TEST( path( "//share/", fs::system_specific ).leaf() == "/" );
BOOST_TEST( path( "//share/", fs::system_specific ).system_specific_root() == "//share" );
BOOST_TEST( path( "//share/", fs::system_specific ).root_directory() == "/" );
BOOST_TEST( path( "//share/", fs::system_specific ).root_path().string() == "//share/" );
p = path( "//share/foo", fs::system_specific );
BOOST_TEST( p.relative_path().string() == "foo" );
BOOST_TEST( p.branch_path().string() == "//share/" );
BOOST_TEST( p.leaf() == "foo" );
BOOST_TEST( p.system_specific_root() == "//share" );
BOOST_TEST( p.root_directory() == "/" );
BOOST_TEST( p.root_path().string() == "//share/" );
BOOST_TEST( p.has_root_path() );
BOOST_TEST( p.has_system_specific_root() );
BOOST_TEST( p.has_root_directory() );
BOOST_TEST( p.has_relative_path() );
BOOST_TEST( p.has_leaf() );
BOOST_TEST( p.has_branch_path() );
BOOST_TEST( p.is_complete() );
BOOST_TEST( path( "//share/foo", fs::system_specific ).relative_path().string() == "foo" );
BOOST_TEST( path( "//share/foo", fs::system_specific ).branch_path().string() == "//share/" );
BOOST_TEST( path( "//share/foo", fs::system_specific ).leaf() == "foo" );
BOOST_TEST( path( "//share/foo", fs::system_specific ).system_specific_root() == "//share" );
BOOST_TEST( path( "//share/foo", fs::system_specific ).root_directory() == "/" );
BOOST_TEST( path( "//share/foo", fs::system_specific ).root_path().string() == "//share/" );
BOOST_TEST( path( "prn:", fs::system_specific ).relative_path().string() == "" );
BOOST_TEST( path( "prn:", fs::system_specific ).branch_path().string() == "" );
BOOST_TEST( path( "prn:", fs::system_specific ).leaf() == "prn:" );
BOOST_TEST( path( "prn:", fs::system_specific ).system_specific_root() == "prn:" );
BOOST_TEST( path( "prn:", fs::system_specific ).root_directory() == "" );
BOOST_TEST( path( "prn:", fs::system_specific ).root_path().string() == "prn:" );
p = path( "prn:", fs::system_specific );
BOOST_TEST( p.relative_path().string() == "" );
BOOST_TEST( p.branch_path().string() == "" );
BOOST_TEST( p.leaf() == "prn:" );
BOOST_TEST( p.system_specific_root() == "prn:" );
BOOST_TEST( p.root_directory() == "" );
BOOST_TEST( p.root_path().string() == "prn:" );
BOOST_TEST( p.has_root_path() );
BOOST_TEST( p.has_system_specific_root() );
BOOST_TEST( !p.has_root_directory() );
BOOST_TEST( !p.has_relative_path() );
BOOST_TEST( p.has_leaf() );
BOOST_TEST( !p.has_branch_path() );
BOOST_TEST( p.is_complete() );
itr_ck = path( "c:", fs::system_specific );
BOOST_TEST( *itr_ck.begin() == std::string( "c:" ) );