summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/filesystem/test/fstream_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/filesystem/test/fstream_test.cpp')
-rw-r--r--src/boost/libs/filesystem/test/fstream_test.cpp164
1 files changed, 164 insertions, 0 deletions
diff --git a/src/boost/libs/filesystem/test/fstream_test.cpp b/src/boost/libs/filesystem/test/fstream_test.cpp
new file mode 100644
index 000000000..77fa5c2c6
--- /dev/null
+++ b/src/boost/libs/filesystem/test/fstream_test.cpp
@@ -0,0 +1,164 @@
+// fstream_test.cpp ------------------------------------------------------------------//
+
+// Copyright Beman Dawes 2002
+
+// Distributed under the Boost Software License, Version 1.0.
+// See http://www.boost.org/LICENSE_1_0.txt
+
+// Library home page: http://www.boost.org/libs/filesystem
+
+#include <boost/config/warning_disable.hpp>
+
+// See deprecated_test for tests of deprecated features
+#ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+#define BOOST_FILESYSTEM_NO_DEPRECATED
+#endif
+#ifndef BOOST_SYSTEM_NO_DEPRECATED
+#define BOOST_SYSTEM_NO_DEPRECATED
+#endif
+
+#include <boost/filesystem/fstream.hpp>
+#include <boost/filesystem/operations.hpp>
+#include <string>
+#include <iostream>
+#include <cstdio> // for std::remove
+
+#include <boost/filesystem/detail/utf8_codecvt_facet.hpp>
+
+namespace fs = boost::filesystem;
+
+#include <boost/config.hpp>
+#ifdef BOOST_NO_STDC_NAMESPACE
+namespace std {
+using ::remove;
+}
+#endif
+
+#include <boost/core/lightweight_test.hpp>
+#include <boost/detail/lightweight_main.hpp>
+
+namespace {
+bool cleanup = true;
+
+void test(const fs::path& p)
+{
+ fs::remove(p);
+ {
+ std::cout << " in test 1\n";
+ fs::filebuf fb1;
+ fb1.open(p, std::ios_base::out);
+ BOOST_TEST(fb1.is_open());
+ }
+ {
+ std::cout << " in test 2\n";
+ fs::filebuf fb2;
+ fb2.open(p, std::ios_base::in);
+ BOOST_TEST(fb2.is_open());
+ }
+ {
+ std::cout << " in test 3\n";
+ fs::ifstream tfs(p);
+ BOOST_TEST(tfs.is_open());
+ }
+ {
+ std::cout << " in test 4\n";
+ fs::ifstream tfs(p / p.filename()); // should fail
+ BOOST_TEST(!tfs.is_open());
+ }
+ {
+ std::cout << " in test 5\n";
+ fs::ifstream tfs(p, std::ios_base::in);
+ BOOST_TEST(tfs.is_open());
+ }
+ {
+ std::cout << " in test 6\n";
+ fs::ifstream tfs;
+ tfs.open(p);
+ BOOST_TEST(tfs.is_open());
+ }
+ {
+ std::cout << " in test 7\n";
+ fs::ifstream tfs;
+ tfs.open(p, std::ios_base::in);
+ BOOST_TEST(tfs.is_open());
+ }
+ {
+ std::cout << " in test 8\n";
+ fs::ofstream tfs(p);
+ BOOST_TEST(tfs.is_open());
+ }
+ {
+ std::cout << " in test 9\n";
+ fs::ofstream tfs(p, std::ios_base::out);
+ BOOST_TEST(tfs.is_open());
+ }
+ {
+ std::cout << " in test 10\n";
+ fs::ofstream tfs;
+ tfs.open(p);
+ BOOST_TEST(tfs.is_open());
+ }
+ {
+ std::cout << " in test 11\n";
+ fs::ofstream tfs;
+ tfs.open(p, std::ios_base::out);
+ BOOST_TEST(tfs.is_open());
+ }
+ {
+ std::cout << " in test 12\n";
+ fs::fstream tfs(p);
+ BOOST_TEST(tfs.is_open());
+ }
+ {
+ std::cout << " in test 13\n";
+ fs::fstream tfs(p, std::ios_base::in | std::ios_base::out);
+ BOOST_TEST(tfs.is_open());
+ }
+ {
+ std::cout << " in test 14\n";
+ fs::fstream tfs;
+ tfs.open(p);
+ BOOST_TEST(tfs.is_open());
+ }
+ {
+ std::cout << " in test 15\n";
+ fs::fstream tfs;
+ tfs.open(p, std::ios_base::in | std::ios_base::out);
+ BOOST_TEST(tfs.is_open());
+ }
+
+ if (cleanup)
+ fs::remove(p);
+
+} // test
+} // unnamed namespace
+
+int cpp_main(int argc, char*[])
+{
+ if (argc > 1)
+ cleanup = false;
+
+ std::cout << "BOOST_FILESYSTEM_C_STR(p) defined as \""
+ << BOOST_STRINGIZE(BOOST_FILESYSTEM_C_STR(p)) << "\"\n";
+
+ // test narrow characters
+ std::cout << "narrow character tests:\n";
+ test("narrow_fstream_test");
+
+ // So that tests are run with known encoding, use Boost UTF-8 codecvt
+ std::locale global_loc = std::locale();
+ std::locale loc(global_loc, new fs::detail::utf8_codecvt_facet());
+ fs::path::imbue(loc);
+
+ // test with some wide characters
+ // \u2780 is circled 1 against white background == e2 9e 80 in UTF-8
+ // \u2781 is circled 2 against white background == e2 9e 81 in UTF-8
+ // \u263A is a white smiling face
+ std::cout << "\nwide character tests:\n";
+ std::wstring ws(L"wide_fstream_test_");
+ ws.push_back(static_cast< wchar_t >(0x2780));
+ ws.push_back(static_cast< wchar_t >(0x263A));
+ test(ws);
+
+ return ::boost::report_errors();
+}