diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp
index 8e55ddb..1ab4a53 100644
--- a/unittests/Format/FormatTest.cpp
+++ b/unittests/Format/FormatTest.cpp
@@ -78,6 +78,12 @@
     return Style;
   }
 
+  FormatStyle getGoogleStyleWithColumns(unsigned ColumnLimit) {
+    FormatStyle Style = getGoogleStyle();
+    Style.ColumnLimit = ColumnLimit;
+    return Style;
+  }
+
   void verifyFormat(llvm::StringRef Code,
                     const FormatStyle &Style = getLLVMStyle()) {
     EXPECT_EQ(Code.str(), format(messUp(Code), Style));
@@ -130,16 +136,16 @@
 //===----------------------------------------------------------------------===//
 
 TEST_F(FormatTest, FormatIfWithoutCompountStatement) {
-  verifyFormat("if (true) f();\ng();");
-  verifyFormat("if (a)\n  if (b)\n    if (c) g();\nh();");
+  verifyFormat("if (true)\n  f();\ng();");
+  verifyFormat("if (a)\n  if (b)\n    if (c)\n      g();\nh();");
   verifyFormat("if (a)\n  if (b) {\n    f();\n  }\ng();");
-  verifyFormat("if (a)\n"
-               "  // comment\n"
-               "  f();");
-  verifyFormat("if (a) return;", getLLVMStyleWithColumns(14));
-  verifyFormat("if (a)\n  return;", getLLVMStyleWithColumns(13));
+  verifyGoogleFormat("if (a)\n"
+                     "  // comment\n"
+                     "  f();");
+  verifyFormat("if (a) return;", getGoogleStyleWithColumns(14));
+  verifyFormat("if (a)\n  return;", getGoogleStyleWithColumns(13));
   verifyFormat("if (aaaaaaaaa)\n"
-               "  return;", getLLVMStyleWithColumns(14));
+                     "  return;", getGoogleStyleWithColumns(14));
 }
 
 TEST_F(FormatTest, ParseIfElse) {
@@ -156,7 +162,8 @@
   verifyFormat("if (true)\n"
                "  if (true)\n"
                "    if (true) {\n"
-               "      if (true) f();\n"
+               "      if (true)\n"
+               "        f();\n"
                "    } else {\n"
                "      g();\n"
                "    }\n"
@@ -1461,7 +1468,8 @@
 
   verifyFormat("@implementation Foo\n"
                "+ (id)init {\n"
-               "  if (true) return nil;\n"
+               "  if (true)\n"
+               "    return nil;\n"
                "}\n"
                "// Look, a comment!\n"
                "- (int)answerWith:(int)i {\n"
