#define CATCH_CONFIG_MAIN #include "catch.hpp" #include using namespace std; TEST_CASE ("root") { Path p; CHECK(static_cast(p) == "/"); CHECK(p.basename().empty()); CHECK(static_cast(p.parent()) == "/"); CHECK(p.is_dir()); CHECK_FALSE(p.is_file()); } TEST_CASE ("directory") { std::string path {"/usr/include/c++/"}; Path p {path}; CHECK(p.basename() == "c++"); CHECK(p == path); CHECK(p.parent() == "/usr/include/"s); CHECK_THROWS(p.extension()); // katalog har inte filändelse CHECK(p.is_dir()); CHECK_FALSE(p.is_file()); SECTION ("contains") { Path p2 {"/usr/include/c++/6.1.0/vector"}; Path p3 {"/usr/bin/"}; Path const p4 {"/usr/"}; CHECK(p.contains(p2)); CHECK_FALSE(p.contains(p3)); CHECK(p4.contains(p)); } } TEST_CASE ("file") { Path const f {"/home/eric/fil.txt"}; CHECK(f.is_file()); CHECK_FALSE(f.is_dir()); CHECK(f.parent() == "/home/eric/"s); CHECK(f.parent().parent() == "/home/"s); CHECK(f.basename() == "fil.txt"); CHECK(f.extension() == "txt"); CHECK_THROWS(f.contains(Path{"/usr/share/"})); }