#include #include "file.h" #include #include #include namespace fs = std::filesystem; namespace { const fs::path testFilename{"testfile.txt"}; } // namespace class FileTest: public ::testing::Test { protected: FileTest(){ } ~FileTest() override{ } void SetUp() override { std::error_code ec; fs::remove(testFilename, ec); } void TearDown() override { std::error_code ec; fs::remove(testFilename, ec); } }; TEST_F(FileTest, getFile) { { std::ofstream of(testFilename, std::ios::binary); of << "abc"; } std::string s{Reichwein::File::getFile(testFilename)}; EXPECT_EQ(s, "abc"); } TEST_F(FileTest, getFile_proc) { std::string s{Reichwein::File::getFile("/proc/cmdline")}; EXPECT_GT(s.size(), 0); } TEST_F(FileTest, getFile_not_found) { EXPECT_THROW({Reichwein::File::getFile(testFilename);}, std::runtime_error); } TEST_F(FileTest, setFile) { Reichwein::File::setFile(testFilename, std::string("abc")); std::ifstream f(testFilename, std::ios::binary); std::string s{" "}; EXPECT_EQ(f.readsome(s.data(), s.size()), static_cast(3)); EXPECT_EQ(s, "abc "); } TEST_F(FileTest, setFile_ptr) { std::string s{"abc"}; Reichwein::File::setFile(testFilename, s.data(), s.size()); EXPECT_EQ(Reichwein::File::getFile(testFilename), "abc"); } TEST_F(FileTest, setFile_vector) { std::vector v{1, 2, 3, 4}; Reichwein::File::setFile(testFilename, v); EXPECT_EQ(Reichwein::File::getFile(testFilename), "\x01\x02\x03\x04"); } TEST_F(FileTest, setFile_overwrite) { Reichwein::File::setFile(testFilename, std::string("abc")); Reichwein::File::setFile(testFilename, std::string("def")); EXPECT_EQ(Reichwein::File::getFile(testFilename), "def"); } TEST_F(FileTest, setFile_nonexisting_dir) { EXPECT_THROW({Reichwein::File::setFile(testFilename/testFilename, "abc");}, std::runtime_error); }