#ifndef MESSMER_FSPP_FSTEST_TESTUTILS_FILESYSTEMTEST_H_ #define MESSMER_FSPP_FSTEST_TESTUTILS_FILESYSTEMTEST_H_ #include #include #include #include #include #include "../../fs_interface/Device.h" #include "../../fs_interface/Dir.h" #include "../../fs_interface/File.h" #include "../../fs_interface/OpenFile.h" class FileSystemTestFixture { public: virtual std::unique_ptr createDevice() = 0; }; template class FileSystemTest: public ::testing::Test { public: BOOST_STATIC_ASSERT_MSG( (std::is_base_of::value), "Given test fixture for instantiating the (type parameterized) FileSystemTest must inherit from FileSystemTestFixture" ); FileSystemTest(): fixture(), device(fixture.createDevice()) {} ConcreteFileSystemTestFixture fixture; std::unique_ptr device; static constexpr mode_t MODE_PUBLIC = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IWOTH | S_IXOTH; std::unique_ptr LoadDir(const boost::filesystem::path &path) { auto loaded = device->Load(path); auto dir = cpputils::dynamic_pointer_move(loaded); EXPECT_NE(nullptr, dir.get()); return dir; } std::unique_ptr LoadFile(const boost::filesystem::path &path) { auto loaded = device->Load(path); auto file = cpputils::dynamic_pointer_move(loaded); EXPECT_NE(nullptr, file.get()); return file; } }; #endif