From 58e40e44ade809ecf32bae51b2e0efaf753af07c Mon Sep 17 00:00:00 2001 From: Sergiu Ivanov Date: Tue, 18 Feb 2020 12:20:32 +0100 Subject: [PATCH] bn-tests: Restructure. Also make the names of test cases correspond to the names of the sections in bn. --- bn-tests.rkt | 63 ++++++++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 32 deletions(-) diff --git a/bn-tests.rkt b/bn-tests.rkt index a4c69d8..6394226 100644 --- a/bn-tests.rkt +++ b/bn-tests.rkt @@ -7,38 +7,37 @@ ;;; This test case sets up the following Boolean network: ;;; x1 = x1 AND NOT x2 ;;; x2 = NOT x2 -(test-begin - (test-case "Simple two-variable Boolean network" - (let* ([f1 (λ ([s : State]) - (let ([x1 (hash-ref s 'x1)] - [x2 (hash-ref s 'x2)]) - (and x1 (not x2))))] - [f2 (λ ([s : State]) - (let ([x2 (hash-ref s 'x2)]) - (not x2)))] - [bn (make-bn-funcs `((x1 . ,f1) (x2 . ,f2)))]) +(test-case "Basic definitions" + (let* ([f1 (λ ([s : State]) + (let ([x1 (hash-ref s 'x1)] + [x2 (hash-ref s 'x2)]) + (and x1 (not x2))))] + [f2 (λ ([s : State]) + (let ([x2 (hash-ref s 'x2)]) + (not x2)))] + [bn (make-bn-funcs `((x1 . ,f1) (x2 . ,f2)))]) - (test-case "One-step syncronous update" - (let* ([s (make-state '((x1 . #t) (x2 . #f)))] - [new-s (update bn s '(x2 x1))]) - (check-equal? (hash-ref new-s 'x1) #t) - (check-equal? (hash-ref new-s 'x2) #t) - (check-equal? (length (hash-keys new-s)) 2))) + (test-case "One-step syncronous update" + (let* ([s (make-state '((x1 . #t) (x2 . #f)))] + [new-s (update bn s '(x2 x1))]) + (check-equal? (hash-ref new-s 'x1) #t) + (check-equal? (hash-ref new-s 'x2) #t) + (check-equal? (length (hash-keys new-s)) 2))) - (test-case "One-step asynchronous update" - (let* ([s (make-state '((x1 . #f) (x2 . #f)))] - [new-s (update bn s '(x2 x1))]) - (check-equal? (hash-ref new-s 'x1) #f) - (check-equal? (hash-ref new-s 'x2) #t) - (check-equal? (length (hash-keys new-s)) 2))) + (test-case "One-step asynchronous update" + (let* ([s (make-state '((x1 . #f) (x2 . #f)))] + [new-s (update bn s '(x2 x1))]) + (check-equal? (hash-ref new-s 'x1) #f) + (check-equal? (hash-ref new-s 'x2) #t) + (check-equal? (length (hash-keys new-s)) 2))))) - (test-case "Constructing networks from forms" - (let ([s (make-state '((x . #t) (y . #f)))] - [f (update-func-form->update-func '(and x y))]) - (check-equal? (f s) #f)) - (let ([bn1 (bn-form->bn (make-hash '((a . (and a b)) (b . (not b)))))] - [bn2 (make-bn-forms '((a . (and a b)) - (b . (not b))))] - [s (make-state '((a . #t) (b . #t)))]) - (check-equal? ((hash-ref bn1 'a) s) #t) - (check-equal? ((hash-ref bn2 'a) s) #t)))))) +(test-case "Syntactic description of Boolean networks" + (let ([s (make-state '((x . #t) (y . #f)))] + [f (update-func-form->update-func '(and x y))]) + (check-equal? (f s) #f)) + (let ([bn1 (bn-form->bn (make-hash '((a . (and a b)) (b . (not b)))))] + [bn2 (make-bn-forms '((a . (and a b)) + (b . (not b))))] + [s (make-state '((a . #t) (b . #t)))]) + (check-equal? ((hash-ref bn1 'a) s) #t) + (check-equal? ((hash-ref bn2 'a) s) #t)))