test/control-flow.lisp @ de9d10a9b4b5
Split this mess into separate files
author |
Steve Losh <steve@stevelosh.com> |
date |
Sun, 17 Jun 2018 16:20:05 -0700 |
parents |
566c907b762a |
children |
a0c69729ade3 |
(in-package :losh.test)
(define-test when-let
(locally
#+sbcl (declare (sb-ext:muffle-conditions sb-ext:code-deletion-note))
(is (eql :foo (when-let ()
:foo)))
(is (eql 1 (when-let ((a 1))
a)))
(is (eql 3 (when-let ((a 1)
(b 2))
(+ a b))))
(is (eql nil (when-let ((a nil)
(b 2))
(+ a b))))
(is (eql nil (when-let ((a 1)
(b nil))
(+ a b))))
(is (eql nil (when-let ((a 1)
(b nil)
(c 3))
(+ a b c))))
(let (x)
(is (eql nil (when-let ((a (progn (push 1 x) 1))
(b (progn (push 2 x) nil))
(c (progn (push 3 x) 3)))
(declare (type fixnum a b c))
(push :body x)
(+ a b c))))
(is (equal '(2 1) x)))
(let (x)
(is (eql 6 (when-let ((a (progn (push 1 x) 1))
(b (progn (push 2 x) 2))
(c (progn (push 3 x) 3)))
(declare (type fixnum a b c))
(push :body x)
(+ a b c))))
(is (equal '(:body 3 2 1) x)))))
(define-test when-let*
(locally
#+sbcl (declare (sb-ext:muffle-conditions sb-ext:code-deletion-note))
(is (eql :foo (when-let* ()
:foo)))
(is (eql 1 (when-let* ((a 1))
a)))
(is (eql 2 (when-let* ((a 1)
(b (1+ a)))
b)))
(is (eql nil (when-let* ((a nil)
(b 2))
(+ a b))))
(is (eql nil (when-let* ((a 1)
(b nil))
(+ a b))))
(is (eql nil (when-let* ((a 1)
(b nil)
(c (+ 2 a)))
(+ a b c))))
(let (x)
(is (eql nil (when-let* ((a (progn (push 1 x) 1))
(b (progn (push 2 x) nil))
(c (progn (push 3 x) 3)))
(push :body x)
(+ a b c))))
(is (equal '(2 1) x)))
(let (x)
(is (eql 6 (when-let* ((a (progn (push 1 x) 1))
(b (progn (push 2 x) 2))
(c (progn (push 3 x) 3)))
(push :body x)
(+ a b c))))
(is (equal '(:body 3 2 1) x)))))
(define-test if-let
(locally
#+sbcl (declare (sb-ext:muffle-conditions sb-ext:code-deletion-note))
(is (eql :foo (if-let ()
:foo
:bar)))
(is (eql 1 (if-let ((a 1))
a
:bar)))
(is (eql :bar (if-let ((a nil))
a
:bar)))
(is (eql 3 (if-let ((a 1)
(b 2))
(+ a b)
:bar)))
(is (eql :bar (if-let ((a nil)
(b 2))
(+ a b)
:bar)))
(is (eql :bar (if-let ((a 1)
(b nil))
(+ a b)
:bar)))
(is (eql :bar (if-let ((a 1)
(b nil)
(c 3))
(+ a b c)
:bar)))
(let (x)
(is (eql :bar (if-let ((a (progn (push 1 x) 1))
(b (progn (push 2 x) nil))
(c (progn (push 3 x) 3)))
(declare (type fixnum a b c))
(+ a b c)
:bar)))
(is (equal '(2 1) x)))
(let (x)
(is (eql 6 (if-let ((a (progn (push 1 x) 1))
(b (progn (push 2 x) 2))
(c (progn (push 3 x) 3)))
(declare (type fixnum a b c))
(+ a b c)
:bar)))
(is (equal '(3 2 1) x)))))
(define-test if-let*
(locally
#+sbcl (declare (sb-ext:muffle-conditions sb-ext:code-deletion-note))
(is (eql :foo (if-let* ()
:foo
:bar)))
(is (eql 1 (if-let* ((a 1))
a
:bar)))
(is (eql :bar (if-let* ((a nil))
a
:bar)))
(is (eql 3 (if-let* ((a 1)
(b (1+ a)))
(+ a b)
:bar)))
(is (eql :bar (if-let* ((a nil)
(b 2))
(+ a b)
:bar)))
(is (eql :bar (if-let* ((a 1)
(b nil))
(+ a b)
:bar)))
(is (eql :bar (if-let* ((a 1)
(b nil)
(c 3))
(+ a b c)
:bar)))
(let (x)
(is (eql :bar (if-let* ((a (progn (push 1 x) 1))
(b (progn (push 2 x) nil))
(c (progn (push 3 x) 3)))
(declare (type fixnum a b c))
(+ a b c)
:bar)))
(is (equal '(2 1) x)))
(let (x)
(is (eql 6 (if-let* ((a (progn (push 1 x) 1))
(b (progn (push 2 x) 2))
(c (progn (push 3 x) 3)))
(declare (type fixnum a b c))
(+ a b c)
:bar)))
(is (equal '(3 2 1) x)))))