private/tests/progress.ss
(module progress mzscheme
  (require (lib "list.ss" "srfi" "1")
           (lib "mred.ss" "mred")
           (lib "framework.ss" "framework")
           (lib "class.ss")
           "../../progress.ss")

  (define main-frame%
    (class (frame:status-line-mixin (frame:basic-mixin frame%))
      (init label (parent #f) (width #f) (height #f))
      (super-new (label label)
                 (parent parent)
                 (width width)
                 (height height))))

  (define frame (new main-frame%
                     (label "Test")
                     (width 600)
                     (height 200)))
  (define contents
    (new vertical-pane%
         (parent (send frame get-area-container))
         (alignment '(center center))
         (stretchable-height #t)))

  (send frame open-status-line 'status)
  (send frame update-status-line 'status "In progress...")
  (send frame show #t)

  (define progress-meters
    (map-in-order (lambda (tick)
                    (new progress-meter%
                         (parent contents)
                         (vert-margin 10)
                         (width 505)
                         (tick tick)))
                  (list tick/large tick/medium tick/small)))

  (thread (lambda ()
            (for-each (lambda (i)
                        (map (lambda (p)
                               (send p update-progress (/ (add1 i) 100)))
                             progress-meters)
                        (sleep 0.01))
                      (iota 100))
            (send frame update-status-line 'status "Done.")))

  (provide (all-defined)))