X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/6c6c83a705dcb0ad3cfbab2c06b013f8ed58ee03..46e18c3122caadfdb6a62b97f8c1f9f749ee9a8c:/packages/stream/tests/stream-tests.el diff --git a/packages/stream/tests/stream-tests.el b/packages/stream/tests/stream-tests.el index 88edf918c..23a54b5ec 100644 --- a/packages/stream/tests/stream-tests.el +++ b/packages/stream/tests/stream-tests.el @@ -171,10 +171,40 @@ (should (= 3 (stream-first (stream-rest (seq-filter #'cl-oddp (stream-range 0 4)))))) (should (stream-empty-p (stream-rest (stream-rest (seq-filter #'cl-oddp (stream-range 0 4))))))) +(ert-deftest stream-delay-test () + (should (streamp (stream-delay (stream-range)))) + (should (= 0 (stream-first (stream-delay (stream-range))))) + (should (= 1 (stream-first (stream-rest (stream-delay (stream-range)))))) + (should (let ((stream (stream-range 3 7))) + (equal (seq-into (stream-delay stream) 'list) + (seq-into stream 'list)))) + (should (null (seq-into (stream-delay (stream-empty)) 'list))) + (should (let* ((evaluated nil) + (one-plus (lambda (el) + (setq evaluated t) + (1+ el))) + (stream (seq-map one-plus (stream '(1))))) + (equal '(nil 2 t) + (list evaluated (stream-first stream) evaluated)))) + (should (let* ((a 0) + (set-a (lambda (x) (setq a x))) + (s (stream-delay (stream (list a)))) + res1 res2) + (funcall set-a 5) + (setq res1 (stream-first s)) + (funcall set-a 11) + (setq res2 (stream-first s)) + (and (equal res1 5) + (equal res2 5))))) + (ert-deftest stream-seq-copy-test () (should (streamp (seq-copy (stream-range)))) (should (= 0 (stream-first (seq-copy (stream-range))))) - (should (= 1 (stream-first (stream-rest (seq-copy (stream-range))))))) + (should (= 1 (stream-first (stream-rest (seq-copy (stream-range)))))) + (should (let ((stream (stream-range 3 7))) + (equal (seq-into (seq-copy stream) 'list) + (seq-into stream 'list)))) + (should (null (seq-into (seq-copy (stream-empty)) 'list)))) (ert-deftest stream-range-test () (should (stream-empty-p (stream-range 0 0)))