summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAnatoli Papirovski <apapirovski@mac.com>2018-10-25 04:02:23 -0700
committerRich Trott <rtrott@gmail.com>2018-10-25 10:44:18 -0700
commit958d5b7f1d1fa47133de48625abb2fb3aa7b8ffd (patch)
tree20d9abc59109a06204581cf812cc58a4027fda44 /test
parent16673ae9dc1e748f6ccd2c71df98504f361decdc (diff)
downloadandroid-node-v8-958d5b7f1d1fa47133de48625abb2fb3aa7b8ffd.tar.gz
android-node-v8-958d5b7f1d1fa47133de48625abb2fb3aa7b8ffd.tar.bz2
android-node-v8-958d5b7f1d1fa47133de48625abb2fb3aa7b8ffd.zip
timers: fix priority queue removeAt fn
PR-URL: https://github.com/nodejs/node/pull/23870 Fixes: https://github.com/nodejs/node/issues/23860 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'test')
-rw-r--r--test/parallel/test-priority-queue.js36
1 files changed, 36 insertions, 0 deletions
diff --git a/test/parallel/test-priority-queue.js b/test/parallel/test-priority-queue.js
index 5b8f53a176..702b5528ba 100644
--- a/test/parallel/test-priority-queue.js
+++ b/test/parallel/test-priority-queue.js
@@ -95,3 +95,39 @@ const PriorityQueue = require('internal/priority_queue');
assert.strictEqual(queue.peek(), undefined);
}
+
+{
+ const queue = new PriorityQueue((a, b) => {
+ return a.value - b.value;
+ }, (node, pos) => (node.position = pos));
+
+ queue.insert({ value: 1, position: null });
+ queue.insert({ value: 2, position: null });
+ queue.insert({ value: 3, position: null });
+ queue.insert({ value: 4, position: null });
+ queue.insert({ value: 5, position: null });
+
+ queue.insert({ value: 2, position: null });
+ const secondLargest = { value: 10, position: null };
+ queue.insert(secondLargest);
+ const largest = { value: 15, position: null };
+ queue.insert(largest);
+
+ queue.removeAt(5);
+ assert.strictEqual(largest.position, 5);
+
+ // check that removing 2nd to last item works fine
+ queue.removeAt(6);
+ assert.strictEqual(secondLargest.position, 6);
+
+ // check that removing the last item doesn't throw
+ queue.removeAt(6);
+
+ assert.strictEqual(queue.shift().value, 1);
+ assert.strictEqual(queue.shift().value, 2);
+ assert.strictEqual(queue.shift().value, 2);
+ assert.strictEqual(queue.shift().value, 4);
+ assert.strictEqual(queue.shift().value, 15);
+
+ assert.strictEqual(queue.shift(), undefined);
+}