#lang typed/racket ;;; Tests for dds/rs. (require typed/rackunit "rs.rkt") (test-case "Basic definitions" (let* ([r1 (reaction (set 'x) (set 'y) (set 'z))] [r2 (reaction (set 'x) (set) (set 'y))] [rs (make-immutable-hash (list (cons 'a r1) (cons 'b r2)))] [s1 (set 'x 'z)] [s2 (set 'x 'y)]) (check-true (enabled? r1 s1)) (check-false (enabled? r1 s2)) (check-equal? (list-enabled rs s1) '(a b)) (check-equal? (list-enabled rs s2) '(b)) (check-equal? (union-products rs '(a b)) (set 'y 'z)) (check-equal? (apply-rs rs s1) (set 'y 'z)) (check-equal? (apply-rs rs s2) (set 'y))))