diff options
Diffstat (limited to 'clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp')
| -rw-r--r-- | clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp b/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp index d7c6d4d502a..a5c793251a4 100644 --- a/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp +++ b/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp @@ -8,6 +8,7 @@ #include "Annotations.h" #include "ClangdServer.h" +#include "Protocol.h" #include "SemanticHighlighting.h" #include "TestFS.h" #include "TestTU.h" @@ -66,7 +67,7 @@ TEST(SemanticHighlighting, GetsCorrectTokens) { } } -TEST(ClangdSemanticHighlightingTest, GeneratesHighlightsWhenFileChange) { +TEST(SemanticHighlighting, GeneratesHighlightsWhenFileChange) { class HighlightingsCounterDiagConsumer : public DiagnosticsConsumer { public: std::atomic<int> Count = {0}; @@ -90,6 +91,29 @@ TEST(ClangdSemanticHighlightingTest, GeneratesHighlightsWhenFileChange) { ASSERT_EQ(DiagConsumer.Count, 1); } +TEST(SemanticHighlighting, toSemanticHighlightingInformation) { + auto CreatePosition = [](int Line, int Character) -> Position { + Position Pos; + Pos.line = Line; + Pos.character = Character; + return Pos; + }; + + std::vector<HighlightingToken> Tokens{ + {HighlightingKind::Variable, + Range{CreatePosition(3, 8), CreatePosition(3, 12)}}, + {HighlightingKind::Function, + Range{CreatePosition(3, 4), CreatePosition(3, 7)}}, + {HighlightingKind::Variable, + Range{CreatePosition(1, 1), CreatePosition(1, 5)}}}; + std::vector<SemanticHighlightingInformation> ActualResults = + toSemanticHighlightingInformation(Tokens); + std::vector<SemanticHighlightingInformation> ExpectedResults = { + {1, "AAAAAQAEAAA="}, + {3, "AAAACAAEAAAAAAAEAAMAAQ=="}}; + EXPECT_EQ(ActualResults, ExpectedResults); +} + } // namespace } // namespace clangd } // namespace clang |

