1 #include "libpldmresponder/bios_table.hpp" 2 3 #include <stdlib.h> 4 5 #include <algorithm> 6 #include <vector> 7 8 #include <gtest/gtest.h> 9 10 using namespace pldm::responder::bios; 11 12 class TestBIOSTable : public testing::Test 13 { 14 public: 15 void SetUp() override 16 { 17 char tmpdir[] = "/tmp/pldm_bios_table.XXXXXX"; 18 dir = fs::path(mkdtemp(tmpdir)); 19 } 20 21 void TearDown() override 22 { 23 fs::remove_all(dir); 24 } 25 26 fs::path dir; 27 }; 28 29 TEST_F(TestBIOSTable, testStoreLoad) 30 { 31 std::vector<uint8_t> table{10, 34, 56, 100, 44, 55, 69, 21, 48, 2, 7, 82}; 32 fs::path file(dir / "t1"); 33 BIOSTable t(file.string().c_str()); 34 std::vector<uint8_t> out{}; 35 36 ASSERT_THROW(t.load(out), fs::filesystem_error); 37 38 ASSERT_EQ(true, t.isEmpty()); 39 40 t.store(table); 41 t.load(out); 42 ASSERT_EQ(true, std::equal(table.begin(), table.end(), out.begin())); 43 } 44 45 TEST_F(TestBIOSTable, testLoadOntoExisting) 46 { 47 std::vector<uint8_t> table{10, 34, 56, 100, 44, 55, 69, 21, 48, 2, 7, 82}; 48 fs::path file(dir / "t1"); 49 BIOSTable t(file.string().c_str()); 50 std::vector<uint8_t> out{99, 99}; 51 52 ASSERT_THROW(t.load(out), fs::filesystem_error); 53 54 ASSERT_EQ(true, t.isEmpty()); 55 56 t.store(table); 57 t.load(out); 58 ASSERT_EQ(true, std::equal(table.begin(), table.end(), out.begin() + 2)); 59 ASSERT_EQ(out[0], 99); 60 ASSERT_EQ(out[1], 99); 61 } 62