@@ -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