work in progress: test receiver

This commit is contained in:
Helmut Merz 2024-06-12 13:22:41 +02:00
parent 5b48306ccf
commit 10d4c9c687
4 changed files with 27 additions and 8 deletions

View file

@ -4,7 +4,8 @@
(:use :common-lisp) (:use :common-lisp)
(:local-nicknames (:config :scopes/config)) (:local-nicknames (:config :scopes/config))
(:export #:config #:service-config (:export #:config #:service-config
#:context #:name #:send #:context #:name #:actions #:send
#:action-spec
#:printer)) #:printer))
(in-package :scopes/core) (in-package :scopes/core)
@ -34,13 +35,14 @@
(let* ((acts (actions rcvr)) (let* ((acts (actions rcvr))
(selected (car acts))) (selected (car acts)))
(dolist (hdlr (handlers selected)) (dolist (hdlr (handlers selected))
(funcall hdlr msg))))) (funcall hdlr rcvr msg)))))
(defvar *context* nil) (defvar *context* nil)
;;;; simple printer service ;;;; simple printer service
(defun do-print (msg) (defun do-print (ctx msg)
(declare (ignore ctx))
(format t "~&~s~%" msg)) (format t "~&~s~%" msg))
(defclass printer (context) (defclass printer (context)

View file

@ -4,7 +4,7 @@
(:use :common-lisp) (:use :common-lisp)
(:local-nicknames (:core :scopes/core)) (:local-nicknames (:core :scopes/core))
(:export #:message #:simple-message (:export #:message #:simple-message
#:data)) #:head #:data))
(in-package :scopes/core/message) (in-package :scopes/core/message)
@ -29,5 +29,5 @@
(defmethod print-object ((msg message) stream) (defmethod print-object ((msg message) stream)
(with-slots (domain action class item) (head msg) (with-slots (domain action class item) (head msg)
(format stream (format stream
"~&<message (~a ~a ~a ~a) <data ~s>>~%" "<message (~a ~a ~a ~a) <data ~s>>"
domain action class item (data msg)))) domain action class item (data msg))))

View file

@ -14,10 +14,27 @@
(defvar *config* nil) (defvar *config* nil)
;;;; core/testing
(defclass test-rcvr (core:context)
((core:name :initform :test-rcvr)
(core:actions :initform
(list (make-instance 'core:action-spec
:handlers (list #'check-message))))
(expected :accessor expected :initform (make-hash-table :test #'equalp))))
(defun check-message (ctx msg)
(multiple-value-bind (val found) (gethash (message:head msg) (expected ctx))
(if (not found)
(push (format nil "unexpected: ~s" msg)
(t:errors t:*test-suite*)))))
;;;; test runner
(defclass test-suite (t:test-suite) (defclass test-suite (t:test-suite)
((receiver :reader receiver ((receiver :reader receiver
:initform (core:printer :test-rcvr)))) ;:initform (core:printer :test-rcvr))))
;:initform (make-instance 't:test-rcvr)))) :initform (make-instance 'test-rcvr))))
(defun run () (defun run ()
(let ((*config* nil) (let ((*config* nil)

View file

@ -6,7 +6,7 @@
(:use :common-lisp) (:use :common-lisp)
(:export #:*test-suite* (:export #:*test-suite*
#:test-suite #:deftest #:show-result #:test-suite #:deftest #:show-result
#:test #:== #:errors #:test #:==
#:test-path #:*current-system*)) #:test-path #:*current-system*))
(in-package :scopes/testing) (in-package :scopes/testing)