diff --git a/test-suite/tests/streams.test b/test-suite/tests/streams.test new file mode 100644 index 000000000..afb73bef3 --- /dev/null +++ b/test-suite/tests/streams.test @@ -0,0 +1,79 @@ +;;;; streams.test --- test Guile ice-9 streams module -*- scheme -*- +;;;; +;;;; Copyright (C) 2004 Free Software Foundation, Inc. +;;;; +;;;; This program is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU General Public License as published by +;;;; the Free Software Foundation; either version 2, or (at your option) +;;;; any later version. +;;;; +;;;; This program is distributed in the hope that it will be useful, +;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;;; GNU General Public License for more details. +;;;; +;;;; You should have received a copy of the GNU General Public License +;;;; along with this software; see the file COPYING. If not, write to +;;;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330, +;;;; Boston, MA 02111-1307 USA + +(define-module (test-suite test-streams) + :use-module (test-suite lib) + :use-module (ice-9 streams)) + + +;;; +;;; stream-for-each +;;; + +(with-test-prefix "stream-for-each" + + (with-test-prefix "1 streams" + + (pass-if "empty" + (let ((lst '())) + (stream-for-each (lambda (x) + (set! lst (cons x lst))) + (list->stream '())) + (equal? '() lst))) + + (pass-if "123" + (let ((lst '())) + (stream-for-each (lambda (x) + (set! lst (cons x lst))) + (list->stream '(1 2 3))) + (equal? '(3 2 1) lst)))) + + (with-test-prefix "2 streams" + + (pass-if "empty empty" + (let ((lst '())) + (stream-for-each (lambda (x y) + (set! lst (cons* x y lst))) + (list->stream '()) + (list->stream '())) + (equal? '() lst))) + + (pass-if "123 456" + (let ((lst '())) + (stream-for-each (lambda (x y) + (set! lst (cons* x y lst))) + (list->stream '(1 2 3)) + (list->stream '(4 5 6))) + (equal? '(3 6 2 5 1 4) lst))) + + (pass-if "12 456" + (let ((lst '())) + (stream-for-each (lambda (x y) + (set! lst (cons* x y lst))) + (list->stream '(1 2)) + (list->stream '(4 5 6))) + (equal? '(2 5 1 4) lst))) + + (pass-if "123 45" + (let ((lst '())) + (stream-for-each (lambda (x y) + (set! lst (cons* x y lst))) + (list->stream '(1 2 3)) + (list->stream '(4 5))) + (equal? '(2 5 1 4) lst)))))