diff --git a/attn/ti_handler.cpp b/attn/ti_handler.cpp
index 1dffed9..0ae0db8 100644
--- a/attn/ti_handler.cpp
+++ b/attn/ti_handler.cpp
@@ -1,3 +1,5 @@
+#include <fmt/format.h>
+
 #include <attn/attn_common.hpp>
 #include <attn/attn_dbus.hpp>
 #include <attn/attn_dump.hpp>
@@ -182,13 +184,10 @@
             tiAdditionalData["Subsystem"] = std::to_string(
                 static_cast<uint8_t>(pel::SubsystemID::hostboot));
 
-            // TODO: will update as part of other story.
             // Translate hex src value to ascii. This results in an 8
             // character SRC (hostboot SRC is 32 bits)
-            std::stringstream src;
-            src << std::setw(8) << std::setfill('0') << std::uppercase
-                << std::hex << be32toh(i_tiDataArea->srcWord12HbWord0);
-            tiAdditionalData["SrcAscii"] = src.str();
+            tiAdditionalData["SrcAscii"] =
+                fmt::format("{:08X}", be32toh(i_tiDataArea->srcWord12HbWord0));
 
             // dump flag is only valid for TI with EID (not TI with SRC)
             trace::inf("Ignoring TI info dump flag for HB TI with SRC");
@@ -255,78 +254,61 @@
         return;
     }
 
