blob: 28a612b3c130b1bb630dcf453e94d22c62f8d83d [file] [log] [blame]
Alexander Hansen40fb5492025-10-28 17:56:12 +01001// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright 2019 IBM Corporation
3
Matt Spinlerb6664332019-09-10 15:24:10 -05004#include "extensions/openpower-pels/mtms.hpp"
5
6#include <gtest/gtest.h>
7
8using namespace openpower::pels;
9
10TEST(MTMSTest, SizeTest)
11{
12 EXPECT_EQ(MTMS::flattenedSize(), 20);
13}
14
15TEST(MTMSTest, ConstructorTest)
16{
17 {
18 std::string tm{"TTTT-MMM"};
19 std::string sn{"123456789ABC"};
20
21 MTMS mtms{tm, sn};
22
Matt Spinlerbe952d22022-07-01 11:30:11 -050023 const std::array<uint8_t, 8> t{'T', 'T', 'T', 'T', '-', 'M', 'M', 'M'};
Matt Spinler4b59f7a2019-10-08 13:55:17 -050024 EXPECT_EQ(t, mtms.machineTypeAndModelRaw());
25 EXPECT_EQ("TTTT-MMM", mtms.machineTypeAndModel());
Matt Spinlerb6664332019-09-10 15:24:10 -050026
Matt Spinlerbe952d22022-07-01 11:30:11 -050027 const std::array<uint8_t, 12> s{'1', '2', '3', '4', '5', '6',
28 '7', '8', '9', 'A', 'B', 'C'};
Matt Spinler4b59f7a2019-10-08 13:55:17 -050029 EXPECT_EQ(s, mtms.machineSerialNumberRaw());
30 EXPECT_EQ("123456789ABC", mtms.machineSerialNumber());
Matt Spinlerb6664332019-09-10 15:24:10 -050031 }
32
33 {
34 // too long- truncate it
35 std::string tm{"TTTT-MMME"};
36 std::string sn{"123456789ABCE"};
37
38 MTMS mtms{tm, sn};
39
Matt Spinlerbe952d22022-07-01 11:30:11 -050040 const std::array<uint8_t, 8> t{'T', 'T', 'T', 'T', '-', 'M', 'M', 'M'};
Matt Spinler4b59f7a2019-10-08 13:55:17 -050041 EXPECT_EQ(t, mtms.machineTypeAndModelRaw());
Matt Spinlerb6664332019-09-10 15:24:10 -050042
Matt Spinlerbe952d22022-07-01 11:30:11 -050043 const std::array<uint8_t, 12> s{'1', '2', '3', '4', '5', '6',
44 '7', '8', '9', 'A', 'B', 'C'};
Matt Spinler4b59f7a2019-10-08 13:55:17 -050045 EXPECT_EQ(s, mtms.machineSerialNumberRaw());
Matt Spinlerb6664332019-09-10 15:24:10 -050046 }
47
48 {
49 // short
50 std::string tm{"TTTT"};
51 std::string sn{"1234"};
52
53 MTMS mtms{tm, sn};
54
Matt Spinlerbe952d22022-07-01 11:30:11 -050055 const std::array<uint8_t, 8> t{'T', 'T', 'T', 'T', 0, 0, 0, 0};
Matt Spinler4b59f7a2019-10-08 13:55:17 -050056 EXPECT_EQ(t, mtms.machineTypeAndModelRaw());
57 EXPECT_EQ("TTTT", mtms.machineTypeAndModel());
Matt Spinlerb6664332019-09-10 15:24:10 -050058
Matt Spinlerbe952d22022-07-01 11:30:11 -050059 const std::array<uint8_t, 12> s{'1', '2', '3', '4', 0, 0,
60 0, 0, 0, 0, 0, 0};
Matt Spinler4b59f7a2019-10-08 13:55:17 -050061 EXPECT_EQ(s, mtms.machineSerialNumberRaw());
62 EXPECT_EQ("1234", mtms.machineSerialNumber());
Matt Spinlerb6664332019-09-10 15:24:10 -050063 }
64
65 {
66 // Stream constructor
67 std::vector<uint8_t> data{'T', 'T', 'T', 'T', '-', 'M', 'M',
68 'M', '1', '2', '3', '4', '5', '6',
69 '7', '8', '9', 'A', 'B', 'C'};
70 Stream stream{data};
71
72 MTMS mtms{stream};
73
Matt Spinler4b59f7a2019-10-08 13:55:17 -050074 EXPECT_EQ("TTTT-MMM", mtms.machineTypeAndModel());
Matt Spinlerb6664332019-09-10 15:24:10 -050075
Matt Spinler4b59f7a2019-10-08 13:55:17 -050076 EXPECT_EQ("123456789ABC", mtms.machineSerialNumber());
Matt Spinlerb6664332019-09-10 15:24:10 -050077 }
78}
79
80TEST(MTMSTest, OperatorExtractTest)
81{
82 std::string tm{"TTTT-MMM"};
83 std::string sn{"123456789ABC"};
84
85 MTMS mtms{tm, sn};
86
87 // Check that we can extract the same data
88 std::vector<uint8_t> data;
89 Stream stream{data};
90 stream << mtms;
91
92 std::vector<uint8_t> expected{'T', 'T', 'T', 'T', '-', 'M', 'M',
93 'M', '1', '2', '3', '4', '5', '6',
94 '7', '8', '9', 'A', 'B', 'C'};
95 EXPECT_EQ(expected, data);
96}
97
98TEST(MTMSTest, OperatorInsertTest)
99{
100 std::vector<uint8_t> data{'T', 'T', 'T', 'T', '-', 'M', 'M', 'M', '1', '2',
101 '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C'};
102 Stream stream{data};
103
104 // Check that when we insert data it is what's expected
105 MTMS mtms;
106 stream >> mtms;
107
Matt Spinler4b59f7a2019-10-08 13:55:17 -0500108 EXPECT_EQ("TTTT-MMM", mtms.machineTypeAndModel());
Matt Spinlerb6664332019-09-10 15:24:10 -0500109
Matt Spinler4b59f7a2019-10-08 13:55:17 -0500110 EXPECT_EQ("123456789ABC", mtms.machineSerialNumber());
Matt Spinlerb6664332019-09-10 15:24:10 -0500111}