decons/test-decons.lisp

50 lines
1.2 KiB
Common Lisp

;;;; decons/test-decons - basic tests.
(defpackage :test-decons
(:use :common-lisp)
(:local-nicknames (:t :scopes/testing))
(:export #:run)
(:import-from :scopes/testing #:deftest #:== #:!=))
(in-package :test-decons)
(defun run ()
(let ((t:*test-suite* (t:test-suite "decons")))
(test-basic)
(test-lib)
(test-rapply)
(test-line)
(t:show-result)))
(deftest test-basic ()
(== decons:*pi* 3.14159)
(let ((c (make-instance 'decons:circle :radius 2.0)))
(== (decons:area c) 12.56636))
(== (funcall (decons:double #'1+) 7) 16)
(== (decons:absv 7) 7)
(== (decons:absv -7) 7)
(== (decons:remainder 7 4) 3)
)
(deftest test-lib ()
(== (decons:scalar-p 7) t)
(== (decons:scalar-p '(a b)) nil)
(let ((t1 (decons:tensor '(4) '(0 1 2 3))))
(== (decons:at t1 0) 0)
(setf (decons:at t1 0) 5)
(== (decons:at t1 0) 5)
(== (decons:scalar-p t1) nil)
))
(deftest test-rapply ()
(== (decons:rapply #'1+ 7) 8)
)
(deftest test-line ()
(let ((p1 (decons:line 0.0))
(p2 (decons:line 1.0))
(ds1 '((decons:tensor '(4) '(2.0 1.0 4.0 3.0))
(decons:tensor '(4) '(1.8 1.2 4.2 3.3)))))
(== (funcall p1 '(0.5 2.0)) 2.0)
(== (funcall p2 '(0.5 2.0)) 2.5)
))