summaryrefslogtreecommitdiff
path: root/unittests
diff options
context:
space:
mode:
authorUtkarsh Saxena <usx@google.com>2019-10-07 14:20:46 +0000
committerUtkarsh Saxena <usx@google.com>2019-10-07 14:20:46 +0000
commit4000ede51f313536d1970321427e2282b7d33f5f (patch)
tree93c7eab0198335859ebae24c386d3a08bcd3207d /unittests
parent7bd35772a0e85ce1e365b3c5f957faa0cc144149 (diff)
downloadclang-4000ede51f313536d1970321427e2282b7d33f5f.tar.gz
[clang] Add test for FindNextToken in Lexer.
Reviewers: ilya-biryukov Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D68565 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@373910 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests')
-rw-r--r--unittests/Lex/LexerTest.cpp25
1 files changed, 23 insertions, 2 deletions
diff --git a/unittests/Lex/LexerTest.cpp b/unittests/Lex/LexerTest.cpp
index 2295a90100..ad9010e5a8 100644
--- a/unittests/Lex/LexerTest.cpp
+++ b/unittests/Lex/LexerTest.cpp
@@ -11,9 +11,11 @@
#include "clang/Basic/DiagnosticOptions.h"
#include "clang/Basic/FileManager.h"
#include "clang/Basic/LangOptions.h"
+#include "clang/Basic/SourceLocation.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Basic/TargetOptions.h"
+#include "clang/Basic/TokenKinds.h"
#include "clang/Lex/HeaderSearch.h"
#include "clang/Lex/HeaderSearchOptions.h"
#include "clang/Lex/MacroArgs.h"
@@ -21,11 +23,13 @@
#include "clang/Lex/ModuleLoader.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Lex/PreprocessorOptions.h"
+#include "gmock/gmock.h"
#include "gtest/gtest.h"
-
-using namespace clang;
+#include <vector>
namespace {
+using namespace clang;
+using testing::ElementsAre;
// The test fixture.
class LexerTest : public ::testing::Test {
@@ -535,4 +539,21 @@ TEST_F(LexerTest, CharRangeOffByOne) {
EXPECT_EQ(Lexer::getSourceText(CR, SourceMgr, LangOpts), "MOO"); // Was "MO".
}
+TEST_F(LexerTest, FindNextToken) {
+ Lex("int abcd = 0;\n"
+ "int xyz = abcd;\n");
+ std::vector<std::string> GeneratedByNextToken;
+ SourceLocation Loc =
+ SourceMgr.getLocForStartOfFile(SourceMgr.getMainFileID());
+ while (true) {
+ auto T = Lexer::findNextToken(Loc, SourceMgr, LangOpts);
+ ASSERT_TRUE(T.hasValue());
+ if (T->is(tok::eof))
+ break;
+ GeneratedByNextToken.push_back(getSourceText(*T, *T));
+ Loc = T->getLocation();
+ }
+ EXPECT_THAT(GeneratedByNextToken, ElementsAre("abcd", "=", "0", ";", "int",
+ "xyz", "=", "abcd", ";"));
+}
} // anonymous namespace