@@ -111,7 +111,7 @@ describe('MinPriorityQueue', () => {
111111 expect ( qTest . contains ( ( n ) => n === 100 ) ) . to . equal ( false ) ;
112112 } ) ;
113113 } ) ;
114-
114+
115115 describe ( 'remove' , ( ) => {
116116 it ( 'remove elements that match a criteria' , ( ) => {
117117 const testArr = [ 20 , 30 , 40 , 50 , 80 , 90 ] ;
@@ -124,6 +124,39 @@ describe('MinPriorityQueue', () => {
124124 } ) ;
125125 } ) ;
126126
127+ describe ( 'fix' , ( ) => {
128+ it ( 'fixes element positions when multiple priorities change' , ( ) => {
129+ const one = { id : 'one' , priority : 1 } ;
130+ const two = { id : 'two' , priority : 2 } ;
131+ const three = { id : 'three' , priority : 3 } ;
132+ const four = { id : 'four' , priority : 4 } ;
133+ const five = { id : 'five' , priority : 5 } ;
134+ const six = { id : 'six' , priority : 6 } ;
135+ const seven = { id : 'seven' , priority : 7 } ;
136+ const qTest = MinPriorityQueue . fromArray (
137+ [ one , two , three , four , five , six , seven ] ,
138+ ( value ) => value . priority
139+ ) ;
140+
141+ one . priority = 8 ;
142+ four . priority = 0 ;
143+ seven . priority = 3.5 ;
144+
145+ expect ( qTest . fix ( ) ) . to . equal ( qTest ) ;
146+ expect ( qTest . size ( ) ) . to . equal ( 7 ) ;
147+ expect ( qTest . toArray ( ) ) . to . eql ( [
148+ four ,
149+ two ,
150+ three ,
151+ seven ,
152+ five ,
153+ six ,
154+ one
155+ ] ) ;
156+ expect ( qTest . front ( ) ) . to . equal ( four ) ;
157+ expect ( qTest . back ( ) ) . to . equal ( one ) ;
158+ } ) ;
159+ } ) ;
127160 } ) ;
128161
129162 describe ( 'constructor with initial values' , ( ) => {
0 commit comments