diff options
Diffstat (limited to 'src/third_party/boost/libs/filesystem/v2/test/deprecated_test.cpp')
| -rw-r--r-- | src/third_party/boost/libs/filesystem/v2/test/deprecated_test.cpp | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/src/third_party/boost/libs/filesystem/v2/test/deprecated_test.cpp b/src/third_party/boost/libs/filesystem/v2/test/deprecated_test.cpp new file mode 100644 index 00000000000..246ffe67136 --- /dev/null +++ b/src/third_party/boost/libs/filesystem/v2/test/deprecated_test.cpp @@ -0,0 +1,205 @@ +// deprecated_test program --------------------------------------------------// + +// Copyright Beman Dawes 2002 +// Copyright Vladimir Prus 2002 + +// Use, modification, and distribution is subject to the Boost Software +// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See library home page at http://www.boost.org/libs/filesystem + +// This test verifies that various deprecated names still compile. This is +// important to preserve existing code that uses the old names. + +#define BOOST_FILESYSTEM_VERSION 2 + +#include <boost/filesystem.hpp> +#include <boost/detail/lightweight_test.hpp> +#include <boost/detail/lightweight_main.hpp> + +namespace fs = boost::filesystem; +using boost::filesystem::path; + +#define PATH_CHECK( a, b ) check( a, b, __LINE__ ) + +namespace +{ + std::string platform( BOOST_PLATFORM ); + + void check( const fs::path & source, + const std::string & expected, int line ) + { + if ( source.string()== expected ) return; + + ++::boost::detail::test_errors(); + + std::cout << '(' << line << ") source.string(): \"" << source.string() + << "\" != expected: \"" << expected + << "\"" << std::endl; + } + + void check_normalize() + { + PATH_CHECK( path("").normalize(), "" ); + PATH_CHECK( path("/").normalize(), "/" ); + PATH_CHECK( path("//").normalize(), "//" ); + PATH_CHECK( path("///").normalize(), "/" ); + PATH_CHECK( path("f").normalize(), "f" ); + PATH_CHECK( path("foo").normalize(), "foo" ); + PATH_CHECK( path("foo/").normalize(), "foo/." ); + PATH_CHECK( path("f/").normalize(), "f/." ); + PATH_CHECK( path( "/foo" ).normalize(), "/foo" ); + PATH_CHECK( path( "foo/bar" ).normalize(), "foo/bar" ); + PATH_CHECK( path("..").normalize(), ".." ); + PATH_CHECK( path("../..").normalize(), "../.." ); + PATH_CHECK( path("/..").normalize(), "/.." ); + PATH_CHECK( path("/../..").normalize(), "/../.." ); + PATH_CHECK( path("../foo").normalize(), "../foo" ); + PATH_CHECK( path("foo/..").normalize(), "." ); + PATH_CHECK( path("foo/../").normalize(), "./." ); + PATH_CHECK( (path("foo") / "..").normalize() , "." ); + PATH_CHECK( path("foo/...").normalize(), "foo/..." ); + PATH_CHECK( path("foo/.../").normalize(), "foo/.../." ); + PATH_CHECK( path("foo/..bar").normalize(), "foo/..bar" ); + PATH_CHECK( path("../f").normalize(), "../f" ); + PATH_CHECK( path("/../f").normalize(), "/../f" ); + PATH_CHECK( path("f/..").normalize(), "." ); + PATH_CHECK( (path("f") / "..").normalize() , "." ); + PATH_CHECK( path("foo/../..").normalize(), ".." ); + PATH_CHECK( path("foo/../../").normalize(), "../." ); + PATH_CHECK( path("foo/../../..").normalize(), "../.." ); + PATH_CHECK( path("foo/../../../").normalize(), "../../." ); + PATH_CHECK( path("foo/../bar").normalize(), "bar" ); + PATH_CHECK( path("foo/../bar/").normalize(), "bar/." ); + PATH_CHECK( path("foo/bar/..").normalize(), "foo" ); + PATH_CHECK( path("foo/bar/../").normalize(), "foo/." ); + PATH_CHECK( path("foo/bar/../..").normalize(), "." ); + PATH_CHECK( path("foo/bar/../../").normalize(), "./." ); + PATH_CHECK( path("foo/bar/../blah").normalize(), "foo/blah" ); + PATH_CHECK( path("f/../b").normalize(), "b" ); + PATH_CHECK( path("f/b/..").normalize(), "f" ); + PATH_CHECK( path("f/b/../").normalize(), "f/." ); + PATH_CHECK( path("f/b/../a").normalize(), "f/a" ); + PATH_CHECK( path("foo/bar/blah/../..").normalize(), "foo" ); + PATH_CHECK( path("foo/bar/blah/../../bletch").normalize(), "foo/bletch" ); + PATH_CHECK( path( "//net" ).normalize(), "//net" ); + PATH_CHECK( path( "//net/" ).normalize(), "//net/" ); + PATH_CHECK( path( "//..net" ).normalize(), "//..net" ); + PATH_CHECK( path( "//net/.." ).normalize(), "//net/.." ); + PATH_CHECK( path( "//net/foo" ).normalize(), "//net/foo" ); + PATH_CHECK( path( "//net/foo/" ).normalize(), "//net/foo/." ); + PATH_CHECK( path( "//net/foo/.." ).normalize(), "//net/" ); + PATH_CHECK( path( "//net/foo/../" ).normalize(), "//net/." ); + + PATH_CHECK( path( "/net/foo/bar" ).normalize(), "/net/foo/bar" ); + PATH_CHECK( path( "/net/foo/bar/" ).normalize(), "/net/foo/bar/." ); + PATH_CHECK( path( "/net/foo/.." ).normalize(), "/net" ); + PATH_CHECK( path( "/net/foo/../" ).normalize(), "/net/." ); + + PATH_CHECK( path( "//net//foo//bar" ).normalize(), "//net/foo/bar" ); + PATH_CHECK( path( "//net//foo//bar//" ).normalize(), "//net/foo/bar/." ); + PATH_CHECK( path( "//net//foo//.." ).normalize(), "//net/" ); + PATH_CHECK( path( "//net//foo//..//" ).normalize(), "//net/." ); + + PATH_CHECK( path( "///net///foo///bar" ).normalize(), "/net/foo/bar" ); + PATH_CHECK( path( "///net///foo///bar///" ).normalize(), "/net/foo/bar/." ); + PATH_CHECK( path( "///net///foo///.." ).normalize(), "/net" ); + PATH_CHECK( path( "///net///foo///..///" ).normalize(), "/net/." ); + + if ( platform == "Windows" ) + { + PATH_CHECK( path( "c:.." ).normalize(), "c:.." ); + PATH_CHECK( path( "c:foo/.." ).normalize(), "c:" ); + + PATH_CHECK( path( "c:foo/../" ).normalize(), "c:." ); + + PATH_CHECK( path( "c:/foo/.." ).normalize(), "c:/" ); + PATH_CHECK( path( "c:/foo/../" ).normalize(), "c:/." ); + PATH_CHECK( path( "c:/.." ).normalize(), "c:/.." ); + PATH_CHECK( path( "c:/../" ).normalize(), "c:/../." ); + PATH_CHECK( path( "c:/../.." ).normalize(), "c:/../.." ); + PATH_CHECK( path( "c:/../../" ).normalize(), "c:/../../." ); + PATH_CHECK( path( "c:/../foo" ).normalize(), "c:/../foo" ); + PATH_CHECK( path( "c:/../foo/" ).normalize(), "c:/../foo/." ); + PATH_CHECK( path( "c:/../../foo" ).normalize(), "c:/../../foo" ); + PATH_CHECK( path( "c:/../../foo/" ).normalize(), "c:/../../foo/." ); + PATH_CHECK( path( "c:/..foo" ).normalize(), "c:/..foo" ); + } + else // POSIX + { + PATH_CHECK( path( "c:.." ).normalize(), "c:.." ); + PATH_CHECK( path( "c:foo/.." ).normalize(), "." ); + PATH_CHECK( path( "c:foo/../" ).normalize(), "./." ); + PATH_CHECK( path( "c:/foo/.." ).normalize(), "c:" ); + PATH_CHECK( path( "c:/foo/../" ).normalize(), "c:/." ); + PATH_CHECK( path( "c:/.." ).normalize(), "." ); + PATH_CHECK( path( "c:/../" ).normalize(), "./." ); + PATH_CHECK( path( "c:/../.." ).normalize(), ".." ); + PATH_CHECK( path( "c:/../../" ).normalize(), "../." ); + PATH_CHECK( path( "c:/../foo" ).normalize(), "foo" ); + PATH_CHECK( path( "c:/../foo/" ).normalize(), "foo/." ); + PATH_CHECK( path( "c:/../../foo" ).normalize(), "../foo" ); + PATH_CHECK( path( "c:/../../foo/" ).normalize(), "../foo/." ); + PATH_CHECK( path( "c:/..foo" ).normalize(), "c:/..foo" ); + } + } +} // unnamed namespace + +//----------------------------------------------------------------------------// + +int cpp_main( int /*argc*/, char * /*argv*/[] ) +{ + // The choice of platform is make at runtime rather than compile-time + // so that compile errors for all platforms will be detected even though + // only the current platform is runtime tested. + platform = ( platform == "Win32" || platform == "Win64" || platform == "Cygwin" ) + ? "Windows" + : "POSIX"; + std::cout << "Platform is " << platform << '\n'; + + path::default_name_check( fs::no_check ); + + fs::directory_entry de( "foo/bar" ); + + de.replace_leaf( "", fs::file_status(), fs::file_status() ); + + de.leaf(); + de.string(); + + fs::path ng( " no-way, Jose" ); + BOOST_TEST( !fs::is_regular( ng ) ); // verify deprecated name still works + BOOST_TEST( !fs::symbolic_link_exists( "nosuchfileordirectory" ) ); + + check_normalize(); + +// extension() tests ---------------------------------------------------------// + + BOOST_TEST( fs::extension("a/b") == "" ); + BOOST_TEST( fs::extension("a/b.txt") == ".txt" ); + BOOST_TEST( fs::extension("a/b.") == "." ); + BOOST_TEST( fs::extension("a.b.c") == ".c" ); + BOOST_TEST( fs::extension("a.b.c.") == "." ); + BOOST_TEST( fs::extension("") == "" ); + BOOST_TEST( fs::extension("a/") == "." ); + +// basename() tests ----------------------------------------------------------// + + BOOST_TEST( fs::basename("b") == "b" ); + BOOST_TEST( fs::basename("a/b.txt") == "b" ); + BOOST_TEST( fs::basename("a/b.") == "b" ); + BOOST_TEST( fs::basename("a.b.c") == "a.b" ); + BOOST_TEST( fs::basename("a.b.c.") == "a.b.c" ); + BOOST_TEST( fs::basename("") == "" ); + +// change_extension tests ---------------------------------------------------// + + BOOST_TEST( fs::change_extension("a.txt", ".tex").string() == "a.tex" ); + BOOST_TEST( fs::change_extension("a.", ".tex").string() == "a.tex" ); + BOOST_TEST( fs::change_extension("a", ".txt").string() == "a.txt" ); + BOOST_TEST( fs::change_extension("a.b.txt", ".tex").string() == "a.b.tex" ); + // see the rationale in html docs for explanation why this works + BOOST_TEST( fs::change_extension("", ".png").string() == ".png" ); + + return ::boost::report_errors(); +} |
