58 lines
1.6 KiB
Common Lisp
58 lines
1.6 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)))
|
|
(setf forge:*forge-env* (forge:forge-env))
|
|
(forge:setup-builtins)
|
|
(test-iseq)
|
|
(test-exec)
|
|
(test-def)
|
|
(test-const)
|
|
(test-var)
|
|
(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 "(comp quote defer regc) quote defc regc")
|
|
(forge:exec-str "(comp quote defer reg) defc def")
|
|
(forge:exec-str "(dup *) def square")
|
|
(forge:exec-str "7 square")
|
|
(== (car (forge:dstack)) 49))
|
|
|
|
(deftest test-const ()
|
|
(forge:exec-str "(defer wrap comp quote defer reg) defc const")
|
|
(forge:exec-str "11 const eleven")
|
|
(forge:exec-str "eleven square")
|
|
(== (car (forge:dstack)) 121))
|
|
|
|
(deftest test-var ()
|
|
(forge:exec-str "(defer wrap defer wrap comp quote defer reg) defc var")
|
|
(forge:exec-str "7 var myvar")
|
|
(forge:exec-str "myvar get square")
|
|
(== (car (forge:dstack)) 49)
|
|
(forge:exec-str "8 myvar set")
|
|
(forge:exec-str "myvar get square")
|
|
(== (car (forge:dstack)) 64))
|
|
|