#include #include using namespace ::testing; using namespace ::cppfs; TEST(path_tests, ctor_string) { path p("some/test/path"); EXPECT_EQ(p.status(), path_status::none); EXPECT_EQ(p.parts(), path::string_vector({ "some", "test", "path" })); } TEST(path_tests, ctor_string_relative) { path p0("./some/test/path"); EXPECT_EQ(p0.status(), path_status::relative); EXPECT_EQ(p0.parts(), path::string_vector({ "some", "test", "path" })); path p1("../some/test/path"); EXPECT_EQ(p1.status(), path_status::relative); EXPECT_EQ(p1.parts(), path::string_vector({ "..", "some", "test", "path" })); } TEST(path_tests, ctor_string_absolute) { path p("/some/test/path"); EXPECT_EQ(p.status(), path_status::absoulte); EXPECT_EQ(p.parts(), path::string_vector({ "some", "test", "path" })); } TEST(path_tests, ctor_parts) { EXPECT_EQ("some/test/path", path({ "some", "test", "path" }, path_status::none).str()); EXPECT_EQ("/some/test/path", path({ "some", "test", "path" }, path_status::absoulte).str()); EXPECT_EQ("./some/test/path", path({ "some", "test", "path" }, path_status::relative).str()); } TEST(path_tests, exsists) { EXPECT_TRUE (path("./cppfs") .exsists()); EXPECT_TRUE (path("./cppfs/path_tests.cpp") .exsists()); EXPECT_TRUE (path("./cppfs/directory_tests.cpp") .exsists()); EXPECT_FALSE(path("./cppfs/asd") .exsists()); } TEST(path_tests, is_file) { EXPECT_FALSE(path("./cppfs") .is_file()); EXPECT_TRUE (path("./cppfs/path_tests.cpp") .is_file()); EXPECT_TRUE (path("./cppfs/directory_tests.cpp") .is_file()); EXPECT_FALSE(path("./cppfs/asd") .is_file()); } TEST(path_tests, is_directory) { EXPECT_TRUE (path("./cppfs") .is_directory()); EXPECT_FALSE(path("./cppfs/path_tests.cpp") .is_directory()); EXPECT_FALSE(path("./cppfs/directory_tests.cpp") .is_directory()); EXPECT_FALSE(path("./cppfs/asd") .is_directory()); } TEST(path_tests, base) { auto cwd = path::current().str(); EXPECT_EQ(path("./cppfs/fuuu/bar").base().str(), cwd + "/cppfs/fuuu"); EXPECT_EQ(path("/fuu/bar/../baz").base().str(), "/fuu"); } TEST(path_tests, normalize) { auto cwd = path::current().str(); EXPECT_EQ(path("fuu/../bar/./biz/baz/..").normalize().str(), cwd + "/bar/biz"); EXPECT_EQ(path("fuu/../bar/./biz/baz/..").normalize().str(), cwd + "/bar/biz"); EXPECT_EQ(path("/fuu/../bar/./biz/baz/..").normalize().str(), "/bar/biz"); } TEST(path_tests, extension) { EXPECT_EQ(path("fuu/fuu").extension(), ""); EXPECT_EQ(path("fuu/.fuu").extension(), ""); EXPECT_EQ(path("fuu/fuu.bar").extension(), "bar"); EXPECT_EQ(path("fuu/fuu.bar.biz").extension(), "biz"); } TEST(path_tests, join) { using namespace std::string_literals; EXPECT_EQ(path("fuu/fuu").join("/bar"s).str(), "/bar"); EXPECT_EQ(path("fuu/fuu").join("./bar"s).str(), "fuu/fuu/bar"); EXPECT_EQ(path("fuu/fuu").join("bar"s).str(), "fuu/fuu/bar"); }