MCPcopy Create free account
hub / github.com/boostorg/filesystem / iterator_tests

Function iterator_tests

test/path_test.cpp:166–436  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

164 // iterator_tests ------------------------------------------------------------------//
165
166 void iterator_tests()
167 {
168 std::cout << "iterator_tests..." << std::endl;
169
170 path itr_ck = "";
171 path::const_iterator itr = itr_ck.begin();
172 BOOST_TEST(itr == itr_ck.end());
173
174 itr_ck = "/";
175 itr = itr_ck.begin();
176 BOOST_TEST(itr->string() == "/");
177 BOOST_TEST(++itr == itr_ck.end());
178 BOOST_TEST((--itr)->string() == "/");
179
180 itr_ck = "foo";
181 BOOST_TEST(*itr_ck.begin() == std::string("foo"));
182 BOOST_TEST(boost::next(itr_ck.begin()) == itr_ck.end());
183 BOOST_TEST(*boost::prior(itr_ck.end()) == std::string("foo"));
184 BOOST_TEST(boost::prior(itr_ck.end()) == itr_ck.begin());
185
186 itr_ck = path("/foo");
187 BOOST_TEST((itr_ck.begin())->string() == "/");
188 BOOST_TEST(*boost::next(itr_ck.begin()) == std::string("foo"));
189 BOOST_TEST(boost::next(boost::next(itr_ck.begin())) == itr_ck.end());
190 BOOST_TEST(boost::next(itr_ck.begin()) == boost::prior(itr_ck.end()));
191 BOOST_TEST(*boost::prior(itr_ck.end()) == std::string("foo"));
192 BOOST_TEST(*boost::prior(boost::prior(itr_ck.end())) == std::string("/"));
193 BOOST_TEST(boost::prior(boost::prior(itr_ck.end())) == itr_ck.begin());
194
195 itr_ck = "/foo/bar";
196 itr = itr_ck.begin();
197 BOOST_TEST(itr->string() == "/");
198 BOOST_TEST(*++itr == std::string("foo"));
199 BOOST_TEST(*++itr == std::string("bar"));
200 BOOST_TEST(++itr == itr_ck.end());
201 PATH_TEST_EQ(*--itr, "bar");
202 PATH_TEST_EQ(*--itr, "foo");
203 PATH_TEST_EQ(*--itr, "/");
204
205 itr_ck = "../f"; // previously failed due to short name bug
206 itr = itr_ck.begin();
207 PATH_TEST_EQ(itr->string(), "..");
208 PATH_TEST_EQ(*++itr, "f");
209 BOOST_TEST(++itr == itr_ck.end());
210 PATH_TEST_EQ(*--itr, "f");
211 PATH_TEST_EQ(*--itr, "..");
212
213 // POSIX says treat "/foo/bar/" as "/foo/bar/."
214 itr_ck = "/foo/bar/";
215 itr = itr_ck.begin();
216 PATH_TEST_EQ(itr->string(), "/");
217 PATH_TEST_EQ(*++itr, "foo");
218 BOOST_TEST(itr != itr_ck.end());
219 PATH_TEST_EQ(*++itr, "bar");
220 BOOST_TEST(itr != itr_ck.end());
221 PATH_TEST_EQ(*++itr, ".");
222 BOOST_TEST(itr != itr_ck.end()); // verify the . isn't also seen as end()
223 BOOST_TEST(++itr == itr_ck.end());

Callers 1

cpp_mainFunction · 0.85

Calls 4

beginMethod · 0.80
endMethod · 0.80
stringFunction · 0.70
pathFunction · 0.70

Tested by

no test coverage detected