@@ -95,3 +95,39 @@ const PriorityQueue = require('internal/priority_queue');
9595
9696 assert . strictEqual ( queue . peek ( ) , undefined ) ;
9797}
98+
99+ {
100+ const queue = new PriorityQueue ( ( a , b ) => {
101+ return a . value - b . value ;
102+ } , ( node , pos ) => ( node . position = pos ) ) ;
103+
104+ queue . insert ( { value : 1 , position : null } ) ;
105+ queue . insert ( { value : 2 , position : null } ) ;
106+ queue . insert ( { value : 3 , position : null } ) ;
107+ queue . insert ( { value : 4 , position : null } ) ;
108+ queue . insert ( { value : 5 , position : null } ) ;
109+
110+ queue . insert ( { value : 2 , position : null } ) ;
111+ const secondLargest = { value : 10 , position : null } ;
112+ queue . insert ( secondLargest ) ;
113+ const largest = { value : 15 , position : null } ;
114+ queue . insert ( largest ) ;
115+
116+ queue . removeAt ( 5 ) ;
117+ assert . strictEqual ( largest . position , 5 ) ;
118+
119+ // check that removing 2nd to last item works fine
120+ queue . removeAt ( 6 ) ;
121+ assert . strictEqual ( secondLargest . position , 6 ) ;
122+
123+ // check that removing the last item doesn't throw
124+ queue . removeAt ( 6 ) ;
125+
126+ assert . strictEqual ( queue . shift ( ) . value , 1 ) ;
127+ assert . strictEqual ( queue . shift ( ) . value , 2 ) ;
128+ assert . strictEqual ( queue . shift ( ) . value , 2 ) ;
129+ assert . strictEqual ( queue . shift ( ) . value , 4 ) ;
130+ assert . strictEqual ( queue . shift ( ) . value , 15 ) ;
131+
132+ assert . strictEqual ( queue . shift ( ) , undefined ) ;
133+ }
0 commit comments