#define BOOST_FILESYSTEM_DEPRECATED
#define BOOST_FILESYSTEM_ALLOW_DEPRECATED
#include <boost/filesystem.hpp>
#include <list>
#include <vector>
#include <boost/core/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);
std::list< char > l; std::list< wchar_t > wl; std::vector< char > v; std::vector< wchar_t > wv;
void check(const fs::path& source, const std::string& expected, int line)
{
if (source.generic_string() == expected)
return;
++::boost::detail::test_errors();
std::cout << __FILE__ << '(' << line << ") source.string(): \"" << source.string()
<< "\" != expected: \"" << expected
<< "\"" << std::endl;
}
void path_container_ctor_test()
{
path x4v(v); PATH_CHECK(x4v, "fuz");
BOOST_TEST_EQ(x4v.native().size(), 3U);
path x5v(wv); PATH_CHECK(x5v, "wfuz");
BOOST_TEST_EQ(x5v.native().size(), 4U);
path x10(l); PATH_CHECK(x10, "string");
BOOST_TEST_EQ(x10.native().size(), 6U);
path xll(wl); PATH_CHECK(xll, "wstring");
BOOST_TEST_EQ(xll.native().size(), 7U);
}
}
int cpp_main(int , char* [])
{
platform = (platform == "Win32" || platform == "Win64" || platform == "Cygwin") ? "Windows" : "POSIX";
std::cout << "Platform is " << platform << '\n';
l.push_back('s');
l.push_back('t');
l.push_back('r');
l.push_back('i');
l.push_back('n');
l.push_back('g');
wl.push_back(L'w');
wl.push_back(L's');
wl.push_back(L't');
wl.push_back(L'r');
wl.push_back(L'i');
wl.push_back(L'n');
wl.push_back(L'g');
v.push_back('f');
v.push_back('u');
v.push_back('z');
wv.push_back(L'w');
wv.push_back(L'f');
wv.push_back(L'u');
wv.push_back(L'z');
BOOST_TEST(fs::initial_path() == fs::current_path());
fs::directory_entry de("foo.bar", fs::file_status(fs::regular_file, fs::owner_all), fs::file_status(fs::directory_file, fs::group_all));
BOOST_TEST(de.path() == "foo.bar");
BOOST_TEST(de.status() == fs::file_status(fs::regular_file, fs::owner_all));
BOOST_TEST(de.symlink_status() == fs::file_status(fs::directory_file, fs::group_all));
BOOST_TEST(de < fs::directory_entry("goo.bar", fs::file_status(), fs::file_status()));
BOOST_TEST(de == fs::directory_entry("foo.bar", fs::file_status(), fs::file_status()));
BOOST_TEST(de != fs::directory_entry("goo.bar", fs::file_status(), fs::file_status()));
de.replace_filename("bar.foo", fs::file_status(), fs::file_status());
BOOST_TEST(de.path() == "bar.foo");
const fs::path temp_dir(fs::current_path() / ".." / fs::unique_path("deprecated_test-%%%%-%%%%-%%%%"));
std::cout << "temp_dir is " << temp_dir.string() << std::endl;
fs::create_directory(temp_dir);
path_container_ctor_test();
std::cout << "post-test removal of " << temp_dir << std::endl;
BOOST_TEST(fs::remove_all(temp_dir) != 0);
return ::boost::report_errors();
}