(examples-for fill-bucket
("fills a bucket with 12 characters" (bucket/fill '("1" "2345" "67" "890" "1" "2345" "678") nil len 0 12) (("1" "2345" "67" "890" "1") 11 ("2345" "678"))) ("fills a bucket up to 100" (bucket/fill '(1 2 3 4 5 6 7 8 9 10) nil λx(* x x) 0 100) ((1 2 3 4 5 6) 91 (7 8 9 10))))
(examples-for fill-buckets
("returns an empty list for no items" (let pages (fill-buckets '() 30 nil λx(* x x) 'line-items) (= pages (fill-buckets '() 30 pages len 'history )) (= pages (fill-buckets '() 30 pages (k 1) 'payments )) (rev:map λb(list 'size b.bucket-size 'line-items b.line-items 'history b.history 'payments b.payments) pages)) ()) ("returns a single bucket for few items" (let pages (fill-buckets '() 30 nil λx(* x x) 'line-items) (= pages (fill-buckets '("aa" "bbbb" "c" "ddddd" "eeee") 30 pages len 'history )) (= pages (fill-buckets '() 30 pages (k 1) 'payments )) (rev:map λb(list 'size b.bucket-size 'line-items b.line-items 'history b.history 'payments b.payments) pages)) ((size 16 line-items nil history ("aa" "bbbb" "c" "ddddd" "eeee") payments nil))) ("returns a single overfilled bucket for an oversized item" (let pages (fill-buckets '("aa34567890123456" "eeee") 12 nil len 'history ) (rev:map λb(list 'size b.bucket-size b.history) pages)) ((size 16 ("aa34567890123456")) (size 4 ("eeee")))) ("accumulates subsequent items in subsequent buckets" (let pages (fill-buckets '(1 2 2 4 3 3 1) 30 nil λx(* x x) 'line-items) (= pages (fill-buckets '() 30 pages len 'history )) (= pages (fill-buckets '(pay pay pay pay) 30 pages (k 3) 'payments )) (rev:map λb(list 'size b.bucket-size 'line-items b.line-items 'history b.history 'payments b.payments) pages)) ((size 25 line-items (1 2 2 4) history nil payments nil) (size 28 line-items (3 3 1) history nil payments (pay pay pay)) (size 3 line-items nil history nil payments (pay)))) ("use fill-buckets for complex pagination where you have several sets of elements, each element having a different size" (let pages (fill-buckets '(1 2 2 4 3 3 1) 30 nil λx(* x x) 'line-items) (= pages (fill-buckets '("aa" "bbbb" "c" "ddddd" "eeee") 30 pages len 'history )) (= pages (fill-buckets '(pay pay pay pay) 30 pages (k 1) 'payments )) (rev:map λb(list 'size b.bucket-size 'line-items b.line-items 'history b.history 'payments b.payments) pages)) ((size 25 line-items (1 2 2 4) history nil payments nil) (size 26 line-items (3 3 1) history ("aa" "bbbb" "c") payments nil) (size 13 line-items nil history ("ddddd" "eeee") payments (pay pay pay pay)))))