testing: + in-seq test, use in csys probe

This commit is contained in:
Helmut Merz 2026-02-28 11:55:59 +01:00
parent f5a5d6b629
commit f3491a5aa3
4 changed files with 14 additions and 7 deletions

View file

@ -46,7 +46,8 @@
(defun find-create-sensors (msg)
(let* ((key (cddr (shape:head msg)))
(sns (gethash key *sensors*)))
(format t "~&~a ~a" key sns)
;(format t "~&~a ~a" key sns)
(util:lgi key sns)
(or sns
(let* ((mx (message:create
(list :csys :sensor (shape:head-value msg :class))))

View file

@ -10,7 +10,7 @@
:description "Concurrent cybernetic communications systems."
:depends-on (:scopes-core)
:components ((:file "csys/csys"))
:long-description "scopes/csys: Concurrent cybernetic communications systems."
:long-description "scopes/csys: Concurrent cybernetic communication systems."
:in-order-to ((test-op (test-op "scopes-csys/test"))))
(defsystem :scopes-csys/test

View file

@ -14,7 +14,7 @@
(:util :scopes/util)
(:t :scopes/testing))
(:export #:run)
(:import-from :scopes/testing #:deftest #:== #:!=))
(:import-from :scopes/testing #:deftest #:== #:!= #:in-seq))
(in-package :scopes/test-csys)
@ -25,8 +25,8 @@
(defun probe (msg state syns env)
(let ((t:*test-suite* (test-suite env)))
(== (shape:data msg) (pop state))
(actor:become (csys:neuron #'probe state syns env))))
(let ((state (in-seq (shape:data msg) state :remove t)))
(actor:become (csys:neuron #'probe state syns env)))))
(defvar *probe* nil)

View file

@ -6,7 +6,7 @@
(:use :common-lisp)
(:export #:*test-suite*
#:test-suite #:deftest #:show-result
#:failure #:check #:test #:== #:has-prefix
#:failure #:check #:test #:== #:has-prefix #:in-seq
#:test-path #:*current-system*))
(in-package :scopes/testing)
@ -39,7 +39,8 @@
(let ((is-ok (funcall fn have wanted)))
(push is-ok (car (result *test-suite*)))
(unless is-ok
(failure fmt have wanted))))
(failure fmt have wanted))
is-ok))
(defun == (have wanted)
(check #'equalp "~s!=~s" have wanted))
@ -51,6 +52,11 @@
(check #'(lambda (h w) (string= (str:prefix (list h w)) w))
"~s has not prefix ~s" have wanted))
(defun in-seq (have seq &key remove)
(if (and (check #'position "~s is not in ~s" have seq) remove)
(remove-if (lambda (x) (eql x have)) seq :count 1)
seq))
(defmacro deftest (name args &body body)
`(defun ,name ,args
(push '(,name) (result *test-suite*))