diff --git a/lib/cpp/test/GenericHelpers.h b/lib/cpp/test/GenericHelpers.h
index 1853a37..c175561 100644
--- a/lib/cpp/test/GenericHelpers.h
+++ b/lib/cpp/test/GenericHelpers.h
@@ -29,22 +29,41 @@
 
 /* ClassName Helper for cleaner exceptions */
 class ClassNames {
- public:
+public:
   template <typename T>
-  static const char* getName() { return "Unknown type"; }
+  static const char* getName() {
+    return "Unknown type";
+  }
 };
 
-template <> const char* ClassNames::getName<int8_t>() { return "byte"; }
-template <> const char* ClassNames::getName<int16_t>() { return "short"; }
-template <> const char* ClassNames::getName<int32_t>() { return "int"; }
-template <> const char* ClassNames::getName<int64_t>() { return "long"; }
-template <> const char* ClassNames::getName<double>() { return "double"; }
-template <> const char* ClassNames::getName<std::string>() { return "string"; }
+template <>
+const char* ClassNames::getName<int8_t>() {
+  return "byte";
+}
+template <>
+const char* ClassNames::getName<int16_t>() {
+  return "short";
+}
+template <>
+const char* ClassNames::getName<int32_t>() {
+  return "int";
+}
+template <>
+const char* ClassNames::getName<int64_t>() {
+  return "long";
+}
+template <>
+const char* ClassNames::getName<double>() {
+  return "double";
+}
+template <>
+const char* ClassNames::getName<std::string>() {
+  return "string";
+}
 
 /* Generic Protocol I/O function for tests */
 class GenericIO {
- public:
-
+public:
   /* Write functions */
 
   static uint32_t write(shared_ptr<TProtocol> proto, const int8_t& val) {
@@ -73,30 +92,19 @@
 
   /* Read functions */
 
-  static uint32_t read(shared_ptr<TProtocol> proto, int8_t& val) {
-    return proto->readByte(val);
-  }
+  static uint32_t read(shared_ptr<TProtocol> proto, int8_t& val) { return proto->readByte(val); }
 
-  static uint32_t read(shared_ptr<TProtocol> proto, int16_t& val) {
-    return proto->readI16(val);
-  }
+  static uint32_t read(shared_ptr<TProtocol> proto, int16_t& val) { return proto->readI16(val); }
 
-  static uint32_t read(shared_ptr<TProtocol> proto, int32_t& val) {
-    return proto->readI32(val);
-  }
+  static uint32_t read(shared_ptr<TProtocol> proto, int32_t& val) { return proto->readI32(val); }
 
-  static uint32_t read(shared_ptr<TProtocol> proto, int64_t& val) {
-    return proto->readI64(val);
-  }
+  static uint32_t read(shared_ptr<TProtocol> proto, int64_t& val) { return proto->readI64(val); }
 
-  static uint32_t read(shared_ptr<TProtocol> proto, double& val) {
-    return proto->readDouble(val);
-  }
+  static uint32_t read(shared_ptr<TProtocol> proto, double& val) { return proto->readDouble(val); }
 
   static uint32_t read(shared_ptr<TProtocol> proto, std::string& val) {
     return proto->readString(val);
   }
-
 };
 
 #endif