-    // TODO: will update as part of other story.
-    std::stringstream ss;
-
-    ss << "0x00 TI Area Valid:" << std::setw(2) << std::setfill('0') << std::hex
-       << (int)i_tiDataArea->tiAreaValid << ":";
-    ss << "0x01 Command:" << std::setw(2) << std::setfill('0') << std::hex
-       << (int)i_tiDataArea->command << ":";
-    ss << "0x02 Num. Data Bytes:" << std::setw(4) << std::setfill('0')
-       << std::hex << be16toh(i_tiDataArea->numDataBytes) << ":";
-    ss << "0x04 Reserved:" << std::setw(2) << std::setfill('0') << std::hex
-       << (int)i_tiDataArea->reserved1 << ":";
-    ss << "0x06 HWDump Type:" << std::setw(4) << std::setfill('0') << std::hex
-       << be16toh(i_tiDataArea->hardwareDumpType) << ":";
-    ss << "0x08 SRC Format:" << std::setw(2) << std::setfill('0') << std::hex
-       << (int)i_tiDataArea->srcFormat << ":";
-    ss << "0x09 SRC Flags:" << std::setw(2) << std::setfill('0') << std::hex
-       << (int)i_tiDataArea->srcFlags << ":";
-    ss << "0x0a Num. ASCII Words:" << std::setw(2) << std::setfill('0')
-       << std::hex << (int)i_tiDataArea->numAsciiWords << ":";
-    ss << "0x0b Num. Hex Words:" << std::setw(2) << std::setfill('0')
-       << std::hex << (int)i_tiDataArea->numHexWords << ":";
-    ss << "0x0e Length of SRC:" << std::setw(4) << std::setfill('0') << std::hex
-       << be16toh(i_tiDataArea->lenSrc) << ":";
-    ss << "0x10 SRC Word 12:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->srcWord12HbWord0) << ":";
-    ss << "0x14 SRC Word 13:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->srcWord13HbWord2) << ":";
-    ss << "0x18 SRC Word 14:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->srcWord14HbWord3) << ":";
-    ss << "0x1c SRC Word 15:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->srcWord15HbWord4) << ":";
-    ss << "0x20 SRC Word 16:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->srcWord16HbWord5) << ":";
-    ss << "0x24 SRC Word 17:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->srcWord17HbWord6) << ":";
-    ss << "0x28 SRC Word 18:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->srcWord18HbWord7) << ":";
-    ss << "0x2c SRC Word 19:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->srcWord19HbWord8) << ":";
-    ss << "0x30 ASCII Data:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->asciiData0) << ":";
-    ss << "0x34 ASCII Data:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->asciiData1) << ":";
-    ss << "0x38 ASCII Data:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->asciiData2) << ":";
-    ss << "0x3c ASCII Data:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->asciiData3) << ":";
-    ss << "0x40 ASCII Data:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->asciiData4) << ":";
-    ss << "0x44 ASCII Data:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->asciiData5) << ":";
-    ss << "0x48 ASCII Data:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->asciiData6) << ":";
-    ss << "0x4c ASCII Data:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->asciiData7) << ":";
-    ss << "0x50 Location:" << std::setw(2) << std::setfill('0') << std::hex
-       << (int)i_tiDataArea->location << ":";
-    ss << "0x51 Code Sections:" << std::setw(2) << std::setfill('0') << std::hex
-       << (int)i_tiDataArea->codeSection << ":";
-    ss << "0x52 Additional Size:" << std::setw(2) << std::setfill('0')
-       << std::hex << (int)i_tiDataArea->additionalSize << ":";
-    ss << "0x53 Additional Data:" << std::setw(2) << std::setfill('0')
-       << std::hex << (int)i_tiDataArea->andData;
-
-    std::string key, value;
-    char delim = ':';
-
-    while (std::getline(ss, key, delim))
-    {
-        std::getline(ss, value, delim);
-        i_map[key] = value;
-    }
+    i_map["0x00 TI Area Valid"] =
+        fmt::format("{:02x}", i_tiDataArea->tiAreaValid);
+    i_map["0x01 Command"] = fmt::format("{:02x}", i_tiDataArea->command);
+    i_map["0x02 Num. Data Bytes"] =
+        fmt::format("{:04x}", be16toh(i_tiDataArea->numDataBytes));
+    i_map["0x04 Reserved"] = fmt::format("{:02x}", i_tiDataArea->reserved1);
+    i_map["0x06 HWDump Type"] =
+        fmt::format("{:04x}", be16toh(i_tiDataArea->hardwareDumpType));
+    i_map["0x08 SRC Format"] = fmt::format("{:02x}", i_tiDataArea->srcFormat);
+    i_map["0x09 SRC Flags"]  = fmt::format("{:02x}", i_tiDataArea->srcFlags);
+    i_map["0x0a Num. ASCII Words"] =
+        fmt::format("{:02x}", i_tiDataArea->numAsciiWords);
+    i_map["0x0b Num. Hex Words"] =
+        fmt::format("{:02x}", i_tiDataArea->numHexWords);
+    i_map["0x0e Length of SRC"] =
+        fmt::format("{:04x}", be16toh(i_tiDataArea->lenSrc));
+    i_map["0x10 SRC Word 12"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->srcWord12HbWord0));
+    i_map["0x14 SRC Word 13"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->srcWord13HbWord2));
+    i_map["0x18 SRC Word 14"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->srcWord14HbWord3));
+    i_map["0x1c SRC Word 15"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->srcWord15HbWord4));
+    i_map["0x20 SRC Word 16"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->srcWord16HbWord5));
+    i_map["0x24 SRC Word 17"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->srcWord17HbWord6));
+    i_map["0x28 SRC Word 18"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->srcWord18HbWord7));
+    i_map["0x2c SRC Word 19"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->srcWord19HbWord8));
+    i_map["0x30 ASCII Data"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->asciiData0));
+    i_map["0x34 ASCII Data"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->asciiData1));
+    i_map["0x38 ASCII Data"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->asciiData2));
+    i_map["0x3c ASCII Data"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->asciiData3));
+    i_map["0x40 ASCII Data"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->asciiData4));
+    i_map["0x44 ASCII Data"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->asciiData5));
+    i_map["0x48 ASCII Data"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->asciiData6));
+    i_map["0x4c ASCII Data"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->asciiData7));
+    i_map["0x50 Location"] = fmt::format("{:02x}", i_tiDataArea->location);
+    i_map["0x51 Code Sections"] =
+        fmt::format("{:02x}", i_tiDataArea->codeSection);
+    i_map["0x52 Additional Size"] =
+        fmt::format("{:02x}", i_tiDataArea->additionalSize);
+    i_map["0x53 Additional Data"] =
+        fmt::format("{:02x}", i_tiDataArea->andData);
 }
 
 /** @brief Parse the TI info data area into map as hostboot data */
@@ -338,48 +320,34 @@
         return;
     }
 
