bug: add test with custom TEST and COMBINER for COMPRESSING-RUNS

This commit is contained in:
Edward
2021-01-04 01:15:14 -08:00
parent ea96548eb0
commit e08fccfe1b
2 changed files with 18 additions and 3 deletions

View File

@ -89,7 +89,23 @@
(5am:is (equal '(1 2) (5am:is (equal '(1 2)
(data-lens.transducers:transduce (data-lens.transducers:compressing-runs) (data-lens.transducers:transduce (data-lens.transducers:compressing-runs)
'data-lens.transducers:list-builder 'data-lens.transducers:list-builder
input))))) input))))
(5am:is
(equal '((1 2 2 2 3 3 3)
(2 4 4 4 5 5 5)
(3 6 6 6))
(data-lens.transducers:transduce
(data-lens.transducers:compressing-runs
:test (lambda (a b) (eql (car a) (car b)))
:combiner (lambda (a b)
(if a
(append a (cdr b))
b)))
'data-lens.transducers:list-builder
'((1 2 2 2) (1 3 3 3)
(2 4 4 4) (2 5 5 5)
(3 6 6 6))))))
(5am:def-test catting (:suite :data-lens.transducers) (5am:def-test catting (:suite :data-lens.transducers)
(5am:is (equal '(1 1 2 1 2 2 3 3 4 1) (5am:is (equal '(1 1 2 1 2 2 3 3 4 1)

View File

@ -79,14 +79,13 @@
leftovers t) leftovers t)
acc) acc)
(progn (prog1 (funcall rf acc last) (progn (prog1 (funcall rf acc last)
(setf last (funcall combiner last next)))))) (setf last next)))))
((it) ((it)
(funcall rf (funcall rf
(if leftovers (if leftovers
(funcall rf it last) (funcall rf it last)
it))))))) it)))))))
(defun deduping (&optional (test 'eql)) (defun deduping (&optional (test 'eql))
(compressing-runs :test test)) (compressing-runs :test test))