summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/unittests/BackgroundIndexTests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/clangd/unittests/BackgroundIndexTests.cpp')
-rw-r--r--clang-tools-extra/clangd/unittests/BackgroundIndexTests.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/clang-tools-extra/clangd/unittests/BackgroundIndexTests.cpp b/clang-tools-extra/clangd/unittests/BackgroundIndexTests.cpp
index 55eb0bf882e..15d064a995c 100644
--- a/clang-tools-extra/clangd/unittests/BackgroundIndexTests.cpp
+++ b/clang-tools-extra/clangd/unittests/BackgroundIndexTests.cpp
@@ -678,5 +678,40 @@ TEST(BackgroundQueueTest, Priority) {
EXPECT_EQ(LoRan, 0u);
}
+TEST(BackgroundQueueTest, Boost) {
+ std::string Sequence;
+
+ BackgroundQueue::Task A([&] { Sequence.push_back('A'); });
+ A.Tag = "A";
+ A.QueuePri = 1;
+
+ BackgroundQueue::Task B([&] { Sequence.push_back('B'); });
+ B.QueuePri = 2;
+ B.Tag = "B";
+
+ {
+ BackgroundQueue Q;
+ Q.append({A, B});
+ Q.work([&] { Q.stop(); });
+ EXPECT_EQ("BA", Sequence) << "priority order";
+ }
+ Sequence.clear();
+ {
+ BackgroundQueue Q;
+ Q.boost("A", 3);
+ Q.append({A, B});
+ Q.work([&] { Q.stop(); });
+ EXPECT_EQ("AB", Sequence) << "A was boosted before enqueueing";
+ }
+ Sequence.clear();
+ {
+ BackgroundQueue Q;
+ Q.append({A, B});
+ Q.boost("A", 3);
+ Q.work([&] { Q.stop(); });
+ EXPECT_EQ("AB", Sequence) << "A was boosted after enqueueing";
+ }
+}
+
} // namespace clangd
} // namespace clang
OpenPOWER on IntegriCloud