diff options
author | Anatoli Papirovski <apapirovski@mac.com> | 2018-10-25 04:02:23 -0700 |
---|---|---|
committer | Rich Trott <rtrott@gmail.com> | 2018-10-25 10:44:18 -0700 |
commit | 958d5b7f1d1fa47133de48625abb2fb3aa7b8ffd (patch) | |
tree | 20d9abc59109a06204581cf812cc58a4027fda44 /test | |
parent | 16673ae9dc1e748f6ccd2c71df98504f361decdc (diff) | |
download | android-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.js | 36 |
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); +} |