-    // TODO: will update as part of other story.
-    std::stringstream ss;
-
-    ss << "0x00 TI Area Valid:" << std::setw(2) << std::setfill('0') << std::hex
-       << (int)i_tiDataArea->tiAreaValid << ":";
-    ss << "0x04 Reserved:" << std::setw(2) << std::setfill('0') << std::hex
-       << (int)i_tiDataArea->reserved1 << ":";
-    ss << "0x05 HB_Term. Type:" << std::setw(2) << std::setfill('0') << std::hex
-       << (int)i_tiDataArea->hbTerminateType << ":";
-    ss << "0x0c HB Dump Flag:" << std::setw(2) << std::setfill('0') << std::hex
-       << (int)i_tiDataArea->hbDumpFlag << ":";
-    ss << "0x0d Source:" << std::setw(2) << std::setfill('0') << std::hex
-       << (int)i_tiDataArea->source << ":";
-    ss << "0x10 HB Word 0:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->srcWord12HbWord0) << ":";
-    ss << "0x14 HB Word 2:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->srcWord13HbWord2) << ":";
-    ss << "0x18 HB Word 3:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->srcWord14HbWord3) << ":";
-    ss << "0x1c HB Word 4:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->srcWord15HbWord4) << ":";
-    ss << "0x20 HB Word 5:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->srcWord16HbWord5) << ":";
-    ss << "0x24 HB Word 6:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->srcWord17HbWord6) << ":";
-    ss << "0x28 HB Word 7:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->srcWord18HbWord7) << ":";
-    ss << "0x2c HB Word 8:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->srcWord19HbWord8) << ":";
-    ss << "0x30 error_data:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->asciiData0) << ":";
-    ss << "0x34 EID:" << std::setw(8) << std::setfill('0') << std::hex
-       << be32toh(i_tiDataArea->asciiData1);
-
-    std::string key, value;
-    char delim = ':';
-
-    while (std::getline(ss, key, delim))
-    {
-        std::getline(ss, value, delim);
-        i_map[key] = value;
-    }
+    i_map["0x00 TI Area Valid"] =
+        fmt::format("{:02x}", i_tiDataArea->tiAreaValid);
+    i_map["0x04 Reserved"] = fmt::format("{:02x}", i_tiDataArea->reserved1);
+    i_map["0x05 HB_Term. Type"] =
+        fmt::format("{:02x}", i_tiDataArea->hbTerminateType);
+    i_map["0x0c HB Dump Flag"] =
+        fmt::format("{:02x}", i_tiDataArea->hbDumpFlag);
+    i_map["0x0d Source"] = fmt::format("{:02x}", i_tiDataArea->source);
+    i_map["0x10 HB Word 0"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->srcWord12HbWord0));
+    i_map["0x14 HB Word 2"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->srcWord13HbWord2));
+    i_map["0x18 HB Word 3"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->srcWord14HbWord3));
+    i_map["0x1c HB Word 4"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->srcWord15HbWord4));
+    i_map["0x20 HB Word 5"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->srcWord16HbWord5));
+    i_map["0x24 HB Word 6"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->srcWord17HbWord6));
+    i_map["0x28 HB Word 7"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->srcWord18HbWord7));
+    i_map["0x2c HB Word 8"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->srcWord19HbWord8));
+    i_map["0x30 error_data"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->asciiData0));
+    i_map["0x34 EID"] =
+        fmt::format("{:08x}", be32toh(i_tiDataArea->asciiData1));
 }
 
 } // namespace attn
diff --git a/test/meson.build b/test/meson.build
index 87449a7..8a17b52 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -202,3 +202,22 @@
 
 test(tc, exe, env: var)
 
