@@ -116,7 +116,7 @@ import Base.Order.Reverse
116116 Base. IteratorSize(i:: EltypeUnknownIterator ) = Base. IteratorSize(i. x)
117117 Base. length(i:: EltypeUnknownIterator ) = Base. length(i. x)
118118 Base. size(i:: EltypeUnknownIterator ) = Base. size(i. x)
119-
119+
120120 @test_nowarn PriorityQueue(Dict(zip(1 : 5 , 2 : 6 )))
121121 @test_nowarn PriorityQueue(EltypeUnknownIterator(Dict(zip(1 : 5 , 2 : 6 ))))
122122 @test_throws ArgumentError PriorityQueue(EltypeUnknownIterator([' a' ]))
@@ -133,7 +133,7 @@ import Base.Order.Reverse
133133 Base. IteratorSize(i:: EltypeAnyIterator ) = Base. IteratorSize(i. x)
134134 Base. length(i:: EltypeAnyIterator ) = Base. length(i. x)
135135 Base. size(i:: EltypeAnyIterator ) = Base. size(i. x)
136-
136+
137137 @test_nowarn PriorityQueue(EltypeAnyIterator(Dict(zip(1 : 5 , 2 : 6 ))))
138138 @test_throws ArgumentError PriorityQueue(EltypeAnyIterator([' a' ]))
139139 end
@@ -338,6 +338,89 @@ import Base.Order.Reverse
338338 @test isheap([1 , 2 , 3 ], Base. Order. Forward)
339339 @test ! isheap([1 , 2 , 3 ], Base. Order. Reverse)
340340 end
341- end
342341
342+ @testset " percolate_down!" begin
343+ @testset " Basic percolate down" begin
344+ xs = [10 , 2 , 3 , 4 , 5 ]
345+ DataStructures. percolate_down!(xs, 1 , 10 , Base. Order. Forward)
346+ @test xs == [2 , 4 , 3 , 10 , 5 ]
347+ end
348+
349+ @testset " Element in correct position" begin
350+ xs = [1 , 2 , 3 , 4 , 5 ]
351+ DataStructures. percolate_down!(xs, 1 , 1 , Base. Order. Forward)
352+ @test xs == [1 , 2 , 3 , 4 , 5 ]
353+ end
354+
355+ @testset " Reverse ordering" begin
356+ xs = [1 , 5 , 4 , 3 , 2 ]
357+ DataStructures. percolate_down!(xs, 1 , 1 , Base. Order. Reverse)
358+ @test xs == [5 , 3 , 4 , 1 , 2 ]
359+ end
360+
361+ @testset " Custom length" begin
362+ xs = [10 , 2 , 3 , 4 , 5 ]
363+ DataStructures. percolate_down!(xs, 1 , 10 , Base. Order. Forward, 3 )
364+ @test xs == [2 , 10 , 3 , 4 , 5 ]
365+ end
366+
367+ @testset " Without explicit x parameter" begin
368+ xs = [10 , 2 , 3 , 4 , 5 ]
369+ DataStructures. percolate_down!(xs, 1 , Base. Order. Forward)
370+ @test xs == [2 , 4 , 3 , 10 , 5 ]
371+
372+ xs = [10 , 2 , 3 , 4 , 5 ]
373+ DataStructures. percolate_down!(xs, 1 )
374+ @test xs == [2 , 4 , 3 , 10 , 5 ]
375+ end
376+
377+ @testset " From middle position" begin
378+ xs = [2 , 0 , 3 , 4 , 5 ]
379+ DataStructures. percolate_down!(xs, 2 , 10 , Base. Order. Forward)
380+ @test xs == [2 , 4 , 3 , 10 , 5 ]
381+ end
382+ end
383+
384+ @testset " percolate_up!" begin
385+ @testset " Basic percolate up" begin
386+ xs = [1 , 2 , 3 , 4 , 0 ]
387+ DataStructures. percolate_up!(xs, 5 , 0 , Base. Order. Forward)
388+ @test xs == [0 , 1 , 3 , 4 , 2 ]
389+ end
390+
391+ @testset " Element in correct position" begin
392+ xs = [1 , 2 , 3 , 4 , 5 ]
393+ DataStructures. percolate_up!(xs, 5 , 5 , Base. Order. Forward)
394+ @test xs == [1 , 2 , 3 , 4 , 5 ]
395+ end
396+
397+ @testset " Reverse ordering" begin
398+ xs = [5 , 4 , 3 , 2 , 10 ]
399+ DataStructures. percolate_up!(xs, 5 , 10 , Base. Order. Reverse)
400+ @test xs == [10 , 5 , 3 , 2 , 4 ]
401+ end
402+
403+ @testset " Percolate to root" begin
404+ xs = [2 , 3 , 4 , 5 , 1 ]
405+ DataStructures. percolate_up!(xs, 5 , 1 , Base. Order. Forward)
406+ @test xs == [1 , 2 , 4 , 5 , 3 ]
407+ end
408+
409+ @testset " Without explicit x parameter" begin
410+ xs = [1 , 2 , 3 , 4 , 0 ]
411+ DataStructures. percolate_up!(xs, 5 , Base. Order. Forward)
412+ @test xs == [0 , 1 , 3 , 4 , 2 ]
413+
414+ xs = [1 , 2 , 3 , 4 , 0 ]
415+ DataStructures. percolate_up!(xs, 5 )
416+ @test xs == [0 , 1 , 3 , 4 , 2 ]
417+ end
418+
419+ @testset " From middle position" begin
420+ xs = [1 , 5 , 3 , 10 , 8 ]
421+ DataStructures. percolate_up!(xs, 4 , 0 , Base. Order. Forward)
422+ @test xs == [0 , 1 , 3 , 5 , 8 ]
423+ end
424+ end
425+ end
343426end # @testset "PriorityQueue"
0 commit comments