diff --git a/test/flyweight_test.cpp b/test/flyweight_test.cpp
index 83b33c0..118f24e 100644
--- a/test/flyweight_test.cpp
+++ b/test/flyweight_test.cpp
@@ -8,20 +8,20 @@
 {
   public:
     Foo() = default;
-    explicit Foo( int i ) : iv_i(i) {}
+    explicit Foo(int i) : iv_i(i) {}
     int get() const { return iv_i; }
-    bool operator==( const Foo & i_r ) const { return iv_i == i_r.iv_i; }
-    bool operator<(  const Foo & i_r ) const { return iv_i <  i_r.iv_i; }
+    bool operator==(const Foo & i_r) const { return iv_i == i_r.iv_i; }
+    bool operator<(const Foo & i_r) const { return iv_i <  i_r.iv_i; }
   private:
     int iv_i = 0;
 };
 
-Foo & addFoo( int i )
+Foo & addFoo(int i)
 {
-    return Flyweight<Foo>::getSingleton().get( Foo { i } );
+    return Flyweight<Foo>::getSingleton().get(Foo { i });
 }
 
-TEST( FlyweightTest, TestSet1 )
+TEST(FlyweightTest, TestSet1)
 {
     // Add some unique entries in a random order and keep track of where those
     // enties exist in memory.
@@ -34,9 +34,9 @@
 
     // Now add more entries and verify the 'new' entries match the same
     // addresses as the previously added entries.
-    for ( int i = 4; i >= 0; i-- )
+    for (int i = 4; i >= 0; i--)
     {
-        ASSERT_EQ( a[i], &(addFoo(i)) );
+        ASSERT_EQ(a[i], &(addFoo(i)));
     }
 
     // At this point, we have proven that duplicate entries will return
