1 // SPDX-License-Identifier: Apache-2.0
2 // SPDX-FileCopyrightText: Copyright 2019 IBM Corporation
3
4 #include "extensions/openpower-pels/generic.hpp"
5 #include "pel_utils.hpp"
6
7 #include <gtest/gtest.h>
8
9 using namespace openpower::pels;
10
TEST(GenericSectionTest,UnflattenFlattenTest)11 TEST(GenericSectionTest, UnflattenFlattenTest)
12 {
13 // Use the private header data
14 auto data = pelDataFactory(TestPELType::privateHeaderSection);
15
16 Stream stream(data);
17 Generic section(stream);
18
19 EXPECT_EQ(section.header().id, 0x5048);
20 EXPECT_EQ(section.header().size, data.size());
21 EXPECT_EQ(section.header().version, 0x01);
22 EXPECT_EQ(section.header().subType, 0x02);
23 EXPECT_EQ(section.header().componentID, 0x0304);
24
25 const auto& sectionData = section.data();
26
27 // The data itself starts after the header
28 EXPECT_EQ(sectionData.size(), data.size() - 8);
29
30 for (size_t i = 0; i < sectionData.size(); i++)
31 {
32 EXPECT_EQ(sectionData[i], (data)[i + 8]);
33 }
34
35 // Now flatten
36 std::vector<uint8_t> newData;
37 Stream newStream(newData);
38 section.flatten(newStream);
39
40 EXPECT_EQ(data, newData);
41 }
42
TEST(GenericSectionTest,BadDataTest)43 TEST(GenericSectionTest, BadDataTest)
44 {
45 // Use the private header data to start with
46 auto data = pelDataFactory(TestPELType::privateHeaderSection);
47 data.resize(4);
48
49 Stream stream(data);
50 Generic section(stream);
51 ASSERT_FALSE(section.valid());
52 }
53