Deepak Kodihalli | cb7f2d4 | 2019-06-19 13:25:31 +0530 | [diff] [blame] | 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 | } |