summaryrefslogtreecommitdiffstats
path: root/clang/unittests/Format/FormatTestUtils.h
diff options
context:
space:
mode:
authorAlexander Kornienko <alexfh@google.com>2013-12-03 10:50:16 +0000
committerAlexander Kornienko <alexfh@google.com>2013-12-03 10:50:16 +0000
commita48a12cf81cb0804506ddeb4994f17008cf097b3 (patch)
tree00f58af46ff99f2706774862affea8019e248005 /clang/unittests/Format/FormatTestUtils.h
parentf54dcbc4e65a1d9d6a9c5731ed5ffd86a87c89ac (diff)
downloadbcm5719-llvm-a48a12cf81cb0804506ddeb4994f17008cf097b3.tar.gz
bcm5719-llvm-a48a12cf81cb0804506ddeb4994f17008cf097b3.zip
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
Diffstat (limited to 'clang/unittests/Format/FormatTestUtils.h')
-rw-r--r--clang/unittests/Format/FormatTestUtils.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/clang/unittests/Format/FormatTestUtils.h b/clang/unittests/Format/FormatTestUtils.h
new file mode 100644
index 00000000000..649f5b3822c
--- /dev/null
+++ b/clang/unittests/Format/FormatTestUtils.h
@@ -0,0 +1,67 @@
+//===- unittest/Format/FormatTestUtils.h - Formatting unit tests ----------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines utility functions for Clang-Format related tests.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_FORMAT_TEST_UTILS_H
+#define LLVM_CLANG_FORMAT_TEST_UTILS_H
+
+#include "llvm/ADT/StringRef.h"
+
+namespace clang {
+namespace format {
+namespace test {
+
+inline 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;
+}
+
+} // end namespace test
+} // end namespace format
+} // end namespace clang
+
+#endif // LLVM_CLANG_FORMAT_TEST_UTILS_H
OpenPOWER on IntegriCloud