;;; 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 #:==)) (in-package :scopes/test-forge) (defun run () (let ((t:*tst* (t:test-suite))) (test-seq) (test-exec) ;(format t "~%data-stack ~a" (dstack)) (test-def) (test-exec-str) (test-const) (test-var) (t:show-result))) (defun test-seq () (let ((seq (forge:make-seq))) (forge:seq-add seq 1) (forge:seq-add seq 2) (== (forge:seq-cur seq) 1) (== (forge:seq-end seq) 2))) (defun test-exec () (forge:exec '(4 2 +)) (== (car (forge:dstack)) 6)) (defun test-def () (forge:exec '((dup *) "square" def)) (forge:exec '(7 square)) (== (car (forge:dstack)) 49)) (defun test-exec-str () (forge:exec-str "16 square") (== (car (forge:dstack)) 256)) (defun test-const () (forge:exec-str "17 \"c1\" const") (forge:exec-str "c1 square") (== (car (forge:dstack)) 289)) (defun test-var () (forge:exec '(24 "v1" var)) (forge:exec '(v1 get 2 *)) (== (car (forge:dstack)) 48) (forge:exec '(5 v1 put)) (forge:exec '(v1 get 2 *)) (== (car (forge:dstack)) 10))