diff --git a/test/dbus_passive_unittest.cpp b/test/dbus_passive_unittest.cpp
index 40e68c4..9120336 100644
--- a/test/dbus_passive_unittest.cpp
+++ b/test/dbus_passive_unittest.cpp
@@ -298,7 +298,6 @@
 
 TEST_F(DbusPassiveTestObj, VerifyCriticalThresholdAssert)
 {
-
     // Verifies when a threshold is crossed the sensor goes into error state
     EXPECT_CALL(sdbus_mock, sd_bus_message_ref(IsNull()))
         .WillOnce(Return(nullptr));
@@ -375,7 +374,6 @@
 
 TEST_F(DbusPassiveTestObj, VerifyCriticalThresholdDeassert)
 {
-
     // Verifies when a threshold is deasserted a failed sensor goes back into
     // the normal state
     EXPECT_CALL(sdbus_mock, sd_bus_message_ref(IsNull()))
@@ -453,7 +451,6 @@
 
 TEST_F(DbusPassiveTestObj, VerifyAvailableDeassert)
 {
-
     // Verifies when Availble is deasserted && unavailableAsFailed == true,
     // the sensor goes into error state
     EXPECT_CALL(sdbus_mock, sd_bus_message_ref(IsNull()))
@@ -531,7 +528,6 @@
 
 TEST_F(DbusPassiveTestObj, VerifyAvailableAssert)
 {
-
     // Verifies when Availble is asserted && unavailableAsFailed == true,
     // an error sensor goes back to normal state
     EXPECT_CALL(sdbus_mock, sd_bus_message_ref(IsNull()))
@@ -658,7 +654,6 @@
 
 TEST_F(DbusPassiveTestUnaSensorNotAsFailedObj, VerifyAvailableDeassert)
 {
-
     // Verifies when Availble is deasserted && unavailableAsFailed == false,
     // the sensor remains at OK state but reading goes to NaN.
     EXPECT_CALL(sdbus_mock, sd_bus_message_ref(IsNull()))
@@ -738,7 +733,6 @@
 
 TEST_F(DbusPassiveTestUnaSensorNotAsFailedObj, VerifyAvailableAssert)
 {
-
     // Verifies when a sensor's state goes from unavailble to available
     // && unavailableAsFailed == false, this sensor remains at OK state.
     EXPECT_CALL(sdbus_mock, sd_bus_message_ref(IsNull()))
diff --git a/test/pid_thermalcontroller_unittest.cpp b/test/pid_thermalcontroller_unittest.cpp
index ab45661..6069154 100644
--- a/test/pid_thermalcontroller_unittest.cpp
+++ b/test/pid_thermalcontroller_unittest.cpp
@@ -175,7 +175,6 @@
 
 TEST(ThermalControllerTest, NegHysteresis_BehavesAsExpected)
 {
-
     // This test verifies Negative hysteresis behaves as expected by
     // crossing the setpoint and noticing readings don't change until past the
     // hysteresis value
diff --git a/test/pid_zone_unittest.cpp b/test/pid_zone_unittest.cpp
index 3a5871d..8e74367 100644
--- a/test/pid_zone_unittest.cpp
+++ b/test/pid_zone_unittest.cpp
@@ -218,13 +218,13 @@
     std::string name1 = "temp1";
     int64_t timeout = 1;
 
-    std::unique_ptr<Sensor> sensor1 =
-        std::make_unique<SensorMock>(name1, timeout);
+    std::unique_ptr<Sensor> sensor1 = std::make_unique<SensorMock>(name1,
+                                                                   timeout);
     SensorMock* sensor_ptr1 = reinterpret_cast<SensorMock*>(sensor1.get());
 
     std::string name2 = "temp2";
-    std::unique_ptr<Sensor> sensor2 =
-        std::make_unique<SensorMock>(name2, timeout);
+    std::unique_ptr<Sensor> sensor2 = std::make_unique<SensorMock>(name2,
+                                                                   timeout);
     SensorMock* sensor_ptr2 = reinterpret_cast<SensorMock*>(sensor2.get());
 
     std::string type = "unchecked";
@@ -270,13 +270,13 @@
     std::string name1 = "fan1";
     int64_t timeout = 2;
 
-    std::unique_ptr<Sensor> sensor1 =
-        std::make_unique<SensorMock>(name1, timeout);
+    std::unique_ptr<Sensor> sensor1 = std::make_unique<SensorMock>(name1,
+                                                                   timeout);
     SensorMock* sensor_ptr1 = reinterpret_cast<SensorMock*>(sensor1.get());
 
     std::string name2 = "fan2";
-    std::unique_ptr<Sensor> sensor2 =
-        std::make_unique<SensorMock>(name2, timeout);
+    std::unique_ptr<Sensor> sensor2 = std::make_unique<SensorMock>(name2,
+                                                                   timeout);
     SensorMock* sensor_ptr2 = reinterpret_cast<SensorMock*>(sensor2.get());
 
     std::string type = "unchecked";
@@ -318,13 +318,13 @@
     int64_t timeout = 1;
 
     std::string name1 = "temp1";
-    std::unique_ptr<Sensor> sensor1 =
-        std::make_unique<SensorMock>(name1, timeout);
+    std::unique_ptr<Sensor> sensor1 = std::make_unique<SensorMock>(name1,
+                                                                   timeout);
     SensorMock* sensor_ptr1 = reinterpret_cast<SensorMock*>(sensor1.get());
 
     std::string name2 = "temp2";
-    std::unique_ptr<Sensor> sensor2 =
-        std::make_unique<SensorMock>(name2, timeout);
+    std::unique_ptr<Sensor> sensor2 = std::make_unique<SensorMock>(name2,
+                                                                   timeout);
     SensorMock* sensor_ptr2 = reinterpret_cast<SensorMock*>(sensor2.get());
 
     std::string type = "unchecked";
@@ -377,13 +377,13 @@
     std::string name1 = "fan1";
     int64_t timeout = 2;
 
-    std::unique_ptr<Sensor> sensor1 =
-        std::make_unique<SensorMock>(name1, timeout);
+    std::unique_ptr<Sensor> sensor1 = std::make_unique<SensorMock>(name1,
+                                                                   timeout);
     SensorMock* sensor_ptr1 = reinterpret_cast<SensorMock*>(sensor1.get());
 
     std::string name2 = "fan2";
-    std::unique_ptr<Sensor> sensor2 =
-        std::make_unique<SensorMock>(name2, timeout);
+    std::unique_ptr<Sensor> sensor2 = std::make_unique<SensorMock>(name2,
+                                                                   timeout);
     SensorMock* sensor_ptr2 = reinterpret_cast<SensorMock*>(sensor2.get());
 
     std::string type = "unchecked";
@@ -430,13 +430,13 @@
     std::string name1 = "fan1";
     int64_t timeout = 2;
 
-    std::unique_ptr<Sensor> sensor1 =
-        std::make_unique<SensorMock>(name1, timeout);
+    std::unique_ptr<Sensor> sensor1 = std::make_unique<SensorMock>(name1,
+                                                                   timeout);
     SensorMock* sensor_ptr1 = reinterpret_cast<SensorMock*>(sensor1.get());
 
     std::string name2 = "fan2";
-    std::unique_ptr<Sensor> sensor2 =
-        std::make_unique<SensorMock>(name2, timeout);
+    std::unique_ptr<Sensor> sensor2 = std::make_unique<SensorMock>(name2,
+                                                                   timeout);
     SensorMock* sensor_ptr2 = reinterpret_cast<SensorMock*>(sensor2.get());
 
     std::string type = "unchecked";
@@ -489,8 +489,8 @@
     int64_t timeout = 1;
 
     std::string name1 = "temp1";
-    std::unique_ptr<Sensor> sensor1 =
-        std::make_unique<SensorMock>(name1, timeout);
+    std::unique_ptr<Sensor> sensor1 = std::make_unique<SensorMock>(name1,
+                                                                   timeout);
     SensorMock* sensor_ptr1 = reinterpret_cast<SensorMock*>(sensor1.get());
 
     std::string type = "unchecked";
@@ -564,9 +564,9 @@
         .WillOnce(Invoke(
             [&]([[maybe_unused]] sd_bus* bus, [[maybe_unused]] const char* path,
                 [[maybe_unused]] const char* interface, const char** names) {
-                EXPECT_STREQ("Manual", names[0]);
-                return 0;
-            }));
+        EXPECT_STREQ("Manual", names[0]);
+        return 0;
+        }));
 
     // Method under test will set the manual mode to true and broadcast this
     // change on dbus.
diff --git a/test/sensor_host_unittest.cpp b/test/sensor_host_unittest.cpp
index e9800cf..4fe0816 100644
--- a/test/sensor_host_unittest.cpp
+++ b/test/sensor_host_unittest.cpp
@@ -51,8 +51,8 @@
                 sd_bus_emit_object_removed(IsNull(), StrEq(objPath)))
         .WillOnce(Return(0));
 
-    std::unique_ptr<Sensor> s =
-        HostSensor::createTemp(name, timeout, bus_mock, objPath, defer);
+    std::unique_ptr<Sensor> s = HostSensor::createTemp(name, timeout, bus_mock,
+                                                       objPath, defer);
 }
 
 TEST(HostSensorTest, VerifyWriteThenReadMatches)
@@ -77,8 +77,8 @@
                 sd_bus_emit_object_removed(IsNull(), StrEq(objPath)))
         .WillOnce(Return(0));
 
-    std::unique_ptr<Sensor> s =
-        HostSensor::createTemp(name, timeout, bus_mock, objPath, defer);
+    std::unique_ptr<Sensor> s = HostSensor::createTemp(name, timeout, bus_mock,
+                                                       objPath, defer);
 
     // Value is updated from dbus calls only (normally).
     HostSensor* hs = static_cast<HostSensor*>(s.get());
@@ -93,9 +93,9 @@
         .WillOnce(Invoke(
             [=]([[maybe_unused]] sd_bus* bus, [[maybe_unused]] const char* path,
                 [[maybe_unused]] const char* interface, const char** names) {
-                EXPECT_STREQ("Value", names[0]);
-                return 0;
-            }));
+        EXPECT_STREQ("Value", names[0]);
+        return 0;
+        }));
 
     std::chrono::high_resolution_clock::time_point t1 =
         std::chrono::high_resolution_clock::now();
