Test utility for os2 tests.
This commit is contained in:
parent
2214f54ab0
commit
70356487f8
|
@ -0,0 +1,27 @@
|
||||||
|
#lang racket/base
|
||||||
|
;; Utilities for testing os2.rkt worlds.
|
||||||
|
|
||||||
|
(require racket/match)
|
||||||
|
(require rackunit)
|
||||||
|
(require (only-in racket/list flatten))
|
||||||
|
(require "os2.rkt")
|
||||||
|
|
||||||
|
(provide check-role)
|
||||||
|
|
||||||
|
(define (flatten-transition t)
|
||||||
|
(if (transition? t)
|
||||||
|
(apply transition (transition-state t) (flatten (transition-actions t)))
|
||||||
|
(transition t)))
|
||||||
|
|
||||||
|
;; AddRole World SendMessage World ConsTreeOf<Action> -> Void
|
||||||
|
;; Passes the given message to the given message-handler, with the
|
||||||
|
;; given initial-w. Compares the resulting world and list of actions
|
||||||
|
;; to the expected world and list of actions using check-equal?.
|
||||||
|
(define (check-role r initial-w sent-message final-w expected-actions)
|
||||||
|
(match-define (<add-role> _ _ (handlers _ _ message-handler)) r)
|
||||||
|
(match-define (<send-message> body role) sent-message)
|
||||||
|
(define synthetic-topic (topic role body #f))
|
||||||
|
(define result (flatten-transition ((message-handler synthetic-topic body) initial-w)))
|
||||||
|
(check-equal? result
|
||||||
|
(flatten-transition (transition final-w expected-actions))
|
||||||
|
"Produced world-and-actions did not match expected world-and-actions"))
|
Loading…
Reference in New Issue