diff options
Diffstat (limited to 'clang-tools-extra/unittests/clangd')
| -rw-r--r-- | clang-tools-extra/unittests/clangd/ClangdTests.cpp | 31 | ||||
| -rw-r--r-- | clang-tools-extra/unittests/clangd/SourceCodeTests.cpp | 48 |
2 files changed, 45 insertions, 34 deletions
diff --git a/clang-tools-extra/unittests/clangd/ClangdTests.cpp b/clang-tools-extra/unittests/clangd/ClangdTests.cpp index 65e5ea88db7..4bd2cb27449 100644 --- a/clang-tools-extra/unittests/clangd/ClangdTests.cpp +++ b/clang-tools-extra/unittests/clangd/ClangdTests.cpp @@ -280,15 +280,13 @@ TEST_F(ClangdVFSTest, CheckVersions) { // thread. FS.Tag = "123"; Server.addDocument(FooCpp, SourceContents); - EXPECT_EQ(runCodeComplete(Server, FooCpp, Position{0, 0}, CCOpts).Tag, - FS.Tag); + EXPECT_EQ(runCodeComplete(Server, FooCpp, Position(), CCOpts).Tag, FS.Tag); EXPECT_EQ(DiagConsumer.lastVFSTag(), FS.Tag); FS.Tag = "321"; Server.addDocument(FooCpp, SourceContents); EXPECT_EQ(DiagConsumer.lastVFSTag(), FS.Tag); - EXPECT_EQ(runCodeComplete(Server, FooCpp, Position{0, 0}, CCOpts).Tag, - FS.Tag); + EXPECT_EQ(runCodeComplete(Server, FooCpp, Position(), CCOpts).Tag, FS.Tag); } // Only enable this test on Unix @@ -451,16 +449,16 @@ TEST_F(ClangdVFSTest, InvalidCompileCommand) { Server.addDocument(FooCpp, "int main() {}"); EXPECT_EQ(Server.dumpAST(FooCpp), "<no-ast>"); - EXPECT_ERROR(Server.findDefinitions(FooCpp, Position{0, 0})); - EXPECT_ERROR(Server.findDocumentHighlights(FooCpp, Position{0, 0})); - EXPECT_ERROR(Server.rename(FooCpp, Position{0, 0}, "new_name")); + EXPECT_ERROR(Server.findDefinitions(FooCpp, Position())); + EXPECT_ERROR(Server.findDocumentHighlights(FooCpp, Position())); + EXPECT_ERROR(Server.rename(FooCpp, Position(), "new_name")); // FIXME: codeComplete and signatureHelp should also return errors when they // can't parse the file. - EXPECT_THAT(runCodeComplete(Server, FooCpp, Position{0, 0}, - clangd::CodeCompleteOptions()) - .Value.items, - IsEmpty()); - auto SigHelp = Server.signatureHelp(FooCpp, Position{0, 0}); + EXPECT_THAT( + runCodeComplete(Server, FooCpp, Position(), clangd::CodeCompleteOptions()) + .Value.items, + IsEmpty()); + auto SigHelp = Server.signatureHelp(FooCpp, Position()); ASSERT_TRUE(bool(SigHelp)) << "signatureHelp returned an error"; EXPECT_THAT(SigHelp->Value.signatures, IsEmpty()); } @@ -642,7 +640,9 @@ int d; if (ReqStats[FileIndex].FileIsRemoved) AddDocument(FileIndex); - Position Pos{LineDist(RandGen), ColumnDist(RandGen)}; + Position Pos; + Pos.line = LineDist(RandGen); + Pos.character = ColumnDist(RandGen); // FIXME(ibiryukov): Also test async completion requests. // Simply putting CodeCompletion into async requests now would make // tests slow, since there's no way to cancel previous completion @@ -659,7 +659,10 @@ int d; if (ReqStats[FileIndex].FileIsRemoved) AddDocument(FileIndex); - Position Pos{LineDist(RandGen), ColumnDist(RandGen)}; + Position Pos; + Pos.line = LineDist(RandGen); + Pos.character = ColumnDist(RandGen); + ASSERT_TRUE(!!Server.findDefinitions(FilePaths[FileIndex], Pos)); }; diff --git a/clang-tools-extra/unittests/clangd/SourceCodeTests.cpp b/clang-tools-extra/unittests/clangd/SourceCodeTests.cpp index 8bfae7b9653..86c8a0984b4 100644 --- a/clang-tools-extra/unittests/clangd/SourceCodeTests.cpp +++ b/clang-tools-extra/unittests/clangd/SourceCodeTests.cpp @@ -23,32 +23,40 @@ const char File[] = R"(0:0 = 0 1:0 = 8 2:0 = 16)"; +/// A helper to make tests easier to read. +Position position(int line, int character) { + Position Pos; + Pos.line = line; + Pos.character = character; + return Pos; +} + TEST(SourceCodeTests, PositionToOffset) { // line out of bounds - EXPECT_EQ(0u, positionToOffset(File, Position{-1, 2})); + EXPECT_EQ(0u, positionToOffset(File, position(-1, 2))); // first line - EXPECT_EQ(0u, positionToOffset(File, Position{0, -1})); // out of range - EXPECT_EQ(0u, positionToOffset(File, Position{0, 0})); // first character - EXPECT_EQ(3u, positionToOffset(File, Position{0, 3})); // middle character - EXPECT_EQ(6u, positionToOffset(File, Position{0, 6})); // last character - EXPECT_EQ(7u, positionToOffset(File, Position{0, 7})); // the newline itself - EXPECT_EQ(8u, positionToOffset(File, Position{0, 8})); // out of range + EXPECT_EQ(0u, positionToOffset(File, position(0, -1))); // out of range + EXPECT_EQ(0u, positionToOffset(File, position(0, 0))); // first character + EXPECT_EQ(3u, positionToOffset(File, position(0, 3))); // middle character + EXPECT_EQ(6u, positionToOffset(File, position(0, 6))); // last character + EXPECT_EQ(7u, positionToOffset(File, position(0, 7))); // the newline itself + EXPECT_EQ(8u, positionToOffset(File, position(0, 8))); // out of range // middle line - EXPECT_EQ(8u, positionToOffset(File, Position{1, -1})); // out of range - EXPECT_EQ(8u, positionToOffset(File, Position{1, 0})); // first character - EXPECT_EQ(11u, positionToOffset(File, Position{1, 3})); // middle character - EXPECT_EQ(14u, positionToOffset(File, Position{1, 6})); // last character - EXPECT_EQ(15u, positionToOffset(File, Position{1, 7})); // the newline itself - EXPECT_EQ(16u, positionToOffset(File, Position{1, 8})); // out of range + EXPECT_EQ(8u, positionToOffset(File, position(1, -1))); // out of range + EXPECT_EQ(8u, positionToOffset(File, position(1, 0))); // first character + EXPECT_EQ(11u, positionToOffset(File, position(1, 3))); // middle character + EXPECT_EQ(14u, positionToOffset(File, position(1, 6))); // last character + EXPECT_EQ(15u, positionToOffset(File, position(1, 7))); // the newline itself + EXPECT_EQ(16u, positionToOffset(File, position(1, 8))); // out of range // last line - EXPECT_EQ(16u, positionToOffset(File, Position{2, -1})); // out of range - EXPECT_EQ(16u, positionToOffset(File, Position{2, 0})); // first character - EXPECT_EQ(19u, positionToOffset(File, Position{2, 3})); // middle character - EXPECT_EQ(23u, positionToOffset(File, Position{2, 7})); // last character - EXPECT_EQ(24u, positionToOffset(File, Position{2, 8})); // EOF - EXPECT_EQ(24u, positionToOffset(File, Position{2, 9})); // out of range + EXPECT_EQ(16u, positionToOffset(File, position(2, -1))); // out of range + EXPECT_EQ(16u, positionToOffset(File, position(2, 0))); // first character + EXPECT_EQ(19u, positionToOffset(File, position(2, 3))); // middle character + EXPECT_EQ(23u, positionToOffset(File, position(2, 7))); // last character + EXPECT_EQ(24u, positionToOffset(File, position(2, 8))); // EOF + EXPECT_EQ(24u, positionToOffset(File, position(2, 9))); // out of range // line out of bounds - EXPECT_EQ(24u, positionToOffset(File, Position{3, 1})); + EXPECT_EQ(24u, positionToOffset(File, position(3, 1))); } TEST(SourceCodeTests, OffsetToPosition) { |

