racket/collects/tests/mred/mediastream.ss
2005-05-27 18:56:37 +00:00

61 lines
1.6 KiB
Scheme

(define out-base (make-object wx:media-stream-out-string-base%))
(define out (make-object wx:media-stream-out% out-base))
(define items (list 10 3.5 100 0 -1 -100 -3.5 "howdy"))
(define (write-all)
(for-each
(lambda (i)
(send out put i))
items))
(write-all)
(let ([start (send out tell)])
(send out put-fixed 100)
(write-all)
(let ([end (send out tell)])
(send out jump-to start)
(send out put-fixed 99)
(send out jump-to end)
(send out put "End Second")))
(define file (send out-base get-string))
(define in-base (make-object wx:media-stream-in-string-base% file))
(define in (make-object wx:media-stream-in% in-base))
(define (test expected got)
(unless (equal? expected got)
(error 'media-stream-test "expected ~s, got ~s~n" expected got)))
(define (read-all)
(for-each
(lambda (i)
(test i
(cond
[(string? i) (send in get-string)]
[(inexact? i) (send in get-inexact)]
[else (send in get-exact)])))
items))
(read-all)
(test 99 (let ([b (box 0)])
(send in get-fixed b)
(unbox b)))
(read-all)
(test "End Second" (send in get-string))
(define example-file-name (build-path (current-load-relative-directory) "mediastream.example"))
(define expect (if (file-exists? example-file-name)
(with-input-from-file example-file-name
(lambda ()
(read-string (+ (string-length file) 10))))
(begin
(fprintf (current-error-port) "Warning: ~a does not exist; creating it.~n" example-file-name)
(with-output-to-file example-file-name
(lambda () (display file)))
file)))
(unless (string=? file expect)
(error "generated file does not match expected file"))