(use test) (use type-checks) (use variable-item) (define (with-error-to-string thunk) (fluid-let ((##sys#standard-error (open-output-string))) (thunk) (get-output-string ##sys#standard-error) ) ) #; (define (with-error-to-string thunk) (parameterize ((current-error-port (open-output-string))) (thunk) (get-output-string (current-error-port)) ) ) (test-group "Make Variable Item" (define t (make-variable 23 (lambda (x) (check-integer 't x)))) (test-error "Not an Integer" (t 'foo)) (test-assert "An Integer" (t 8)) (test "Value" 8 (t)) (test-assert "SRFI 17" (set! (t) 32)) (test "Value Set" 32 (t)) ) (test-group "Variable Item Warn" (define-warning-variable tw 23 integer) (test "Not an Integer" "\nWarning: (tw) bad argument type - not an integer: foo\n" (with-error-to-string (lambda () (tw 'foo)))) ) (test-group "Variable Item Error" (define-checked-variable tc 23 integer) (test-error "Not an Integer" (tc 'foo)) ) (unless (zero? (test-failure-count)) (exit 1))