plt/gui/config.ss
(module config mzscheme
  (require (lib "framework.ss" "framework"))
  (provide (all-defined))

  ;; Frame size preferences
  (define (size? x)
    (and (number? x)
         (exact? x)
         (integer? x)
         (positive? x)
         (< 0 x 10000)))
  (preferences:set-default 'schemeunit:frame:width 400 size?)
  (preferences:set-default 'schemeunit:frame:height 400 size?)
  (define pref:width
    (case-lambda
      [() (preferences:get 'schemeunit:frame:width)]
      [(v) (preferences:set 'schemeunit:frame:width v)]))
  (define pref:height
    (case-lambda
      [() (preferences:get 'schemeunit:frame:height)]
      [(v) (preferences:set 'schemeunit:frame:height v)]))

  ;; CONSTANTS
  ;; Some of these are obsolete, given the preferences above.

  (define DETAILS-CANVAS-INIT-WIDTH 400)
  (define FRAME-LABEL "SchemeUnit")
  (define FRAME-INIT-HEIGHT 400)
  (define TREE-INIT-WIDTH 240)
  (define TREE-COLORIZE-CASES #t)
  (define DIALOG-ERROR-TITLE "SchemeUnit: Error")
  (define STATUS-SUCCESS 'success)
  (define STATUS-FAILURE 'failure)
  (define STATUS-ERROR 'error)
  (define STATUS-UNEXECUTED 'unexecuted)
  (define VIEW-PANE-PERCENTS 
    (let [(total (+ DETAILS-CANVAS-INIT-WIDTH TREE-INIT-WIDTH))]
      (list (/ TREE-INIT-WIDTH total) (/ DETAILS-CANVAS-INIT-WIDTH total))))
  
  ;; Conventional assertion-info keys.
  ;; These must be kept in sync with assert-base.ss.
  (define prop:failure-assertion 'name)
  (define prop:failure-parameters 'params)
  (define prop:failure-location 'location)
  (define prop:failure-message 'message)
  (define prop:test-case-location 'test-case-location)
  
  ;; / CONSTANTS

  (define (known-property? s)
    (case s
      ((name params location message test-case-location) #t)
      ((actual expected) #t)
      ((expression) #t)
      (else #f)))
  
  )