diff --git a/test/fanpwm_unittest.cpp b/test/fanpwm_unittest.cpp
index 11dcee9..b42c76d 100644
--- a/test/fanpwm_unittest.cpp
+++ b/test/fanpwm_unittest.cpp
@@ -19,8 +19,8 @@
 
 // Handle basic expectations we'll need for all these tests, if it's found that
 // this is helpful for more tests, it can be promoted in scope.
-void SetupDbusObject(sdbusplus::SdBusMock *sdbus_mock, const std::string &path,
-                     const std::string &intf, const std::string property = "")
+void SetupDbusObject(sdbusplus::SdBusMock* sdbus_mock, const std::string& path,
+                     const std::string& intf, const std::string property = "")
 {
     EXPECT_CALL(*sdbus_mock,
                 sd_bus_add_object_vtable(IsNull(), NotNull(), StrEq(path),
@@ -39,8 +39,8 @@
         EXPECT_CALL(*sdbus_mock,
                     sd_bus_emit_properties_changed_strv(IsNull(), StrEq(path),
                                                         StrEq(intf), NotNull()))
-            .WillOnce(Invoke([=](sd_bus *bus, const char *path,
-                                 const char *interface, char **names) {
+            .WillOnce(Invoke([=](sd_bus* bus, const char* path,
+                                 const char* interface, char** names) {
                 EXPECT_STREQ(property.c_str(), names[0]);
                 return 0;
             }));
@@ -124,8 +124,8 @@
 
     SetupDbusObject(&sdbus_mock, objPath, FanPwmIntf, FanPwmProp);
 
-    hwmonio::HwmonIOMock *hwmonio =
-        reinterpret_cast<hwmonio::HwmonIOMock *>(hwmonio_mock.get());
+    hwmonio::HwmonIOMock* hwmonio =
+        reinterpret_cast<hwmonio::HwmonIOMock*>(hwmonio_mock.get());
 
     hwmon::FanPwm f(std::move(hwmonio_mock), devPath, id, bus_mock,
                     objPath.c_str(), defer, target);
@@ -139,8 +139,8 @@
     EXPECT_CALL(sdbus_mock,
                 sd_bus_emit_properties_changed_strv(
                     IsNull(), StrEq("asdf"), StrEq(FanPwmIntf), NotNull()))
-        .WillOnce(Invoke([&](sd_bus *bus, const char *path,
-                             const char *interface, char **names) {
+        .WillOnce(Invoke([&](sd_bus* bus, const char* path,
+                             const char* interface, char** names) {
             EXPECT_EQ(0, strncmp("Target", names[0], 6));
             return 0;
         }));
