From 4000ede51f313536d1970321427e2282b7d33f5f Mon Sep 17 00:00:00 2001 From: Utkarsh Saxena Date: Mon, 7 Oct 2019 14:20:46 +0000 Subject: [PATCH] [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 --- unittests/Lex/LexerTest.cpp | 25 +++++++++++++++++++++++-- 1 file 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 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 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 -- 2.40.0