diff --git a/test/vtable/vtable.cpp b/test/vtable/vtable.cpp
index ab1e34aa..bc67382 100644
--- a/test/vtable/vtable.cpp
+++ b/test/vtable/vtable.cpp
@@ -1,22 +1,19 @@
 #include <sdbusplus/vtable.hpp>
 #include <gtest/gtest.h>
 
-static const sdbusplus::vtable::vtable_t example[] =
-    {
-        sdbusplus::vtable::start(),
-        sdbusplus::vtable::method((const char*)1, (const char*)2,
-                                  (const char*)3,
-                                  (sd_bus_message_handler_t)4),
-        sdbusplus::vtable::signal((const char*)5, (const char*)6),
-        sdbusplus::vtable::property((const char*)7, (const char*)8,
-                                    (sd_bus_property_get_t)9,
-                                    sdbusplus::vtable::property_::const_),
-        sdbusplus::vtable::property((const char*)10, (const char*)11,
-                                    (sd_bus_property_get_t)12,
-                                    (sd_bus_property_set_t)13),
-        sdbusplus::vtable::property_o((const char*)14, (const char*)15, 16),
-        sdbusplus::vtable::end()
-    };
+static const sdbusplus::vtable::vtable_t example[] = {
+    sdbusplus::vtable::start(),
+    sdbusplus::vtable::method((const char*)1, (const char*)2, (const char*)3,
+                              (sd_bus_message_handler_t)4),
+    sdbusplus::vtable::signal((const char*)5, (const char*)6),
+    sdbusplus::vtable::property((const char*)7, (const char*)8,
+                                (sd_bus_property_get_t)9,
+                                sdbusplus::vtable::property_::const_),
+    sdbusplus::vtable::property((const char*)10, (const char*)11,
+                                (sd_bus_property_get_t)12,
+                                (sd_bus_property_set_t)13),
+    sdbusplus::vtable::property_o((const char*)14, (const char*)15, 16),
+    sdbusplus::vtable::end()};
 
 extern const sd_bus_vtable example2[];
 extern const size_t example2_size;
diff --git a/test/vtable/vtable_c.c b/test/vtable/vtable_c.c
index 442d6c7..d01506b 100644
--- a/test/vtable/vtable_c.c
+++ b/test/vtable/vtable_c.c
@@ -1,21 +1,17 @@
 #include <systemd/sd-bus.h>
 
-
-const sd_bus_vtable example2[] =
-    {
-        SD_BUS_VTABLE_START(0),
-        SD_BUS_METHOD((const char*)1, (const char*)2,
-                      (const char*)3, (sd_bus_message_handler_t)4, 0),
-        SD_BUS_SIGNAL((const char*)5, (const char*)6, 0),
-        SD_BUS_PROPERTY((const char*)7, (const char*)8,
-                        (sd_bus_property_get_t)9, 0,
-                        SD_BUS_VTABLE_PROPERTY_CONST),
-        SD_BUS_WRITABLE_PROPERTY((const char*)10, (const char*)11,
-                                 (sd_bus_property_get_t)12,
-                                 (sd_bus_property_set_t)13, 0, 0),
-        SD_BUS_PROPERTY((const char*)14, (const char*)15, NULL, 16, 0),
-        SD_BUS_VTABLE_END,
-    };
+const sd_bus_vtable example2[] = {
+    SD_BUS_VTABLE_START(0),
+    SD_BUS_METHOD((const char*)1, (const char*)2, (const char*)3,
+                  (sd_bus_message_handler_t)4, 0),
+    SD_BUS_SIGNAL((const char*)5, (const char*)6, 0),
+    SD_BUS_PROPERTY((const char*)7, (const char*)8, (sd_bus_property_get_t)9, 0,
+                    SD_BUS_VTABLE_PROPERTY_CONST),
+    SD_BUS_WRITABLE_PROPERTY((const char*)10, (const char*)11,
+                             (sd_bus_property_get_t)12,
+                             (sd_bus_property_set_t)13, 0, 0),
+    SD_BUS_PROPERTY((const char*)14, (const char*)15, NULL, 16, 0),
+    SD_BUS_VTABLE_END,
+};
 
 const size_t example2_size = sizeof(example2);
-
