You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

113 lines
3.0 KiB

  1. #include <gtest/gtest.h>
  2. #include <cppfs.h>
  3. using namespace ::testing;
  4. using namespace ::cppfs;
  5. TEST(path_tests, ctor_string)
  6. {
  7. path p("some/test/path");
  8. EXPECT_EQ(p.status(), path_status::none);
  9. EXPECT_EQ(p.parts(), path::string_vector({ "some", "test", "path" }));
  10. }
  11. TEST(path_tests, ctor_string_relative)
  12. {
  13. path p0("./some/test/path");
  14. EXPECT_EQ(p0.status(), path_status::relative);
  15. EXPECT_EQ(p0.parts(), path::string_vector({ "some", "test", "path" }));
  16. path p1("../some/test/path");
  17. EXPECT_EQ(p1.status(), path_status::relative);
  18. EXPECT_EQ(p1.parts(), path::string_vector({ "..", "some", "test", "path" }));
  19. }
  20. TEST(path_tests, ctor_string_absolute)
  21. {
  22. path p("/some/test/path");
  23. EXPECT_EQ(p.status(), path_status::absoulte);
  24. EXPECT_EQ(p.parts(), path::string_vector({ "some", "test", "path" }));
  25. }
  26. TEST(path_tests, ctor_parts)
  27. {
  28. EXPECT_EQ("some/test/path", path({ "some", "test", "path" }, path_status::none).str());
  29. EXPECT_EQ("/some/test/path", path({ "some", "test", "path" }, path_status::absoulte).str());
  30. EXPECT_EQ("./some/test/path", path({ "some", "test", "path" }, path_status::relative).str());
  31. }
  32. TEST(path_tests, exsists)
  33. {
  34. EXPECT_TRUE (path("./cppfs")
  35. .exsists());
  36. EXPECT_TRUE (path("./cppfs/path_tests.cpp")
  37. .exsists());
  38. EXPECT_TRUE (path("./cppfs/directory_tests.cpp")
  39. .exsists());
  40. EXPECT_FALSE(path("./cppfs/asd")
  41. .exsists());
  42. }
  43. TEST(path_tests, is_file)
  44. {
  45. EXPECT_FALSE(path("./cppfs")
  46. .is_file());
  47. EXPECT_TRUE (path("./cppfs/path_tests.cpp")
  48. .is_file());
  49. EXPECT_TRUE (path("./cppfs/directory_tests.cpp")
  50. .is_file());
  51. EXPECT_FALSE(path("./cppfs/asd")
  52. .is_file());
  53. }
  54. TEST(path_tests, is_directory)
  55. {
  56. EXPECT_TRUE (path("./cppfs")
  57. .is_directory());
  58. EXPECT_FALSE(path("./cppfs/path_tests.cpp")
  59. .is_directory());
  60. EXPECT_FALSE(path("./cppfs/directory_tests.cpp")
  61. .is_directory());
  62. EXPECT_FALSE(path("./cppfs/asd")
  63. .is_directory());
  64. }
  65. TEST(path_tests, base)
  66. {
  67. auto cwd = path::current().str();
  68. EXPECT_EQ(path("./cppfs/fuuu/bar").base().str(), cwd + "/cppfs/fuuu");
  69. EXPECT_EQ(path("/fuu/bar/../baz").base().str(), "/fuu");
  70. }
  71. TEST(path_tests, normalize)
  72. {
  73. auto cwd = path::current().str();
  74. EXPECT_EQ(path("fuu/../bar/./biz/baz/..").normalize().str(), cwd + "/bar/biz");
  75. EXPECT_EQ(path("fuu/../bar/./biz/baz/..").normalize().str(), cwd + "/bar/biz");
  76. EXPECT_EQ(path("/fuu/../bar/./biz/baz/..").normalize().str(), "/bar/biz");
  77. }
  78. TEST(path_tests, extension)
  79. {
  80. EXPECT_EQ(path("fuu/fuu").extension(), "");
  81. EXPECT_EQ(path("fuu/.fuu").extension(), "");
  82. EXPECT_EQ(path("fuu/fuu.bar").extension(), "bar");
  83. EXPECT_EQ(path("fuu/fuu.bar.biz").extension(), "biz");
  84. }
  85. TEST(path_tests, join)
  86. {
  87. using namespace std::string_literals;
  88. EXPECT_EQ(path("fuu/fuu").join("/bar"s).str(), "/bar");
  89. EXPECT_EQ(path("fuu/fuu").join("./bar"s).str(), "fuu/fuu/bar");
  90. EXPECT_EQ(path("fuu/fuu").join("bar"s).str(), "fuu/fuu/bar");
  91. }