diff --git a/test/vtable/vtable.cpp b/test/vtable/vtable.cpp
index ab1e34a..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);
-
