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

Function iterator_tests

test/path_test.cpp:331–651  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

329// iterator_tests ------------------------------------------------------------------//
330
331void iterator_tests()
332{
333 std::cout << "iterator_tests..." << std::endl;
334
335 path itr_ck = "";
336 path::const_iterator itr = itr_ck.begin();
337 BOOST_TEST(itr == itr_ck.end());
338
339 itr_ck = "/";
340 itr = itr_ck.begin();
341 BOOST_TEST(itr->string() == "/");
342 BOOST_TEST(++itr == itr_ck.end());
343 BOOST_TEST((--itr)->string() == "/");
344
345 itr_ck = "foo";
346 BOOST_TEST(*itr_ck.begin() == std::string("foo"));
347 BOOST_TEST(boost::next(itr_ck.begin()) == itr_ck.end());
348 BOOST_TEST(*boost::prior(itr_ck.end()) == std::string("foo"));
349 BOOST_TEST(boost::prior(itr_ck.end()) == itr_ck.begin());
350
351 itr_ck = path("/foo");
352 BOOST_TEST((itr_ck.begin())->string() == "/");
353 BOOST_TEST(*boost::next(itr_ck.begin()) == std::string("foo"));
354 BOOST_TEST(boost::next(boost::next(itr_ck.begin())) == itr_ck.end());
355 BOOST_TEST(boost::next(itr_ck.begin()) == boost::prior(itr_ck.end()));
356 BOOST_TEST(*boost::prior(itr_ck.end()) == std::string("foo"));
357 BOOST_TEST(*boost::prior(boost::prior(itr_ck.end())) == std::string("/"));
358 BOOST_TEST(boost::prior(boost::prior(itr_ck.end())) == itr_ck.begin());
359
360 itr_ck = "/foo/bar";
361 itr = itr_ck.begin();
362 path::const_iterator itr_begin = itr;
363 BOOST_TEST(itr->string() == "/");
364 BOOST_TEST(*++itr == std::string("foo"));
365 BOOST_TEST(*++itr == std::string("bar"));
366 BOOST_TEST(++itr == itr_ck.end());
367 PATH_TEST_EQ(*--itr, "bar");
368 PATH_TEST_EQ(*--itr, "foo");
369 PATH_TEST_EQ(*--itr, "/");
370 BOOST_TEST(itr == itr_begin);
371
372 itr_ck = "../f"; // previously failed due to short name bug
373 itr_begin = itr = itr_ck.begin();
374 PATH_TEST_EQ(itr->string(), "..");
375 PATH_TEST_EQ(*++itr, "f");
376 BOOST_TEST(++itr == itr_ck.end());
377 PATH_TEST_EQ(*--itr, "f");
378 PATH_TEST_EQ(*--itr, "..");
379 BOOST_TEST(itr == itr_begin);
380
381 // POSIX says treat "/foo/bar/" as "/foo/bar/."
382 itr_ck = "/foo/bar/";
383 itr_begin = itr = itr_ck.begin();
384 PATH_TEST_EQ(itr->string(), "/");
385 PATH_TEST_EQ(*++itr, "foo");
386 BOOST_TEST(itr != itr_ck.end());
387 PATH_TEST_EQ(*++itr, "bar");
388 BOOST_TEST(itr != itr_ck.end());

Callers 1

cpp_mainFunction · 0.85

Calls 5

stringFunction · 0.85
stringMethod · 0.80
pathFunction · 0.70
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected