#include "libpldmresponder/bios_table.hpp" #include #include #include #include using namespace pldm::responder::bios; class TestBIOSTable : public testing::Test { public: void SetUp() override { char tmpdir[] = "/tmp/pldm_bios_table.XXXXXX"; dir = fs::path(mkdtemp(tmpdir)); } void TearDown() override { fs::remove_all(dir); } fs::path dir; }; TEST_F(TestBIOSTable, testStoreLoad) { std::vector table{10, 34, 56, 100, 44, 55, 69, 21, 48, 2, 7, 82}; fs::path file(dir / "t1"); BIOSTable t(file.string().c_str()); std::vector out{}; ASSERT_THROW(t.load(out), fs::filesystem_error); ASSERT_EQ(true, t.isEmpty()); t.store(table); t.load(out); ASSERT_EQ(true, std::equal(table.begin(), table.end(), out.begin())); } TEST_F(TestBIOSTable, testLoadOntoExisting) { std::vector table{10, 34, 56, 100, 44, 55, 69, 21, 48, 2, 7, 82}; fs::path file(dir / "t1"); BIOSTable t(file.string().c_str()); std::vector out{99, 99}; ASSERT_THROW(t.load(out), fs::filesystem_error); ASSERT_EQ(true, t.isEmpty()); t.store(table); t.load(out); ASSERT_EQ(true, std::equal(table.begin(), table.end(), out.begin() + 2)); ASSERT_EQ(out[0], 99); ASSERT_EQ(out[1], 99); }