]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/filesystem/test/deprecated_test.cpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / libs / filesystem / test / deprecated_test.cpp
CommitLineData
7c673cae
FG
1// deprecated_test program --------------------------------------------------//
2
3// Copyright Beman Dawes 2002
4// Copyright Vladimir Prus 2002
5
6// Distributed under the Boost Software License, Version 1.0.
7// See http://www.boost.org/LICENSE_1_0.txt
8
9// Library home page: http://www.boost.org/libs/filesystem
10
11// This test verifies that various deprecated names still work. This is
12// important to preserve existing code that uses the old names.
13
14#define BOOST_FILESYSTEM_DEPRECATED
15
16#include <boost/filesystem.hpp>
17
18#include <boost/config.hpp>
19# if defined( BOOST_NO_STD_WSTRING )
20# error Configuration not supported: Boost.Filesystem V3 and later requires std::wstring support
21# endif
22
23#include <boost/detail/lightweight_test.hpp>
24#include <boost/detail/lightweight_main.hpp>
25
26namespace fs = boost::filesystem;
27using boost::filesystem::path;
28
29#define PATH_CHECK(a, b) check(a, b, __LINE__)
30
31namespace
32{
33 std::string platform(BOOST_PLATFORM);
34
35 void check(const fs::path & source,
36 const std::string & expected, int line)
37 {
38 if (source.generic_string()== expected) return;
39
40 ++::boost::detail::test_errors();
41
42 std::cout << '(' << line << ") source.string(): \"" << source.string()
43 << "\" != expected: \"" << expected
44 << "\"" << std::endl;
45 }
46
47 void normalize_test()
48 {
49 PATH_CHECK(path("").normalize(), "");
50 PATH_CHECK(path("/").normalize(), "/");
51 PATH_CHECK(path("//").normalize(), "//");
52 PATH_CHECK(path("///").normalize(), "/");
53 PATH_CHECK(path("f").normalize(), "f");
54 PATH_CHECK(path("foo").normalize(), "foo");
55 PATH_CHECK(path("foo/").normalize(), "foo/.");
56 PATH_CHECK(path("f/").normalize(), "f/.");
57 PATH_CHECK(path("/foo").normalize(), "/foo");
58 PATH_CHECK(path("foo/bar").normalize(), "foo/bar");
59 PATH_CHECK(path("..").normalize(), "..");
60 PATH_CHECK(path("../..").normalize(), "../..");
61 PATH_CHECK(path("/..").normalize(), "/..");
62 PATH_CHECK(path("/../..").normalize(), "/../..");
63 PATH_CHECK(path("../foo").normalize(), "../foo");
64 PATH_CHECK(path("foo/..").normalize(), ".");
65 PATH_CHECK(path("foo/../").normalize(), "./.");
66 PATH_CHECK((path("foo") / "..").normalize() , ".");
67 PATH_CHECK(path("foo/...").normalize(), "foo/...");
68 PATH_CHECK(path("foo/.../").normalize(), "foo/.../.");
69 PATH_CHECK(path("foo/..bar").normalize(), "foo/..bar");
70 PATH_CHECK(path("../f").normalize(), "../f");
71 PATH_CHECK(path("/../f").normalize(), "/../f");
72 PATH_CHECK(path("f/..").normalize(), ".");
73 PATH_CHECK((path("f") / "..").normalize() , ".");
74 PATH_CHECK(path("foo/../..").normalize(), "..");
75 PATH_CHECK(path("foo/../../").normalize(), "../.");
76 PATH_CHECK(path("foo/../../..").normalize(), "../..");
77 PATH_CHECK(path("foo/../../../").normalize(), "../../.");
78 PATH_CHECK(path("foo/../bar").normalize(), "bar");
79 PATH_CHECK(path("foo/../bar/").normalize(), "bar/.");
80 PATH_CHECK(path("foo/bar/..").normalize(), "foo");
81 PATH_CHECK(path("foo/bar/../").normalize(), "foo/.");
82 PATH_CHECK(path("foo/bar/../..").normalize(), ".");
83 PATH_CHECK(path("foo/bar/../../").normalize(), "./.");
84 PATH_CHECK(path("foo/bar/../blah").normalize(), "foo/blah");
85 PATH_CHECK(path("f/../b").normalize(), "b");
86 PATH_CHECK(path("f/b/..").normalize(), "f");
87 PATH_CHECK(path("f/b/../").normalize(), "f/.");
88 PATH_CHECK(path("f/b/../a").normalize(), "f/a");
89 PATH_CHECK(path("foo/bar/blah/../..").normalize(), "foo");
90 PATH_CHECK(path("foo/bar/blah/../../bletch").normalize(), "foo/bletch");
91 PATH_CHECK(path("//net").normalize(), "//net");
92 PATH_CHECK(path("//net/").normalize(), "//net/");
93 PATH_CHECK(path("//..net").normalize(), "//..net");
94 PATH_CHECK(path("//net/..").normalize(), "//net/..");
95 PATH_CHECK(path("//net/foo").normalize(), "//net/foo");
96 PATH_CHECK(path("//net/foo/").normalize(), "//net/foo/.");
97 PATH_CHECK(path("//net/foo/..").normalize(), "//net/");
98 PATH_CHECK(path("//net/foo/../").normalize(), "//net/.");
99
100 PATH_CHECK(path("/net/foo/bar").normalize(), "/net/foo/bar");
101 PATH_CHECK(path("/net/foo/bar/").normalize(), "/net/foo/bar/.");
102 PATH_CHECK(path("/net/foo/..").normalize(), "/net");
103 PATH_CHECK(path("/net/foo/../").normalize(), "/net/.");
104
105 PATH_CHECK(path("//net//foo//bar").normalize(), "//net/foo/bar");
106 PATH_CHECK(path("//net//foo//bar//").normalize(), "//net/foo/bar/.");
107 PATH_CHECK(path("//net//foo//..").normalize(), "//net/");
108 PATH_CHECK(path("//net//foo//..//").normalize(), "//net/.");
109
110 PATH_CHECK(path("///net///foo///bar").normalize(), "/net/foo/bar");
111 PATH_CHECK(path("///net///foo///bar///").normalize(), "/net/foo/bar/.");
112 PATH_CHECK(path("///net///foo///..").normalize(), "/net");
113 PATH_CHECK(path("///net///foo///..///").normalize(), "/net/.");
114
115 if (platform == "Windows")
116 {
117 PATH_CHECK(path("c:..").normalize(), "c:..");
118 PATH_CHECK(path("c:foo/..").normalize(), "c:");
119
120 PATH_CHECK(path("c:foo/../").normalize(), "c:.");
121
122 PATH_CHECK(path("c:/foo/..").normalize(), "c:/");
123 PATH_CHECK(path("c:/foo/../").normalize(), "c:/.");
124 PATH_CHECK(path("c:/..").normalize(), "c:/..");
125 PATH_CHECK(path("c:/../").normalize(), "c:/../.");
126 PATH_CHECK(path("c:/../..").normalize(), "c:/../..");
127 PATH_CHECK(path("c:/../../").normalize(), "c:/../../.");
128 PATH_CHECK(path("c:/../foo").normalize(), "c:/../foo");
129 PATH_CHECK(path("c:/../foo/").normalize(), "c:/../foo/.");
130 PATH_CHECK(path("c:/../../foo").normalize(), "c:/../../foo");
131 PATH_CHECK(path("c:/../../foo/").normalize(), "c:/../../foo/.");
132 PATH_CHECK(path("c:/..foo").normalize(), "c:/..foo");
133 }
134 else // POSIX
135 {
136 PATH_CHECK(path("c:..").normalize(), "c:..");
137 PATH_CHECK(path("c:foo/..").normalize(), ".");
138 PATH_CHECK(path("c:foo/../").normalize(), "./.");
139 PATH_CHECK(path("c:/foo/..").normalize(), "c:");
140 PATH_CHECK(path("c:/foo/../").normalize(), "c:/.");
141 PATH_CHECK(path("c:/..").normalize(), ".");
142 PATH_CHECK(path("c:/../").normalize(), "./.");
143 PATH_CHECK(path("c:/../..").normalize(), "..");
144 PATH_CHECK(path("c:/../../").normalize(), "../.");
145 PATH_CHECK(path("c:/../foo").normalize(), "foo");
146 PATH_CHECK(path("c:/../foo/").normalize(), "foo/.");
147 PATH_CHECK(path("c:/../../foo").normalize(), "../foo");
148 PATH_CHECK(path("c:/../../foo/").normalize(), "../foo/.");
149 PATH_CHECK(path("c:/..foo").normalize(), "c:/..foo");
150 }
151 }
152
153 // misc_test ------------------------------------------------------------------------//
154
155 void misc_test()
156 {
157 fs::path p;
158
159 fs::initial_path<fs::path>();
160 fs::initial_path<fs::wpath>();
161
162 p.file_string();
163 p.directory_string();
164 }
165
166 // path_rename_test -----------------------------------------------------------------//
167
168 void path_rename_test()
169 {
170 fs::path p("foo/bar/blah");
171
172 BOOST_TEST_EQ(path("foo/bar/blah").remove_leaf(), "foo/bar");
173 BOOST_TEST_EQ(p.leaf(), "blah");
174 BOOST_TEST_EQ(p.branch_path(), "foo/bar");
175 BOOST_TEST(p.has_leaf());
176 BOOST_TEST(p.has_branch_path());
177 BOOST_TEST(!p.is_complete());
178
179 if (platform == "Windows")
180 {
181 BOOST_TEST_EQ(path("foo\\bar\\blah").remove_leaf(), "foo\\bar");
182 p = "foo\\bar\\blah";
183 BOOST_TEST_EQ(p.branch_path(), "foo\\bar");
184 }
185 }
186
187} // unnamed namespace
188
189
190//--------------------------------------------------------------------------------------//
191
192int cpp_main(int /*argc*/, char* /*argv*/[])
193{
194 // The choice of platform is make at runtime rather than compile-time
195 // so that compile errors for all platforms will be detected even though
196 // only the current platform is runtime tested.
197 platform = (platform == "Win32" || platform == "Win64" || platform == "Cygwin")
198 ? "Windows"
199 : "POSIX";
200 std::cout << "Platform is " << platform << '\n';
201
202 BOOST_TEST(fs::initial_path() == fs::current_path());
203
204 //path::default_name_check(fs::no_check);
205
206 fs::directory_entry de("foo/bar");
207
208 de.replace_leaf("", fs::file_status(), fs::file_status());
209
210 //de.leaf();
211 //de.string();
212
213 fs::path ng(" no-way, Jose");
214 BOOST_TEST(!fs::is_regular(ng)); // verify deprecated name still works
215 BOOST_TEST(!fs::symbolic_link_exists("nosuchfileordirectory"));
216
217 misc_test();
218 path_rename_test();
219 normalize_test();
b32b8144 220 BOOST_TEST(fs::path("foo/bar").generic() == fs::path("foo/bar"));
7c673cae
FG
221
222// extension() tests ---------------------------------------------------------//
223
224 BOOST_TEST(fs::extension("a/b") == "");
225 BOOST_TEST(fs::extension("a/b.txt") == ".txt");
226 BOOST_TEST(fs::extension("a/b.") == ".");
227 BOOST_TEST(fs::extension("a.b.c") == ".c");
228 BOOST_TEST(fs::extension("a.b.c.") == ".");
229 BOOST_TEST(fs::extension("") == "");
230 BOOST_TEST(fs::extension("a/") == "");
231
232// basename() tests ----------------------------------------------------------//
233
234 BOOST_TEST(fs::basename("b") == "b");
235 BOOST_TEST(fs::basename("a/b.txt") == "b");
236 BOOST_TEST(fs::basename("a/b.") == "b");
237 BOOST_TEST(fs::basename("a.b.c") == "a.b");
238 BOOST_TEST(fs::basename("a.b.c.") == "a.b.c");
239 BOOST_TEST(fs::basename("") == "");
240
241// change_extension tests ---------------------------------------------------//
242
243 BOOST_TEST(fs::change_extension("a.txt", ".tex").string() == "a.tex");
244 BOOST_TEST(fs::change_extension("a.", ".tex").string() == "a.tex");
245 BOOST_TEST(fs::change_extension("a", ".txt").string() == "a.txt");
246 BOOST_TEST(fs::change_extension("a.b.txt", ".tex").string() == "a.b.tex");
247 // see the rationale in html docs for explanation why this works
248 BOOST_TEST(fs::change_extension("", ".png").string() == ".png");
249
250 return ::boost::report_errors();
251}