xref: /openbmc/phosphor-logging/test/openpower-pels/generic_section_test.cpp (revision 40fb54935ce7367636a7156039396ee91cc4d5e2)
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