blob: 842f18d130e3b5b9babf1054e21a92aead5bfe51 [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 Spinler6852d722019-09-30 15:35:53 -05004#include "extensions/openpower-pels/ascii_string.hpp"
5#include "extensions/openpower-pels/registry.hpp"
6
7#include <gtest/gtest.h>
8
9using namespace openpower::pels;
10
11TEST(AsciiStringTest, AsciiStringTest)
12{
13 // Build the ASCII string from a message registry entry
14 message::Entry entry;
15 entry.src.type = 0xBD;
16 entry.src.reasonCode = 0xABCD;
17 entry.subsystem = 0x37;
18
19 src::AsciiString as{entry};
20
21 auto data = as.get();
22
23 EXPECT_EQ(data, "BD37ABCD ");
24
25 // Now flatten it
26 std::vector<uint8_t> flattenedData;
27 Stream stream{flattenedData};
28
29 as.flatten(stream);
30
31 for (size_t i = 0; i < 32; i++)
32 {
33 EXPECT_EQ(data[i], flattenedData[i]);
34 }
35}
36
37// A 0x11 power SRC doesn't have the subsystem in it
38TEST(AsciiStringTest, PowerErrorTest)
39{
40 message::Entry entry;
41 entry.src.type = 0x11;
42 entry.src.reasonCode = 0xABCD;
43 entry.subsystem = 0x37;
44
45 src::AsciiString as{entry};
46 auto data = as.get();
47
48 EXPECT_EQ(data, "1100ABCD ");
49}
50
51TEST(AsciiStringTest, UnflattenTest)
52{
53 std::vector<uint8_t> rawData{'B', 'D', '5', '6', '1', '2', 'A', 'B'};
54
55 for (int i = 8; i < 32; i++)
56 {
57 rawData.push_back(' ');
58 }
59
60 Stream stream{rawData};
61 src::AsciiString as{stream};
62
63 auto data = as.get();
64
65 EXPECT_EQ(data, "BD5612AB ");
66}
67
68TEST(AsciiStringTest, UnderflowTest)
69{
70 std::vector<uint8_t> rawData{'B', 'D', '5', '6'};
71 Stream stream{rawData};
72
73 EXPECT_THROW(src::AsciiString as{stream}, std::out_of_range);
74}
Matt Spinler23970b02022-02-25 16:34:46 -060075
76TEST(AsciiStringTest, MissingSubsystemTest)
77{
78 message::Entry entry;
79 entry.src.type = 0xBD;
80 entry.src.reasonCode = 0xABCD;
81
82 src::AsciiString as{entry};
83 auto data = as.get();
84
85 // Default subsystem is 0x70
86 EXPECT_EQ(data, "BD70ABCD ");
87}