diff --git a/src/test/associations.cpp b/src/test/associations.cpp
index fca0ee1..62aefab 100644
--- a/src/test/associations.cpp
+++ b/src/test/associations.cpp
@@ -499,10 +499,9 @@
     ASSERT_EQ(associationData.size(), 2);
 
     {
-        auto ad = std::find_if(associationData.begin(), associationData.end(),
-                               [](const auto& ad) {
-            return std::get<0>(ad) == "ownerA";
-        });
+        auto ad = std::find_if(
+            associationData.begin(), associationData.end(),
+            [](const auto& ad) { return std::get<0>(ad) == "ownerA"; });
         ASSERT_NE(ad, associationData.end());
 
         auto& a = std::get<1>(*ad);
@@ -511,10 +510,9 @@
         ASSERT_EQ(std::get<2>(a), "pathA");
     }
     {
-        auto ad = std::find_if(associationData.begin(), associationData.end(),
-                               [](const auto& ad) {
-            return std::get<0>(ad) == "ownerB";
-        });
+        auto ad = std::find_if(
+            associationData.begin(), associationData.end(),
+            [](const auto& ad) { return std::get<0>(ad) == "ownerB"; });
         ASSERT_NE(ad, associationData.end());
 
         auto& a = std::get<1>(*ad);
diff --git a/src/test/handler.cpp b/src/test/handler.cpp
index aad6c8a..3671977 100644
--- a/src/test/handler.cpp
+++ b/src/test/handler.cpp
@@ -80,10 +80,9 @@
                                                        }));
     ASSERT_EQ(interfaceMaps.size(), 1);
 
-    auto entry = std::find_if(interfaceMaps.begin(), interfaceMaps.end(),
-                              [](const auto& i) {
-        return "test_object_path" == i.first;
-    });
+    auto entry = std::find_if(
+        interfaceMaps.begin(), interfaceMaps.end(),
+        [](const auto& i) { return "test_object_path" == i.first; });
     ASSERT_NE(entry, interfaceMap.end());
     for (const auto& [_, interfaces] : entry->second)
     {
@@ -98,10 +97,9 @@
     addObjectMapResult(interfaceMaps, "test_object_path",
                        std::pair<std::string, InterfaceNames>(
                            "test_object_connection_1", {"test_interface_2"}));
-    entry = std::find_if(interfaceMaps.begin(), interfaceMaps.end(),
-                         [](const auto& i) {
-        return "test_object_path" == i.first;
-    });
+    entry = std::find_if(
+        interfaceMaps.begin(), interfaceMaps.end(),
+        [](const auto& i) { return "test_object_path" == i.first; });
     ASSERT_NE(entry, interfaceMaps.end());
     for (const auto& [_, interfaces] : entry->second)
     {