diff --git a/test/sensor_manager_unittest.cpp b/test/sensor_manager_unittest.cpp
index 85865a8..b5b67c7 100644
--- a/test/sensor_manager_unittest.cpp
+++ b/test/sensor_manager_unittest.cpp
@@ -53,8 +53,8 @@
     std::string name = "name";
     std::string type = "invalid";
     int64_t timeout = 1;
-    std::unique_ptr<Sensor> sensor =
-        std::make_unique<SensorMock>(name, timeout);
+    std::unique_ptr<Sensor> sensor = std::make_unique<SensorMock>(name,
+                                                                  timeout);
     Sensor* sensor_ptr = sensor.get();
 
     s.addSensor(type, name, std::move(sensor));
diff --git a/test/writeinterface_mock.hpp b/test/writeinterface_mock.hpp
index 0aed48d..669c1d9 100644
--- a/test/writeinterface_mock.hpp
+++ b/test/writeinterface_mock.hpp
@@ -12,8 +12,7 @@
   public:
     virtual ~WriteInterfaceMock() = default;
 
-    WriteInterfaceMock(int64_t min, int64_t max) : WriteInterface(min, max)
-    {}
+    WriteInterfaceMock(int64_t min, int64_t max) : WriteInterface(min, max) {}
 
     MOCK_METHOD1(write, void(double));
 };
