diff --git a/platform-mc/test/mock_terminus_manager.hpp b/platform-mc/test/mock_terminus_manager.hpp
index eb06734..4e56a83 100644
--- a/platform-mc/test/mock_terminus_manager.hpp
+++ b/platform-mc/test/mock_terminus_manager.hpp
@@ -20,10 +20,9 @@
         TerminusManager(event, handler, instanceIdDb, termini, manager)
     {}
 
-    exec::task<int> sendRecvPldmMsgOverMctp(mctp_eid_t /*eid*/,
-                                            Request& /*request*/,
-                                            const pldm_msg** responseMsg,
-                                            size_t* responseLen) override
+    exec::task<int> sendRecvPldmMsgOverMctp(
+        mctp_eid_t /*eid*/, Request& /*request*/, const pldm_msg** responseMsg,
+        size_t* responseLen) override
     {
         if (responseMsgs.empty() || responseMsg == nullptr ||
             responseLen == nullptr)
diff --git a/platform-mc/test/terminus_manager_test.cpp b/platform-mc/test/terminus_manager_test.cpp
index 464ef71..432ba21 100644
--- a/platform-mc/test/terminus_manager_test.cpp
+++ b/platform-mc/test/terminus_manager_test.cpp
@@ -266,9 +266,9 @@
         reinterpret_cast<pldm_msg*>(setTidResp0.data()), sizeof(setTidResp0));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
