From ae6f4ea76524c69aa701999ab13278193695432a Mon Sep 17 00:00:00 2001 From: Peter Bex Date: Mon, 1 Oct 2012 18:25:05 +0100 Subject: Implement && and || (which is a bit of a hack in Chicken considering it's the empty symbol) --- tests/run.scm | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/run.scm b/tests/run.scm index c0a2a7e..23220e1 100644 --- a/tests/run.scm +++ b/tests/run.scm @@ -51,6 +51,41 @@ "foo\n" (run/string (pipe+ ((1 0)) (pipe+ ((2 0)) (sh -c "echo foo >&2") (cat)) - (cat))))) + (cat)))) + + (test "&& runs for all true values" + (list #t "bar\n") + (list (&& (epf (echo "foo") (> outfile)) + (true) + (epf (echo "bar") (> outfile))) + (read-all "outfile"))) + (delete-file* "outfile") + + (test "&& stops at first false value and returns false" + (list #f "foo\n") + (list (&& (epf (echo "foo") (> outfile)) + (false) + (epf (echo "bar") (> outfile))) + (read-all "outfile"))) + (delete-file* "outfile") + + (test "|| stops at first true value and returns true" + (list #t "foo\n") + (list (|| (epf (echo "foo") (> outfile)) + (true) + (epf (echo "bar") (> outfile))) + (read-all "outfile"))) + (delete-file* "outfile") + + (test "|| continues after first false value and returns true" + (list #t "bar\n") + (list (|| (false) + (epf (echo "bar") (> outfile))) + (read-all "outfile"))) + (delete-file* "outfile") + + (test "|| continues beyond all false values and returns false" + #f + (|| (false) (epf (sh -c "echo hi && false") (- 1))))) (test-exit) \ No newline at end of file -- cgit v1.2.3