gui/collects/tests/framework/prefs.ss
Robby Findler 05c24425e8 ...
original commit: a1c58bdd0fe81e8a514397ef7cb076bb0912668e
2001-06-28 06:12:41 +00:00

73 lines
2.1 KiB
Scheme

(module prefs mzscheme
(require "test-suite-utils.ss"
(lib "etc.ss")
(lib "list.ss"))
(local [(define pref-file (build-path (find-system-path 'pref-dir)
(case (system-type)
[(macos) "MrEd Preferences"]
[(windows) "mred.pre"]
[(unix) ".mred.prefs"]
[else (error 'prefs.ss "unknown os: ~a~n" (system-type))])))
(define old-prefs (if (file-exists? pref-file)
(call-with-input-file pref-file read)
null))
(define (check-eq? s) (lambda (t) (eq? s t)))
(define pref-sym 'framework:test-suite)]
(call-with-output-file pref-file
(lambda (port) (write (filter (lambda (x) (not (eq? (car x) pref-sym)))
old-prefs)
port))
'truncate)
(shutdown-mred)
(test
'preference-unbound
(check-eq? 'passed)
`(with-handlers ([exn:unknown-preference?
(lambda (x)
'passed)])
(preferences:get ',pref-sym)))
(test 'preference-set-default/get
(check-eq? 'passed)
`(begin (preferences:set-default ',pref-sym 'passed symbol?)
(preferences:get ',pref-sym)))
(test 'preference-set/get
(check-eq? 'new-pref)
`(begin (preferences:set ',pref-sym 'new-pref)
(preferences:get ',pref-sym)))
(with-handlers ([eof-result? (lambda (x) (void))])
(send-sexp-to-mred '(begin (preferences:set 'framework:verify-exit #f)
(exit:exit)
;; do this yield here so that exit:exit
;; actually exits on this interaction.
;; right now, exit:exit queue's a new event to exit
;; instead of just exiting immediately.
(yield (make-semaphore 0)))))
(test 'preference-get-after-restart
(check-eq? 'new-pref)
`(begin (preferences:set-default ',pref-sym 'passed symbol?)
(preferences:get ',pref-sym))))
(test 'dialog-appears
(lambda (x) (eq? 'passed x))
(lambda ()
(send-sexp-to-mred '(begin (send (make-object frame:basic% "frame") show #t)
(preferences:show-dialog)))
(wait-for-frame "Preferences")
(send-sexp-to-mred '(begin (preferences:hide-dialog)
(let ([f (get-top-level-focus-window)])
(if f
(if (string=? "Preferences" (send f get-label))
'failed
'passed)
'passed))))))
)