-    uint8_t supportedType1Byte = (1 << (PLDM_BASE % 8)) +
-                                 (1 << (PLDM_PLATFORM % 8)) +
-                                 (1 << (PLDM_BIOS % 8)) + (1 << (PLDM_FRU % 8));
+    uint8_t supportedType1Byte =
+        (1 << (PLDM_BASE % 8)) + (1 << (PLDM_PLATFORM % 8)) +
+        (1 << (PLDM_BIOS % 8)) + (1 << (PLDM_FRU % 8));
     std::array<uint8_t, sizeof(pldm_msg_hdr) + getPldmTypesRespLen>
         getPldmTypesResp0{0x00, 0x02, 0x04, 0x00, supportedType1Byte,
                           0x00, 0x00, 0x00, 0x00, 0x00,
@@ -334,11 +334,11 @@
             (1 << (PLDM_GET_PLDM_TYPES % 8)) +
             (1 << (PLDM_GET_PLDM_COMMANDS % 8));
     std::array<uint8_t, sizeof(pldm_msg_hdr) + getPldmCommandRespLen>
-        getPldmCommandBaseResp0{0x00, 0x02, 0x05, 0x00, byte0, 0x00, 0x00, 0x00,
-                                0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00,
-                                0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00,
-                                0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00,
-                                0x00, 0x00, 0x00, 0x00};
+        getPldmCommandBaseResp0{
+            0x00, 0x02, 0x05, 0x00, byte0, 0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00};
     rc = mockTerminusManager.enqueueResponse(
         reinterpret_cast<pldm_msg*>(getPldmCommandBaseResp0.data()),
         sizeof(getPldmCommandBaseResp0));
@@ -391,11 +391,11 @@
     byte1 = (0 << (PLDM_GET_BIOS_ATTRIBUTE_CURRENT_VALUE_BY_HANDLE % 8)) +
             (1 << (PLDM_GET_DATE_TIME % 8)) + (1 << (PLDM_SET_DATE_TIME % 8));
     std::array<uint8_t, sizeof(pldm_msg_hdr) + getPldmCommandRespLen>
-        getPldmCommandBiosResp0{0x00, 0x02, 0x05, 0x00, byte0, byte1, 0x00,
-                                0x00, 0x00, 0x00, 0x00, 0x00,  0x00,  0x00,
-                                0x00, 0x00, 0x00, 0x00, 0x00,  0x00,  0x00,
-                                0x00, 0x00, 0x00, 0x00, 0x00,  0x00,  0x00,
-                                0x00, 0x00, 0x00, 0x00, 0x00,  0x00,  0x00};
+        getPldmCommandBiosResp0{
+            0x00, 0x02, 0x05, 0x00, byte0, byte1, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00, 0x00,  0x00,  0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00, 0x00,  0x00,  0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00, 0x00,  0x00,  0x00, 0x00};
     rc = mockTerminusManager.enqueueResponse(
         reinterpret_cast<pldm_msg*>(getPldmCommandBiosResp0.data()),
         sizeof(getPldmCommandBiosResp0));
@@ -411,11 +411,11 @@
     /* byte0 command from 8 to 15 */
     byte1 = 0;
     std::array<uint8_t, sizeof(pldm_msg_hdr) + getPldmCommandRespLen>
-        getPldmCommandFruResp0{0x00, 0x02, 0x05, 0x00, byte0, 0x00, 0x00,
-                               0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00,
-                               0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00,
-                               0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00,
-                               0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00};
+        getPldmCommandFruResp0{
+            0x00, 0x02, 0x05, 0x00, byte0, 0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00};
     rc = mockTerminusManager.enqueueResponse(
         reinterpret_cast<pldm_msg*>(getPldmCommandFruResp0.data()),
         sizeof(getPldmCommandFruResp0));
diff --git a/platform-mc/test/terminus_test.cpp b/platform-mc/test/terminus_test.cpp
index e4f00f9..0baa8b7 100644
--- a/platform-mc/test/terminus_test.cpp
+++ b/platform-mc/test/terminus_test.cpp
@@ -8,8 +8,8 @@
 TEST(TerminusTest, supportedTypeTest)
 {
     auto t1 = pldm::platform_mc::Terminus(1, 1 << PLDM_BASE);
-    auto t2 = pldm::platform_mc::Terminus(2,
-                                          1 << PLDM_BASE | 1 << PLDM_PLATFORM);
+    auto t2 =
+        pldm::platform_mc::Terminus(2, 1 << PLDM_BASE | 1 << PLDM_PLATFORM);
 
     EXPECT_EQ(true, t1.doesSupportType(PLDM_BASE));
     EXPECT_EQ(false, t1.doesSupportType(PLDM_PLATFORM));
@@ -27,8 +27,8 @@
 
 TEST(TerminusTest, parseSensorAuxiliaryNamesPDRTest)
 {
-    auto t1 = pldm::platform_mc::Terminus(1,
-                                          1 << PLDM_BASE | 1 << PLDM_PLATFORM);
+    auto t1 =
+        pldm::platform_mc::Terminus(1, 1 << PLDM_BASE | 1 << PLDM_PLATFORM);
     std::vector<uint8_t> pdr1{
         0x0,
         0x0,
@@ -110,8 +110,8 @@
 
 TEST(TerminusTest, parseSensorAuxiliaryMultiNamesPDRTest)
 {
-    auto t1 = pldm::platform_mc::Terminus(1,
-                                          1 << PLDM_BASE | 1 << PLDM_PLATFORM);
+    auto t1 =
+        pldm::platform_mc::Terminus(1, 1 << PLDM_BASE | 1 << PLDM_PLATFORM);
     std::vector<uint8_t> pdr1{
         0x0,
         0x0,
@@ -229,8 +229,8 @@
 
 TEST(TerminusTest, parseSensorAuxiliaryNamesMultiSensorsPDRTest)
 {
-    auto t1 = pldm::platform_mc::Terminus(1,
-                                          1 << PLDM_BASE | 1 << PLDM_PLATFORM);
+    auto t1 =
+        pldm::platform_mc::Terminus(1, 1 << PLDM_BASE | 1 << PLDM_PLATFORM);
     std::vector<uint8_t> pdr1{
         0x0,
         0x0,
@@ -350,8 +350,8 @@
 
 TEST(TerminusTest, parsePDRTestNoSensorPDR)
 {
-    auto t1 = pldm::platform_mc::Terminus(1,
-                                          1 << PLDM_BASE | 1 << PLDM_PLATFORM);
+    auto t1 =
+        pldm::platform_mc::Terminus(1, 1 << PLDM_BASE | 1 << PLDM_PLATFORM);
     std::vector<uint8_t> pdr1{
         0x1, 0x0, 0x0,
         0x0,                             // record handle
