emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] stream 8c111a8: Allow negative steps in stream-range


From: Nicolas Petton
Subject: [Emacs-diffs] stream 8c111a8: Allow negative steps in stream-range
Date: Mon, 10 Aug 2015 12:54:11 +0000

branch: stream
commit 8c111a86bcd310df347822552969444e5b48dc45
Author: Nicolas Petton <address@hidden>
Commit: Nicolas Petton <address@hidden>

    Allow negative steps in stream-range
    
    * lisp/emacs-lisp/stream.el (stream-range): Do not signal an error if
    the step is negative.
    * test/automated/stream-tests.el (stream-range-test): Add a regression
    test for negative steps in stream-range.
---
 lisp/emacs-lisp/stream.el      |    8 +++-----
 test/automated/stream-tests.el |    4 ++--
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/lisp/emacs-lisp/stream.el b/lisp/emacs-lisp/stream.el
index 0cf3e93..eed436a 100644
--- a/lisp/emacs-lisp/stream.el
+++ b/lisp/emacs-lisp/stream.el
@@ -183,13 +183,11 @@ If START is nil, it defaults to 0. If STEP is nil, it 
defaults to
 range is infinite."
   (unless start (setq start 0))
   (unless step (setq step 1))
-  (cond
-   ((equal start end) (stream-empty))
-   ((and end (> start end)) (error "Invalid range boundaries"))
-   (t
+  (if (equal start end)
+      (stream-empty)
     (stream-cons
      start
-     (stream-range (+ start step) end step)))))
+     (stream-range (+ start step) end step))))
 
 (defun stream-seq (seq)
   "Return a stream built from the sequence SEQ.
diff --git a/test/automated/stream-tests.el b/test/automated/stream-tests.el
index a763410..59a0770 100644
--- a/test/automated/stream-tests.el
+++ b/test/automated/stream-tests.el
@@ -103,11 +103,11 @@
 (ert-deftest stream-range-test ()
   (should (stream-empty-p (stream-range 0 0)))
   (should (stream-empty-p (stream-range 3 3)))
-  (should-error (stream-range 3 2))
   (should (= 0 (stream-first (stream-range 0 6 2))))
   (should (= 2 (stream-first (stream-rest (stream-range 0 6 2)))))
   (should (= 4 (stream-first (stream-rest (stream-rest (stream-range 0 6 
2))))))
-  (should (stream-empty-p (stream-rest (stream-rest (stream-rest (stream-range 
0 6 2)))))))
+  (should (stream-empty-p (stream-rest (stream-rest (stream-rest (stream-range 
0 6 2))))))
+  (should (= -4 (stream-first (stream-rest (stream-rest (stream-range 0 nil 
-2)))))))
 
 (ert-deftest stream-list-test ()
   (dolist (list '(nil '(1 2 3) '(a . b)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]