summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
diff options
context:
space:
mode:
authorHaojian Wu <hokein@google.com>2019-08-26 08:38:45 +0000
committerHaojian Wu <hokein@google.com>2019-08-26 08:38:45 +0000
commit0a6000f2cbb40abd008338895a471f474347b80d (patch)
treee74fbafb1652c862315e98e18e85c8345a0028cb /clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
parent72ca5f36944ee01566ca1a42083e52315ea4264a (diff)
downloadbcm5719-llvm-0a6000f2cbb40abd008338895a471f474347b80d.tar.gz
bcm5719-llvm-0a6000f2cbb40abd008338895a471f474347b80d.zip
[clangd] Send highlighting diff beyond the end of the file.
Summary: This would make the client life (tracking the changes) easier. Reviewers: jvikstrom Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D66541 llvm-svn: 369884
Diffstat (limited to 'clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp')
-rw-r--r--clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp50
1 files changed, 34 insertions, 16 deletions
diff --git a/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp b/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
index 903f719132a..8a782644254 100644
--- a/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
+++ b/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
@@ -18,6 +18,9 @@ namespace clang {
namespace clangd {
namespace {
+MATCHER_P(LineNumber, L, "") { return arg.Line == L; }
+MATCHER(EmptyHighlightings, "") { return arg.Tokens.empty(); }
+
std::vector<HighlightingToken>
makeHighlightingTokens(llvm::ArrayRef<Range> Ranges, HighlightingKind Kind) {
std::vector<HighlightingToken> Tokens(Ranges.size());
@@ -92,9 +95,10 @@ void checkDiffedHighlights(llvm::StringRef OldCode, llvm::StringRef NewCode) {
{LineTokens.first, LineTokens.second});
std::vector<LineHighlightings> ActualDiffed =
- diffHighlightings(NewTokens, OldTokens, NewCode.count('\n'));
+ diffHighlightings(NewTokens, OldTokens);
EXPECT_THAT(ActualDiffed,
- testing::UnorderedElementsAreArray(ExpectedLinePairHighlighting));
+ testing::UnorderedElementsAreArray(ExpectedLinePairHighlighting))
+ << OldCode;
}
TEST(SemanticHighlighting, GetsCorrectTokens) {
@@ -463,9 +467,8 @@ TEST(SemanticHighlighting, GeneratesHighlightsWhenFileChange) {
std::atomic<int> Count = {0};
void onDiagnosticsReady(PathRef, std::vector<Diag>) override {}
- void onHighlightingsReady(PathRef File,
- std::vector<HighlightingToken> Highlightings,
- int NLines) override {
+ void onHighlightingsReady(
+ PathRef File, std::vector<HighlightingToken> Highlightings) override {
++Count;
}
};
@@ -574,17 +577,6 @@ TEST(SemanticHighlighting, HighlightingDiffer) {
R"(
$Class[[A]]
$Variable[[A]]
- $Class[[A]]
- $Variable[[A]]
- )",
- R"(
- $Class[[A]]
- $Variable[[A]]
- )"},
- {
- R"(
- $Class[[A]]
- $Variable[[A]]
)",
R"(
$Class[[A]]
@@ -608,6 +600,32 @@ TEST(SemanticHighlighting, HighlightingDiffer) {
checkDiffedHighlights(Test.OldCode, Test.NewCode);
}
+TEST(SemanticHighlighting, DiffBeyondTheEndOfFile) {
+ llvm::StringRef OldCode =
+ R"(
+ $Class[[A]]
+ $Variable[[A]]
+ $Class[[A]]
+ $Variable[[A]]
+ )";
+ llvm::StringRef NewCode =
+ R"(
+ $Class[[A]] // line 1
+ $Variable[[A]] // line 2
+ )";
+
+ Annotations OldTest(OldCode);
+ Annotations NewTest(NewCode);
+ std::vector<HighlightingToken> OldTokens = getExpectedTokens(OldTest);
+ std::vector<HighlightingToken> NewTokens = getExpectedTokens(NewTest);
+
+ auto ActualDiff = diffHighlightings(NewTokens, OldTokens);
+ EXPECT_THAT(ActualDiff,
+ testing::UnorderedElementsAre(
+ testing::AllOf(LineNumber(3), EmptyHighlightings()),
+ testing::AllOf(LineNumber(4), EmptyHighlightings())));
+}
+
} // namespace
} // namespace clangd
} // namespace clang
OpenPOWER on IntegriCloud