| #include "libpldmresponder/bios_table.hpp" |
| |
| #include <algorithm> |
| #include <cstdlib> |
| #include <vector> |
| |
| #include <gtest/gtest.h> |
| |
| 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<uint8_t> 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<uint8_t> 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<uint8_t> 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<uint8_t> 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); |
| } |