;;;; critical-region-test.scm -*- Scheme -*- ;;;; Kon Lovett, Dec '18 (import scheme (chicken base) test (only (chicken format) format) (test-utils gloss)) (import critical-region) ;;; (test-begin "Critical Region") ;; (test-group "exchanger simple" (let ((xr (make-exchanger #f))) (test-assert (procedure? xr)) (test #f (xr #t)) (test #t (xr 4)) ) ) ;FIXME add tests (test-group "exchanger multiple" ) (test-group "Critical Region" (test-assert "disabled" (critical-region (not (interrupts-enabled?)))) (test-assert "enabled" (interrupts-enabled?)) (test-assert (not (receive (f v) (critical-region* (abort 'foo)) f))) (test-assert "enabled" (interrupts-enabled?)) (test-assert "apply disabled" (critical-region-apply (lambda (_) (not (interrupts-enabled?))) #f)) (test 'expected (critical-region-apply (lambda (x) x) 'expected)) (test-assert (not (receive (f v) (critical-region-call* (lambda () (abort 'foo))) f))) ) ;; (test-end "Critical Region") (test-exit)