@@ -26,6 +26,19 @@ describe('MinHeap', () => {
2626 minHeap . add ( 1 ) ;
2727 expect ( minHeap . peek ( ) ) . toBe ( 1 ) ;
2828 expect ( minHeap . toString ( ) ) . toBe ( '1,3,10,5' ) ;
29+
30+ minHeap . add ( 1 ) ;
31+ expect ( minHeap . peek ( ) ) . toBe ( 1 ) ;
32+ expect ( minHeap . toString ( ) ) . toBe ( '1,1,10,5,3' ) ;
33+
34+ expect ( minHeap . poll ( ) ) . toBe ( 1 ) ;
35+ expect ( minHeap . toString ( ) ) . toBe ( '1,3,10,5' ) ;
36+
37+ expect ( minHeap . poll ( ) ) . toBe ( 1 ) ;
38+ expect ( minHeap . toString ( ) ) . toBe ( '3,5,10' ) ;
39+
40+ expect ( minHeap . poll ( ) ) . toBe ( 3 ) ;
41+ expect ( minHeap . toString ( ) ) . toBe ( '5,10' ) ;
2942 } ) ;
3043
3144 it ( 'should poll items from the heap and heapify it down' , ( ) => {
@@ -57,4 +70,20 @@ describe('MinHeap', () => {
5770 expect ( minHeap . poll ( ) ) . toBeNull ( ) ;
5871 expect ( minHeap . toString ( ) ) . toBe ( '' ) ;
5972 } ) ;
73+
74+ it ( 'should heapify down through the right branch as well' , ( ) => {
75+ const minHeap = new MinHeap ( ) ;
76+
77+ minHeap . add ( 3 ) ;
78+ minHeap . add ( 12 ) ;
79+ minHeap . add ( 10 ) ;
80+
81+ expect ( minHeap . toString ( ) ) . toBe ( '3,12,10' ) ;
82+
83+ minHeap . add ( 11 ) ;
84+ expect ( minHeap . toString ( ) ) . toBe ( '3,11,10,12' ) ;
85+
86+ expect ( minHeap . poll ( ) ) . toBe ( 3 ) ;
87+ expect ( minHeap . toString ( ) ) . toBe ( '10,11,12' ) ;
88+ } ) ;
6089} ) ;
0 commit comments