cl-scopes/test/test-forge.lisp

46 lines
1.2 KiB
Common Lisp

;;;; cl-scopes/test/test-forge
;;;; testing facility for scopes/forge
(defpackage :scopes/test-forge
(:use :common-lisp)
(:local-nicknames (:forge :scopes/forge)
(:t :scopes/testing))
(:export #:run)
(:import-from :scopes/testing #:deftest #:==))
(in-package :scopes/test-forge)
(defun run ()
(let ((t:*test-suite* (t:test-suite "forge"))
(forge:*forge-env* (forge:forge-env)))
(forge:setup-builtins)
(test-iseq)
(test-exec)
;(format t "~%data-stack ~a" (dstack))
(test-def)
(test-const)
(t:show-result)))
(deftest test-iseq ()
(let ((seq (forge:make-iseq)))
(forge:isq-add seq 1)
(forge:isq-add seq 2)
(== (forge:isq-next seq) 1)
(== (forge:isq-end seq) 2)))
(deftest test-exec ()
(forge:exec-str "4 2 +")
(== (car (forge:dstack)) 6))
(deftest test-def ()
;(forge:exec-str "def square (dup *)")
(forge:exec-str "(dup *) quote square reg")
(forge:exec-str "7 square")
(== (car (forge:dstack)) 49))
(deftest test-const ()
(forge:exec-str "(defer wrap comp quote defer reg) quote const regc")
(forge:exec-str "11 const eleven")
(forge:exec-str "eleven square")
(== (car (forge:dstack)) 121))