blob: 001f840d9ba86e937d3a60fa92efae6e50055439 [file] [log] [blame]
Matt Spinler09d64002019-09-11 14:29:46 -05001#include "extensions/openpower-pels/failing_mtms.hpp"
2#include "mocks.hpp"
3
4#include <gtest/gtest.h>
5
6using namespace openpower::pels;
7using ::testing::Return;
8
9TEST(FailingMTMSTest, SizeTest)
10{
11 EXPECT_EQ(FailingMTMS::flattenedSize(), 28);
12}
13
14TEST(FailingMTMSTest, ConstructorTest)
15{
16 // Note: the TypeModel field is 8B, and the SN field is 12B
17 {
18 MockDataInterface dataIface;
19
20 EXPECT_CALL(dataIface, getMachineTypeModel())
21 .WillOnce(Return("AAAA-BBB"));
22
23 EXPECT_CALL(dataIface, getMachineSerialNumber())
24 .WillOnce(Return("123456789ABC"));
25
26 FailingMTMS fm{dataIface};
27
28 // Check the section header
29 EXPECT_EQ(fm.header().id, 0x4D54);
30 EXPECT_EQ(fm.header().size, FailingMTMS::flattenedSize());
31 EXPECT_EQ(fm.header().version, 0x01);
32 EXPECT_EQ(fm.header().subType, 0x00);
33 EXPECT_EQ(fm.header().componentID, 0x2000);
34
35 EXPECT_EQ(fm.getMachineTypeModel(), "AAAA-BBB");
36 EXPECT_EQ(fm.getMachineSerialNumber(), "123456789ABC");
37 }
38
39 // longer than the max - will truncate
40 {
41 MockDataInterface dataIface;
42
43 EXPECT_CALL(dataIface, getMachineTypeModel())
44 .WillOnce(Return("AAAA-BBBTOOLONG"));
45
46 EXPECT_CALL(dataIface, getMachineSerialNumber())
47 .WillOnce(Return("123456789ABCTOOLONG"));
48
49 FailingMTMS fm{dataIface};
50
51 EXPECT_EQ(fm.getMachineTypeModel(), "AAAA-BBB");
52 EXPECT_EQ(fm.getMachineSerialNumber(), "123456789ABC");
53 }
54
55 // shorter than the max
56 {
57 MockDataInterface dataIface;
58
59 EXPECT_CALL(dataIface, getMachineTypeModel()).WillOnce(Return("A"));
60
61 EXPECT_CALL(dataIface, getMachineSerialNumber()).WillOnce(Return("1"));
62
63 FailingMTMS fm{dataIface};
64
65 EXPECT_EQ(fm.getMachineTypeModel(), "A");
66 EXPECT_EQ(fm.getMachineSerialNumber(), "1");
67 }
68}
69
70TEST(FailingMTMSTest, StreamConstructorTest)
71{
72 std::vector<uint8_t> data{0x4D, 0x54, 0x00, 0x1C, 0x01, 0x00, 0x20,
73 0x00, 'T', 'T', 'T', 'T', '-', 'M',
74 'M', 'M', '1', '2', '3', '4', '5',
75 '6', '7', '8', '9', 'A', 'B', 'C'};
76 Stream stream{data};
77 FailingMTMS fm{stream};
78
79 EXPECT_EQ(fm.valid(), true);
80
81 EXPECT_EQ(fm.header().id, 0x4D54);
82 EXPECT_EQ(fm.header().size, FailingMTMS::flattenedSize());
83 EXPECT_EQ(fm.header().version, 0x01);
84 EXPECT_EQ(fm.header().subType, 0x00);
85 EXPECT_EQ(fm.header().componentID, 0x2000);
86
87 EXPECT_EQ(fm.getMachineTypeModel(), "TTTT-MMM");
88 EXPECT_EQ(fm.getMachineSerialNumber(), "123456789ABC");
89}
90
91TEST(FailingMTMSTest, BadStreamConstructorTest)
92{
93 // too short
94 std::vector<uint8_t> data{
95 0x4D, 0x54, 0x00, 0x1C, 0x01, 0x00, 0x20, 0x00, 'T', 'T',
96 };
97 Stream stream{data};
98 FailingMTMS fm{stream};
99
100 EXPECT_EQ(fm.valid(), false);
101}
102
103TEST(FailingMTMSTest, FlattenTest)
104{
105 std::vector<uint8_t> data{0x4D, 0x54, 0x00, 0x1C, 0x01, 0x00, 0x20,
106 0x00, 'T', 'T', 'T', 'T', '-', 'M',
107 'M', 'M', '1', '2', '3', '4', '5',
108 '6', '7', '8', '9', 'A', 'B', 'C'};
109 Stream stream{data};
110 FailingMTMS fm{stream};
111
112 // flatten and check results
113 std::vector<uint8_t> newData;
114 Stream newStream{newData};
115
116 fm.flatten(newStream);
117 EXPECT_EQ(data, newData);
118}