| 437 | // directory_iterator_tests --------------------------------------------------------// |
| 438 | |
| 439 | void directory_iterator_tests() |
| 440 | { |
| 441 | cout << "directory_iterator_tests..." << endl; |
| 442 | |
| 443 | bool dir_itr_exception(false); |
| 444 | try { fs::directory_iterator it(""); } |
| 445 | catch (const fs::filesystem_error &) { dir_itr_exception = true; } |
| 446 | BOOST_TEST(dir_itr_exception); |
| 447 | |
| 448 | error_code ec; |
| 449 | |
| 450 | BOOST_TEST(!ec); |
| 451 | fs::directory_iterator it("", ec); |
| 452 | BOOST_TEST(ec); |
| 453 | |
| 454 | dir_itr_exception = false; |
| 455 | try { fs::directory_iterator it("nosuchdirectory"); } |
| 456 | catch (const fs::filesystem_error &) { dir_itr_exception = true; } |
| 457 | BOOST_TEST(dir_itr_exception); |
| 458 | |
| 459 | ec.clear(); |
| 460 | fs::directory_iterator it2("nosuchdirectory", ec); |
| 461 | BOOST_TEST(ec); |
| 462 | |
| 463 | dir_itr_exception = false; |
| 464 | try |
| 465 | { |
| 466 | error_code ec; |
| 467 | fs::directory_iterator it("nosuchdirectory", ec); |
| 468 | BOOST_TEST(ec); |
| 469 | BOOST_TEST(ec == boost::system::errc::no_such_file_or_directory); |
| 470 | } |
| 471 | catch (const fs::filesystem_error &) { dir_itr_exception = true; } |
| 472 | BOOST_TEST(!dir_itr_exception); |
| 473 | |
| 474 | // create a second directory named d2 |
| 475 | d2 = dir / "d2"; |
| 476 | fs::create_directory(d2); |
| 477 | BOOST_TEST(fs::exists(d2)); |
| 478 | BOOST_TEST(fs::is_directory(d2)); |
| 479 | |
| 480 | // test the basic operation of directory_iterators, and test that |
| 481 | // stepping one iterator doesn't affect a different iterator. |
| 482 | { |
| 483 | typedef std::vector<fs::directory_entry> vec_type; |
| 484 | vec_type vec; |
| 485 | |
| 486 | fs::directory_iterator it1(dir); |
| 487 | BOOST_TEST(it1 != fs::directory_iterator()); |
| 488 | BOOST_TEST(fs::exists(it1->status())); |
| 489 | vec.push_back(*it1); |
| 490 | BOOST_TEST(*it1 == vec[0]); |
| 491 | |
| 492 | fs::directory_iterator it2(dir); |
| 493 | BOOST_TEST(it2 != fs::directory_iterator()); |
| 494 | BOOST_TEST(*it1 == *it2); |
| 495 | |
| 496 | ++it1; |
no test coverage detected