: <heap> ( class -- heap )
V{ } clone swap boa ; inline
-ERROR: not-a-heap object ;
-
-: check-heap ( heap -- heap )
- dup heap? [ not-a-heap ] unless ; inline
-
TUPLE: entry value key heap index ;
: <entry> ( value key heap -- entry )
[ data-first >entry< ] [ heap-pop* ] bi ;
: slurp-heap ( ... heap quot: ( ... value key -- ... ) -- ... )
- [ check-heap ] dip
[ drop '[ _ heap-empty? ] ]
[ '[ _ heap-pop @ ] until ] 2bi ; inline
! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: tools.test assoc-heaps ;
-IN: assoc-heaps.tests
+USING: assoc-heaps combinators heaps kernel tools.test ;
+
+{ { { 0 "zero" } { 1 "one" } { 2 "two" } } } [
+ <unique-min-heap>
+ "two" 2 pick heap-push
+ "zero" 0 pick heap-push
+ "one" 1 pick heap-push
+ heap-pop-all
+] unit-test