Create a separate file for JS-specific unit tests.
Reviewers: djasper
Reviewed By: djasper
CC: cfe-commits, klimek
Differential Revision: http://llvm-reviews.chandlerc.com/D2307
llvm-svn: 196266
diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp
index 17972c6..88b2a0b 100644
--- a/clang/unittests/Format/FormatTest.cpp
+++ b/clang/unittests/Format/FormatTest.cpp
@@ -9,8 +9,9 @@
#define DEBUG_TYPE "format-test"
+#include "FormatTestUtils.h"
+
#include "clang/Format/Format.h"
-#include "clang/Lex/Lexer.h"
#include "llvm/Support/Debug.h"
#include "gtest/gtest.h"
@@ -37,46 +38,6 @@
return format(Code, 0, Code.size(), Style);
}
- std::string messUp(llvm::StringRef Code) {
- std::string MessedUp(Code.str());
- bool InComment = false;
- bool InPreprocessorDirective = false;
- bool JustReplacedNewline = false;
- for (unsigned i = 0, e = MessedUp.size() - 1; i != e; ++i) {
- if (MessedUp[i] == '/' && MessedUp[i + 1] == '/') {
- if (JustReplacedNewline)
- MessedUp[i - 1] = '\n';
- InComment = true;
- } else if (MessedUp[i] == '#' && (JustReplacedNewline || i == 0)) {
- if (i != 0)
- MessedUp[i - 1] = '\n';
- InPreprocessorDirective = true;
- } else if (MessedUp[i] == '\\' && MessedUp[i + 1] == '\n') {
- MessedUp[i] = ' ';
- MessedUp[i + 1] = ' ';
- } else if (MessedUp[i] == '\n') {
- if (InComment) {
- InComment = false;
- } else if (InPreprocessorDirective) {
- InPreprocessorDirective = false;
- } else {
- JustReplacedNewline = true;
- MessedUp[i] = ' ';
- }
- } else if (MessedUp[i] != ' ') {
- JustReplacedNewline = false;
- }
- }
- std::string WithoutWhitespace;
- if (MessedUp[0] != ' ')
- WithoutWhitespace.push_back(MessedUp[0]);
- for (unsigned i = 1, e = MessedUp.size(); i != e; ++i) {
- if (MessedUp[i] != ' ' || MessedUp[i - 1] != ' ')
- WithoutWhitespace.push_back(MessedUp[i]);
- }
- return WithoutWhitespace;
- }
-
FormatStyle getLLVMStyleWithColumns(unsigned ColumnLimit) {
FormatStyle Style = getLLVMStyle();
Style.ColumnLimit = ColumnLimit;
@@ -91,7 +52,7 @@
void verifyFormat(llvm::StringRef Code,
const FormatStyle &Style = getLLVMStyle()) {
- EXPECT_EQ(Code.str(), format(messUp(Code), Style));
+ EXPECT_EQ(Code.str(), format(test::messUp(Code), Style));
}
void verifyGoogleFormat(llvm::StringRef Code) {
@@ -107,11 +68,11 @@
};
TEST_F(FormatTest, MessUp) {
- EXPECT_EQ("1 2 3", messUp("1 2 3"));
- EXPECT_EQ("1 2 3\n", messUp("1\n2\n3\n"));
- EXPECT_EQ("a\n//b\nc", messUp("a\n//b\nc"));
- EXPECT_EQ("a\n#b\nc", messUp("a\n#b\nc"));
- EXPECT_EQ("a\n#b c d\ne", messUp("a\n#b\\\nc\\\nd\ne"));
+ EXPECT_EQ("1 2 3", test::messUp("1 2 3"));
+ EXPECT_EQ("1 2 3\n", test::messUp("1\n2\n3\n"));
+ EXPECT_EQ("a\n//b\nc", test::messUp("a\n//b\nc"));
+ EXPECT_EQ("a\n#b\nc", test::messUp("a\n#b\nc"));
+ EXPECT_EQ("a\n#b c d\ne", test::messUp("a\n#b\\\nc\\\nd\ne"));
}
//===----------------------------------------------------------------------===//
@@ -3598,7 +3559,7 @@
" aaaaaaaaaaaaaaaaaaaaaaaaaaa;",
Style);
verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaa =\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ?\n"
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ?\n"
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa :\n"
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;",
Style);
@@ -7561,43 +7522,10 @@
Spaces.Standard = FormatStyle::LS_Cpp11;
Spaces.SpacesInAngles = true;
verifyFormat("A< A< int > >();", Spaces);
-
+
Spaces.SpacesInAngles = false;
verifyFormat("A<A<int>>();", Spaces);
}
-TEST_F(FormatTest, UnderstandsJavaScript) {
- FormatStyle JS = getLLVMStyle();
- FormatStyle JS10Columns = getLLVMStyleWithColumns(10);
- FormatStyle JS20Columns = getLLVMStyleWithColumns(20);
- JS.Language = JS10Columns.Language = JS20Columns.Language =
- FormatStyle::LK_JavaScript;
-
- verifyFormat("a == = b;", JS);
- verifyFormat("a != = b;", JS);
-
- verifyFormat("a === b;", JS);
- verifyFormat("aaaaaaa ===\n b;", JS10Columns);
- verifyFormat("a !== b;", JS);
- verifyFormat("aaaaaaa !==\n b;", JS10Columns);
- verifyFormat("if (a + b + c +\n"
- " d !==\n"
- " e + f + g)\n"
- " q();",
- JS20Columns);
-
- verifyFormat("a >> >= b;", JS);
-
- verifyFormat("a >>> b;", JS);
- verifyFormat("aaaaaaa >>>\n b;", JS10Columns);
- verifyFormat("a >>>= b;", JS);
- verifyFormat("aaaaaaa >>>=\n b;", JS10Columns);
- verifyFormat("if (a + b + c +\n"
- " d >>>\n"
- " e + f + g)\n"
- " q();",
- JS20Columns);
-}
-
} // end namespace tooling
} // end namespace clang