@@ -26,6 +26,19 @@ describe('MinHeap', () => {
26
26
minHeap . add ( 1 ) ;
27
27
expect ( minHeap . peek ( ) ) . toBe ( 1 ) ;
28
28
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' ) ;
29
42
} ) ;
30
43
31
44
it ( 'should poll items from the heap and heapify it down' , ( ) => {
@@ -57,4 +70,20 @@ describe('MinHeap', () => {
57
70
expect ( minHeap . poll ( ) ) . toBeNull ( ) ;
58
71
expect ( minHeap . toString ( ) ) . toBe ( '' ) ;
59
72
} ) ;
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
+ } ) ;
60
89
} ) ;
0 commit comments