cl-scopes/test/test-forge.lisp

56 lines
1.3 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 #:==))
(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))