1444fa1c0Saustinfcui #include <attn/ti_handler.hpp>
2444fa1c0Saustinfcui #include <util/trace.hpp>
3444fa1c0Saustinfcui 
4444fa1c0Saustinfcui #include <map>
5444fa1c0Saustinfcui #include <string>
6444fa1c0Saustinfcui 
7444fa1c0Saustinfcui #include "gtest/gtest.h"
8444fa1c0Saustinfcui 
9444fa1c0Saustinfcui namespace
10444fa1c0Saustinfcui {
11444fa1c0Saustinfcui uint8_t tiInfo[0x58] = {
12444fa1c0Saustinfcui     0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
13444fa1c0Saustinfcui     0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41,
14444fa1c0Saustinfcui     0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c,
15444fa1c0Saustinfcui     0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
16444fa1c0Saustinfcui     0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
17444fa1c0Saustinfcui     0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15,
18444fa1c0Saustinfcui     0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
19444fa1c0Saustinfcui     0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b};
20444fa1c0Saustinfcui } // namespace
21444fa1c0Saustinfcui 
TEST(TiHandler,TestSet1)22444fa1c0Saustinfcui TEST(TiHandler, TestSet1)
23444fa1c0Saustinfcui {
24444fa1c0Saustinfcui     trace::inf("TestSet1: will test ti handler.");
25444fa1c0Saustinfcui 
26444fa1c0Saustinfcui     std::map<std::string, std::string> tiMap;
27444fa1c0Saustinfcui     attn::TiDataArea* tiData = (attn::TiDataArea*)tiInfo;
28444fa1c0Saustinfcui 
29444fa1c0Saustinfcui     trace::inf("Set values in tiData to the map by parsePhypOpalTiInfo().");
30444fa1c0Saustinfcui     attn::parsePhypOpalTiInfo(tiMap, tiData);
31444fa1c0Saustinfcui 
32444fa1c0Saustinfcui     // tiAreaValid, offset: 0x00, size: 1, 0x2c
33444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x00 TI Area Valid"], "2c");
34444fa1c0Saustinfcui     // command, offset: 0x01, size: 1, 0x2d
35444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x01 Command"], "2d");
36444fa1c0Saustinfcui     // numDataBytes, offset: 0x02, size: 2, 0x2e 0x2f
37444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x02 Num. Data Bytes"], "2e2f");
38444fa1c0Saustinfcui     // reserved1, offset: 0x04, size: 1, 0x30
39444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x04 Reserved"], "30");
40444fa1c0Saustinfcui     // hardwareDumpType, offset: 0x06, size: 2, 0x32 0x33
41444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x06 HWDump Type"], "3233");
42444fa1c0Saustinfcui     // srcFormat, offset: 0x08, size: 1, 0x34
43444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x08 SRC Format"], "34");
44444fa1c0Saustinfcui     // srcFlags, offset: 0x09, size: 1, 0x35
45444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x09 SRC Flags"], "35");
46444fa1c0Saustinfcui     // numAsciiWords, offset: 0x0a, size: 1, 0x36
47444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x0a Num. ASCII Words"], "36");
48444fa1c0Saustinfcui     // numHexWords, offset: 0x0b, size: 1, 0x37
49444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x0b Num. Hex Words"], "37");
50444fa1c0Saustinfcui     // lenSrc, offset: 0x0e, size: 2, 0x3a 0x3b
51444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x0e Length of SRC"], "3a3b");
52444fa1c0Saustinfcui     // srcWord12HbWord0, offset: 0x10, size: 4, 0x3c 0x3d 0x3e 0x3f
53444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x10 SRC Word 12"], "3c3d3e3f");
54444fa1c0Saustinfcui     // srcWord13HbWord2, offset: 0x14, size: 4, 0x40 0x41 0x42 0x43
55444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x14 SRC Word 13"], "40414243");
56444fa1c0Saustinfcui     // srcWord14HbWord3, offset: 0x18, size: 4, 0x44 0x45 0x46 0x47
57444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x18 SRC Word 14"], "44454647");
58444fa1c0Saustinfcui     // srcWord15HbWord4, offset: 0x1c, size: 4, 0x48 0x49 0x4a 0x4b
59444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x1c SRC Word 15"], "48494a4b");
60444fa1c0Saustinfcui     // srcWord16HbWord5, offset: 0x20, size: 4, 0x4c 0x4d 0x4e 0x4f
61444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x20 SRC Word 16"], "4c4d4e4f");
62444fa1c0Saustinfcui     // srcWord17HbWord6, offset: 0x24, size: 4, 0x50 0x51 0x52 0x53
63444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x24 SRC Word 17"], "50515253");
64444fa1c0Saustinfcui     // srcWord18HbWord7, offset: 0x28, size: 4, 0x54 0x55 0x56 0x57
65444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x28 SRC Word 18"], "54555657");
66444fa1c0Saustinfcui     // srcWord19HbWord8, offset: 0x2c, size: 4, 0x00 0x01 0x02 0x03
67444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x2c SRC Word 19"], "00010203");
68444fa1c0Saustinfcui     // asciiData0, offset: 0x30, size: 4, 0x04 0x05 0x06 0x07
69444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x30 ASCII Data"], "04050607");
70444fa1c0Saustinfcui     // asciiData1, offset: 0x34, size: 4, 0x08 0x09 0x0a 0x0b
71444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x34 ASCII Data"], "08090a0b");
72444fa1c0Saustinfcui     // asciiData2, offset: 0x38, size: 4, 0x0c 0x0d 0x0e 0x0f
73444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x38 ASCII Data"], "0c0d0e0f");
74444fa1c0Saustinfcui     // asciiData3, offset: 0x3c, size: 4, 0x10 0x11 0x12 0x13
75444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x3c ASCII Data"], "10111213");
76444fa1c0Saustinfcui     // asciiData4, offset: 0x40, size: 4, 0x14 0x15 0x16 0x17
77444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x40 ASCII Data"], "14151617");
78444fa1c0Saustinfcui     // asciiData5, offset: 0x44, size: 4, 0x18 0x19 0x1a 0x1b
79444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x44 ASCII Data"], "18191a1b");
80444fa1c0Saustinfcui     // asciiData6, offset: 0x48, size: 4, 0x1c 0x1d 0x1e 0x1f
81444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x48 ASCII Data"], "1c1d1e1f");
82444fa1c0Saustinfcui     // asciiData7, offset: 0x4c, size: 4, 0x20 0x21 0x22 0x23
83444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x4c ASCII Data"], "20212223");
84444fa1c0Saustinfcui     // location, offset: 0x50, size: 1, 0x24
85444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x50 Location"], "24");
86444fa1c0Saustinfcui     // codeSection, offset: 0x51, size: 1, 0x25
87444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x51 Code Sections"], "25");
88444fa1c0Saustinfcui     // additionalSize, offset: 0x52, size: 1, 0x26
89444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x52 Additional Size"], "26");
90444fa1c0Saustinfcui     // andData, offset: 0x53, size: 1, 0x27
91444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x53 Additional Data"], "27");
92444fa1c0Saustinfcui }
93444fa1c0Saustinfcui 
TEST(TiHandler,TestSet2)94444fa1c0Saustinfcui TEST(TiHandler, TestSet2)
95444fa1c0Saustinfcui {
96444fa1c0Saustinfcui     trace::inf("TestSet2: will test ti handler.");
97444fa1c0Saustinfcui 
98444fa1c0Saustinfcui     attn::TiDataArea* tiData = nullptr;
99444fa1c0Saustinfcui     std::map<std::string, std::string> tiMap;
100444fa1c0Saustinfcui 
101444fa1c0Saustinfcui     // Use the pre-defined array as test data.
102444fa1c0Saustinfcui     tiData = (attn::TiDataArea*)tiInfo;
103444fa1c0Saustinfcui 
104444fa1c0Saustinfcui     trace::inf("Set values in tiData to the map by defaultHbTiInfo().");
105444fa1c0Saustinfcui     attn::parseHbTiInfo(tiMap, tiData);
106444fa1c0Saustinfcui 
107444fa1c0Saustinfcui     // tiAreaValid, offset: 0x00, size: 1, 0x2c
108444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x00 TI Area Valid"], "2c");
109444fa1c0Saustinfcui     // reserved1, offset: 0x04, size: 1, 0x30
110444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x04 Reserved"], "30");
111444fa1c0Saustinfcui     // hbTerminateType, offset: 0x05, size: 1, 0x31
112444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x05 HB_Term. Type"], "31");
113*ac5bd05cSBen Tyner     // hbFlags, offset: 0x0c, size: 1, 0x38
114*ac5bd05cSBen Tyner     EXPECT_EQ(tiMap["0x0c HB Flags"], "38");
115444fa1c0Saustinfcui     // source, offset: 0x0d, size: 1, 0x39
116444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x0d Source"], "39");
117444fa1c0Saustinfcui     // srcWord12HbWord0, offset: 0x10, size: 4, 0x3c 0x3d 0x3e 0x3f
118444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x10 HB Word 0"], "3c3d3e3f");
119444fa1c0Saustinfcui     // srcWord13HbWord2, offset: 0x14, size: 4, 0x40 0x41 0x42 0x43
120444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x14 HB Word 2"], "40414243");
121444fa1c0Saustinfcui     // srcWord14HbWord3, offset: 0x18, size: 4, 0x44 0x45 0x46 0x47
122444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x18 HB Word 3"], "44454647");
123444fa1c0Saustinfcui     // srcWord15HbWord4, offset: 0x1c, size: 4, 0x48 0x49 0x4a 0x4b
124444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x1c HB Word 4"], "48494a4b");
125444fa1c0Saustinfcui     // srcWord16HbWord5, offset: 0x20, size: 4, 0x4c 0x4d 0x4e 0x4f
126444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x20 HB Word 5"], "4c4d4e4f");
127444fa1c0Saustinfcui     // srcWord17HbWord6, offset: 0x24, size: 4, 0x50 0x51 0x52 0x53
128444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x24 HB Word 6"], "50515253");
129444fa1c0Saustinfcui     // srcWord18HbWord7, offset: 0x28, size: 4, 0x54 0x55 0x56 0x57
130444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x28 HB Word 7"], "54555657");
131444fa1c0Saustinfcui     // srcWord19HbWord8, offset: 0x2c, size: 4, 0x00 0x01 0x02 0x03
132444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x2c HB Word 8"], "00010203");
133444fa1c0Saustinfcui     // asciiData0, offset: 0x30, size: 4, 0x04 0x05 0x06 0x07
134444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x30 error_data"], "04050607");
135444fa1c0Saustinfcui     // asciiData1, offset: 0x34, size: 4, 0x08 0x09 0x0a 0x0b
136444fa1c0Saustinfcui     EXPECT_EQ(tiMap["0x34 EID"], "08090a0b");
137444fa1c0Saustinfcui }
138