;;;; 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))