+################################################################################
+
+tc = 'test-ti-handler'
+
+src = [
+  files(
+    tc + '.cpp',
+  ),
+]
+
+dep = [ gtest_dep ]
+
+var = [ ]
+
+exe = executable(tc.underscorify(), src, dependencies: dep,
+                 link_with : hwdiags_libs,
+                 cpp_args: test_arg, include_directories: incdir)
+
+test(tc, exe, env: var)
diff --git a/test/test-ti-handler.cpp b/test/test-ti-handler.cpp
new file mode 100644
index 0000000..5941985
--- /dev/null
+++ b/test/test-ti-handler.cpp
@@ -0,0 +1,137 @@
+#include <attn/ti_handler.hpp>
+#include <util/trace.hpp>
+
+#include <map>
+#include <string>
+
+#include "gtest/gtest.h"
+
+namespace
+{
+uint8_t tiInfo[0x58] = {
+    0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
+    0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41,
+    0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c,
+    0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
+    0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15,
+    0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
+    0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b};
+} // namespace
+
+TEST(TiHandler, TestSet1)
+{
+    trace::inf("TestSet1: will test ti handler.");
+
+    std::map<std::string, std::string> tiMap;
+    attn::TiDataArea* tiData = (attn::TiDataArea*)tiInfo;
+
+    trace::inf("Set values in tiData to the map by parsePhypOpalTiInfo().");
+    attn::parsePhypOpalTiInfo(tiMap, tiData);
+
+    // tiAreaValid, offset: 0x00, size: 1, 0x2c
+    EXPECT_EQ(tiMap["0x00 TI Area Valid"], "2c");
+    // command, offset: 0x01, size: 1, 0x2d
+    EXPECT_EQ(tiMap["0x01 Command"], "2d");
+    // numDataBytes, offset: 0x02, size: 2, 0x2e 0x2f
+    EXPECT_EQ(tiMap["0x02 Num. Data Bytes"], "2e2f");
+    // reserved1, offset: 0x04, size: 1, 0x30
+    EXPECT_EQ(tiMap["0x04 Reserved"], "30");
+    // hardwareDumpType, offset: 0x06, size: 2, 0x32 0x33
+    EXPECT_EQ(tiMap["0x06 HWDump Type"], "3233");
+    // srcFormat, offset: 0x08, size: 1, 0x34
+    EXPECT_EQ(tiMap["0x08 SRC Format"], "34");
+    // srcFlags, offset: 0x09, size: 1, 0x35
+    EXPECT_EQ(tiMap["0x09 SRC Flags"], "35");
+    // numAsciiWords, offset: 0x0a, size: 1, 0x36
+    EXPECT_EQ(tiMap["0x0a Num. ASCII Words"], "36");
+    // numHexWords, offset: 0x0b, size: 1, 0x37
+    EXPECT_EQ(tiMap["0x0b Num. Hex Words"], "37");
+    // lenSrc, offset: 0x0e, size: 2, 0x3a 0x3b
+    EXPECT_EQ(tiMap["0x0e Length of SRC"], "3a3b");
+    // srcWord12HbWord0, offset: 0x10, size: 4, 0x3c 0x3d 0x3e 0x3f
+    EXPECT_EQ(tiMap["0x10 SRC Word 12"], "3c3d3e3f");
+    // srcWord13HbWord2, offset: 0x14, size: 4, 0x40 0x41 0x42 0x43
+    EXPECT_EQ(tiMap["0x14 SRC Word 13"], "40414243");
+    // srcWord14HbWord3, offset: 0x18, size: 4, 0x44 0x45 0x46 0x47
+    EXPECT_EQ(tiMap["0x18 SRC Word 14"], "44454647");
+    // srcWord15HbWord4, offset: 0x1c, size: 4, 0x48 0x49 0x4a 0x4b
+    EXPECT_EQ(tiMap["0x1c SRC Word 15"], "48494a4b");
+    // srcWord16HbWord5, offset: 0x20, size: 4, 0x4c 0x4d 0x4e 0x4f
+    EXPECT_EQ(tiMap["0x20 SRC Word 16"], "4c4d4e4f");
+    // srcWord17HbWord6, offset: 0x24, size: 4, 0x50 0x51 0x52 0x53
+    EXPECT_EQ(tiMap["0x24 SRC Word 17"], "50515253");
+    // srcWord18HbWord7, offset: 0x28, size: 4, 0x54 0x55 0x56 0x57
+    EXPECT_EQ(tiMap["0x28 SRC Word 18"], "54555657");
+    // srcWord19HbWord8, offset: 0x2c, size: 4, 0x00 0x01 0x02 0x03
+    EXPECT_EQ(tiMap["0x2c SRC Word 19"], "00010203");
+    // asciiData0, offset: 0x30, size: 4, 0x04 0x05 0x06 0x07
+    EXPECT_EQ(tiMap["0x30 ASCII Data"], "04050607");
+    // asciiData1, offset: 0x34, size: 4, 0x08 0x09 0x0a 0x0b
+    EXPECT_EQ(tiMap["0x34 ASCII Data"], "08090a0b");
+    // asciiData2, offset: 0x38, size: 4, 0x0c 0x0d 0x0e 0x0f
+    EXPECT_EQ(tiMap["0x38 ASCII Data"], "0c0d0e0f");
+    // asciiData3, offset: 0x3c, size: 4, 0x10 0x11 0x12 0x13
+    EXPECT_EQ(tiMap["0x3c ASCII Data"], "10111213");
+    // asciiData4, offset: 0x40, size: 4, 0x14 0x15 0x16 0x17
+    EXPECT_EQ(tiMap["0x40 ASCII Data"], "14151617");
+    // asciiData5, offset: 0x44, size: 4, 0x18 0x19 0x1a 0x1b
+    EXPECT_EQ(tiMap["0x44 ASCII Data"], "18191a1b");
+    // asciiData6, offset: 0x48, size: 4, 0x1c 0x1d 0x1e 0x1f
+    EXPECT_EQ(tiMap["0x48 ASCII Data"], "1c1d1e1f");
+    // asciiData7, offset: 0x4c, size: 4, 0x20 0x21 0x22 0x23
+    EXPECT_EQ(tiMap["0x4c ASCII Data"], "20212223");
+    // location, offset: 0x50, size: 1, 0x24
+    EXPECT_EQ(tiMap["0x50 Location"], "24");
+    // codeSection, offset: 0x51, size: 1, 0x25
+    EXPECT_EQ(tiMap["0x51 Code Sections"], "25");
+    // additionalSize, offset: 0x52, size: 1, 0x26
+    EXPECT_EQ(tiMap["0x52 Additional Size"], "26");
+    // andData, offset: 0x53, size: 1, 0x27
+    EXPECT_EQ(tiMap["0x53 Additional Data"], "27");
+}
+
+TEST(TiHandler, TestSet2)
+{
+    trace::inf("TestSet2: will test ti handler.");
+
+    attn::TiDataArea* tiData = nullptr;
+    std::map<std::string, std::string> tiMap;
+
+    // Use the pre-defined array as test data.
+    tiData = (attn::TiDataArea*)tiInfo;
+
+    trace::inf("Set values in tiData to the map by defaultHbTiInfo().");
+    attn::parseHbTiInfo(tiMap, tiData);
+
+    // tiAreaValid, offset: 0x00, size: 1, 0x2c
+    EXPECT_EQ(tiMap["0x00 TI Area Valid"], "2c");
+    // reserved1, offset: 0x04, size: 1, 0x30
+    EXPECT_EQ(tiMap["0x04 Reserved"], "30");
+    // hbTerminateType, offset: 0x05, size: 1, 0x31
+    EXPECT_EQ(tiMap["0x05 HB_Term. Type"], "31");
+    // hbDumpFlag, offset: 0x0c, size: 1, 0x38
+    EXPECT_EQ(tiMap["0x0c HB Dump Flag"], "38");
+    // source, offset: 0x0d, size: 1, 0x39
+    EXPECT_EQ(tiMap["0x0d Source"], "39");
+    // srcWord12HbWord0, offset: 0x10, size: 4, 0x3c 0x3d 0x3e 0x3f
+    EXPECT_EQ(tiMap["0x10 HB Word 0"], "3c3d3e3f");
+    // srcWord13HbWord2, offset: 0x14, size: 4, 0x40 0x41 0x42 0x43
+    EXPECT_EQ(tiMap["0x14 HB Word 2"], "40414243");
+    // srcWord14HbWord3, offset: 0x18, size: 4, 0x44 0x45 0x46 0x47
+    EXPECT_EQ(tiMap["0x18 HB Word 3"], "44454647");
+    // srcWord15HbWord4, offset: 0x1c, size: 4, 0x48 0x49 0x4a 0x4b
+    EXPECT_EQ(tiMap["0x1c HB Word 4"], "48494a4b");
+    // srcWord16HbWord5, offset: 0x20, size: 4, 0x4c 0x4d 0x4e 0x4f
+    EXPECT_EQ(tiMap["0x20 HB Word 5"], "4c4d4e4f");
+    // srcWord17HbWord6, offset: 0x24, size: 4, 0x50 0x51 0x52 0x53
+    EXPECT_EQ(tiMap["0x24 HB Word 6"], "50515253");
+    // srcWord18HbWord7, offset: 0x28, size: 4, 0x54 0x55 0x56 0x57
+    EXPECT_EQ(tiMap["0x28 HB Word 7"], "54555657");
+    // srcWord19HbWord8, offset: 0x2c, size: 4, 0x00 0x01 0x02 0x03
+    EXPECT_EQ(tiMap["0x2c HB Word 8"], "00010203");
+    // asciiData0, offset: 0x30, size: 4, 0x04 0x05 0x06 0x07
+    EXPECT_EQ(tiMap["0x30 error_data"], "04050607");
+    // asciiData1, offset: 0x34, size: 4, 0x08 0x09 0x0a 0x0b
+    EXPECT_EQ(tiMap["0x34 EID"], "08090a0b");
+}
