...
original commit: a1c58bdd0fe81e8a514397ef7cb076bb0912668e
This commit is contained in:
parent
88df9a66f3
commit
05c24425e8
|
@ -3,7 +3,7 @@
|
||||||
(lib "mred.ss" "mred")
|
(lib "mred.ss" "mred")
|
||||||
(lib "mred-sig.ss" "mred")
|
(lib "mred-sig.ss" "mred")
|
||||||
|
|
||||||
(prefix test: "test.ss")
|
"test.ss"
|
||||||
"test-sig.ss"
|
"test-sig.ss"
|
||||||
|
|
||||||
(prefix prefs-file: "prefs-file.ss")
|
(prefix prefs-file: "prefs-file.ss")
|
||||||
|
|
|
@ -143,7 +143,7 @@
|
||||||
(super-instantiate ())
|
(super-instantiate ())
|
||||||
(accept-drop-files #t)
|
(accept-drop-files #t)
|
||||||
|
|
||||||
(make-object menu% "&Window" (make-object (get-menu-bar%) this))
|
(make-object menu% "&Windows" (make-object (get-menu-bar%) this))
|
||||||
(reorder-menus this)
|
(reorder-menus this)
|
||||||
(send (group:get-the-frame-group) insert-frame this)
|
(send (group:get-the-frame-group) insert-frame this)
|
||||||
[define panel (make-root-area-container (get-area-container%) this)]
|
[define panel (make-root-area-container (get-area-container%) this)]
|
||||||
|
@ -583,7 +583,7 @@
|
||||||
|
|
||||||
(define editor-mixin
|
(define editor-mixin
|
||||||
(mixin (standard-menus<%>) (-editor<%>)
|
(mixin (standard-menus<%>) (-editor<%>)
|
||||||
(init file-name)
|
(init (file-name #f))
|
||||||
|
|
||||||
(inherit get-area-container get-client-size
|
(inherit get-area-container get-client-size
|
||||||
show get-edit-target-window get-edit-target-object)
|
show get-edit-target-window get-edit-target-object)
|
||||||
|
|
|
@ -69,11 +69,11 @@
|
||||||
(instantiate (get-menu-item%) ()
|
(instantiate (get-menu-item%) ()
|
||||||
(label ,(join menu-before-string menu-after-string
|
(label ,(join menu-before-string menu-after-string
|
||||||
`(,(an-item->string-name item))))
|
`(,(an-item->string-name item))))
|
||||||
(parent ,(menu-item-menu-name item))
|
(menu ,(menu-item-menu-name item))
|
||||||
(callback (let ([,callback-name (lambda (item evt) (,callback-name item evt))])
|
(callback (let ([,callback-name (lambda (item evt) (,callback-name item evt))])
|
||||||
,callback-name))
|
,callback-name))
|
||||||
(shortcut ,key)
|
(shortcut ,key)
|
||||||
(help (,(an-item->help-string-name item)))
|
(help-string (,(an-item->help-string-name item)))
|
||||||
(demand-callback (lambda (menu-item) (,(an-item->on-demand-name item) menu-item)))))))))
|
(demand-callback (lambda (menu-item) (,(an-item->on-demand-name item) menu-item)))))))))
|
||||||
|
|
||||||
;; build-after-super-clause : ((X -> symbol) -> X -> (listof clause))
|
;; build-after-super-clause : ((X -> symbol) -> X -> (listof clause))
|
||||||
|
|
|
@ -150,6 +150,15 @@
|
||||||
#f])
|
#f])
|
||||||
#f)))
|
#f)))
|
||||||
(scheme-paren:get-comments))))
|
(scheme-paren:get-comments))))
|
||||||
|
|
||||||
|
|
||||||
|
(rename [super-on-close on-close])
|
||||||
|
(override on-close)
|
||||||
|
(define (on-close)
|
||||||
|
(remove-indents-callback)
|
||||||
|
(remove-paren-callback)
|
||||||
|
(super-on-close))
|
||||||
|
|
||||||
(define remove-indents-callback
|
(define remove-indents-callback
|
||||||
(preferences:add-callback
|
(preferences:add-callback
|
||||||
'framework:tabify
|
'framework:tabify
|
||||||
|
|
|
@ -5,9 +5,12 @@
|
||||||
(lib "mred-sig.ss" "mred")
|
(lib "mred-sig.ss" "mred")
|
||||||
(lib "mred.ss" "mred"))
|
(lib "mred.ss" "mred"))
|
||||||
|
|
||||||
(provide-signature-elements framework:test^)
|
(provide-signature-elements ((unit test : framework:test^)))
|
||||||
|
|
||||||
(define-values/invoke-unit/sig framework:test^
|
(define-values/invoke-unit/sig ((unit test : framework:test^))
|
||||||
framework:test@
|
(compound-unit/sig
|
||||||
|
(import [m : mred^])
|
||||||
|
(link [test : framework:test^ (framework:test@ m)])
|
||||||
|
(export (unit test)))
|
||||||
#f
|
#f
|
||||||
mred^))
|
mred^))
|
|
@ -114,5 +114,3 @@ test as last time, or `all' to run all of the tests.
|
||||||
|
|
||||||
|
|
||||||
|#)
|
|#)
|
||||||
|
|
||||||
`(load.ss)
|
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
|
(module canvas mzscheme
|
||||||
|
(require "test-suite-utils.ss")
|
||||||
|
|
||||||
(define (test-creation class name)
|
(define (test-creation class name)
|
||||||
(test
|
(test
|
||||||
name
|
name
|
||||||
(lambda (x) #t)
|
(lambda (x) (eq? 'passed x))
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(send-sexp-to-mred
|
(send-sexp-to-mred
|
||||||
`(let* ([f (make-object frame:basic% "test canvas" #f 300 300)]
|
`(let* ([f (make-object frame:basic% "test canvas" #f 300 300)]
|
||||||
|
@ -10,7 +13,8 @@
|
||||||
(send f show #t)))
|
(send f show #t)))
|
||||||
(wait-for-frame "test canvas")
|
(wait-for-frame "test canvas")
|
||||||
(send-sexp-to-mred
|
(send-sexp-to-mred
|
||||||
`(send (get-top-level-focus-window) show #f)))))
|
`(send (get-top-level-focus-window) show #f))
|
||||||
|
'passed)))
|
||||||
|
|
||||||
(test-creation '(canvas:basic-mixin editor-canvas%)
|
(test-creation '(canvas:basic-mixin editor-canvas%)
|
||||||
'canvas:basic-mixin-creation)
|
'canvas:basic-mixin-creation)
|
||||||
|
@ -21,3 +25,4 @@
|
||||||
'canvas:wide-snip-mixin-creation)
|
'canvas:wide-snip-mixin-creation)
|
||||||
(test-creation 'canvas:wide-snip%
|
(test-creation 'canvas:wide-snip%
|
||||||
'canvas:wide-snip%-creation)
|
'canvas:wide-snip%-creation)
|
||||||
|
)
|
||||||
|
|
|
@ -1,44 +1,50 @@
|
||||||
(module debug mzscheme
|
(module debug mzscheme
|
||||||
(provide debug-printf debug-when)
|
(provide debug-printf debug-when)
|
||||||
|
|
||||||
;; all of the steps in the tcp connection
|
(define-syntax debug-when
|
||||||
(define tcp? #f)
|
(lambda (stx)
|
||||||
|
|
||||||
;; administrative messages about preferences files and
|
;; all of the steps in the tcp connection
|
||||||
;; command line flags
|
(define mz-tcp? #f)
|
||||||
(define admin? #f)
|
(define mr-tcp? mz-tcp?)
|
||||||
|
|
||||||
;; tests that passed and those that failed
|
;; administrative messages about preferences files and
|
||||||
(define schedule? #t)
|
;; command line flags
|
||||||
|
(define admin? #f)
|
||||||
|
|
||||||
;; of the sexpression transactions between mz and mred
|
;; tests that passed and those that failed
|
||||||
(define messages? #t)
|
(define schedule? #t)
|
||||||
|
|
||||||
|
;; of the sexpression transactions between mz and mred
|
||||||
|
(define messages? #t)
|
||||||
|
|
||||||
|
(syntax-case stx (mr-tcp mz-tcp admin schedule messages)
|
||||||
|
[(_ mr-tcp rest ...)
|
||||||
|
(if mr-tcp?
|
||||||
|
(syntax (begin rest ...))
|
||||||
|
(syntax (void)))]
|
||||||
|
[(_ mz-tcp rest ...)
|
||||||
|
(if mz-tcp?
|
||||||
|
(syntax (begin rest ...))
|
||||||
|
(syntax (void)))]
|
||||||
|
[(_ admin rest ...)
|
||||||
|
(if admin?
|
||||||
|
(syntax (begin rest ...))
|
||||||
|
(syntax (void)))]
|
||||||
|
[(_ schedule rest ...)
|
||||||
|
(if schedule?
|
||||||
|
(syntax (begin rest ...))
|
||||||
|
(syntax (void)))]
|
||||||
|
[(_ messages rest ...)
|
||||||
|
(if messages?
|
||||||
|
(syntax (begin rest ...))
|
||||||
|
(syntax (void)))]
|
||||||
|
[(_ unk rest ...)
|
||||||
|
(raise-syntax-error 'debug-when "unknown flag" stx (syntax unk))])))
|
||||||
|
|
||||||
(define-syntax debug-printf
|
(define-syntax debug-printf
|
||||||
(lambda (stx)
|
(lambda (stx)
|
||||||
(syntax-case stx ()
|
(syntax-case stx ()
|
||||||
[(_ flag fmt-string rest ...)
|
[(_ flag fmt-string rest ...)
|
||||||
(with-syntax ([flag-name (format ">> ~a: " (syntax-object->datum (syntax flag)))])
|
(with-syntax ([flag-name (format ">> ~a: " (syntax-object->datum (syntax flag)))])
|
||||||
(syntax (debug-when flag (printf (string-append flag-name fmt-string) rest ...))))])))
|
(syntax (debug-when flag (printf (string-append flag-name fmt-string) rest ...))))]))))
|
||||||
|
|
||||||
(define-syntax debug-when
|
|
||||||
(lambda (stx)
|
|
||||||
(syntax-case stx (tcp admin schedule messages)
|
|
||||||
[(_ tcp rest ...)
|
|
||||||
(syntax
|
|
||||||
(when tcp?
|
|
||||||
rest ...))]
|
|
||||||
[(_ admin rest ...)
|
|
||||||
(syntax
|
|
||||||
(when admin?
|
|
||||||
rest ...))]
|
|
||||||
[(_ schedule rest ...)
|
|
||||||
(syntax
|
|
||||||
(when schedule?
|
|
||||||
rest ...))]
|
|
||||||
[(_ messages rest ...)
|
|
||||||
(syntax
|
|
||||||
(when messages?
|
|
||||||
rest ...))]
|
|
||||||
[(_ unk rest ...)
|
|
||||||
(raise-syntax-error 'debug-when "unknown flag" stx (syntax unk))]))))
|
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
(module exit mzscheme
|
||||||
|
(require "test-suite-utils.ss")
|
||||||
|
|
||||||
(test 'exit/no-prompt
|
(test 'exit/no-prompt
|
||||||
(lambda (x)
|
(lambda (x)
|
||||||
(and (eq? x 'passed)
|
(and (eq? x 'passed)
|
||||||
|
@ -99,3 +102,4 @@
|
||||||
(with-handlers ([eof-result? (lambda (x) 'passed)])
|
(with-handlers ([eof-result? (lambda (x) 'passed)])
|
||||||
(send-sexp-to-mred
|
(send-sexp-to-mred
|
||||||
`(exit:exit))))))
|
`(exit:exit))))))
|
||||||
|
)
|
||||||
|
|
|
@ -1,50 +1,69 @@
|
||||||
(define (test-creation name class-expression)
|
(module frame mzscheme
|
||||||
|
(require "test-suite-utils.ss")
|
||||||
|
|
||||||
|
(define (test-creation name class-expression . args)
|
||||||
(test
|
(test
|
||||||
name
|
name
|
||||||
(lambda (x) x)
|
(lambda (x) (eq? 'passed x))
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(send-sexp-to-mred
|
(let ([frame-label
|
||||||
`(begin (preferences:set 'framework:exit-when-no-frames #f)
|
(send-sexp-to-mred
|
||||||
(send (make-object ,class-expression "test") show #t)))
|
`(let ([f (instantiate ,class-expression () ,@args)])
|
||||||
(wait-for-frame "test")
|
(preferences:set 'framework:exit-when-no-frames #f)
|
||||||
(queue-sexp-to-mred
|
(send f show #t)
|
||||||
'(send (get-top-level-focus-window) close))
|
(send f get-label)))])
|
||||||
#t)))
|
(wait-for-frame frame-label)
|
||||||
|
(queue-sexp-to-mred
|
||||||
|
'(send (get-top-level-focus-window) close))
|
||||||
|
'passed))))
|
||||||
|
|
||||||
(test-creation
|
(test-creation
|
||||||
'basic%-creation
|
'basic%-creation
|
||||||
'frame:basic%)
|
'frame:basic%
|
||||||
|
'(label "test"))
|
||||||
(test-creation
|
(test-creation
|
||||||
'basic-mixin-creation
|
'basic-mixin-creation
|
||||||
'(frame:basic-mixin frame%))
|
'(frame:basic-mixin frame%)
|
||||||
|
'(label "test"))
|
||||||
|
|
||||||
(test-creation
|
(test-creation
|
||||||
'info-mixin-creation
|
'info-mixin-creation
|
||||||
'(frame:info-mixin frame:basic%))
|
'(frame:info-mixin frame:basic%)
|
||||||
|
'(label "test"))
|
||||||
|
|
||||||
(test-creation
|
(test-creation
|
||||||
'info%-creation
|
'info%-creation
|
||||||
'frame:info%)
|
'frame:info%
|
||||||
|
'(label "test"))
|
||||||
|
|
||||||
(test-creation
|
(test-creation
|
||||||
'text-info-mixin-creation
|
'text-info-mixin-creation
|
||||||
'(frame:text-info-mixin frame:info%))
|
'(frame:text-info-mixin frame:info%)
|
||||||
|
'(label "test"))
|
||||||
(test-creation
|
(test-creation
|
||||||
'text-info%-creation
|
'text-info%-creation
|
||||||
'frame:text-info%)
|
'frame:text-info%
|
||||||
|
'(label "test"))
|
||||||
|
|
||||||
(test-creation
|
(test-creation
|
||||||
'pasteboard-info-mixin-creation
|
'pasteboard-info-mixin-creation
|
||||||
'(frame:pasteboard-info-mixin frame:info%))
|
'(frame:pasteboard-info-mixin frame:info%)
|
||||||
|
'(label "test"))
|
||||||
|
|
||||||
(test-creation
|
(test-creation
|
||||||
'pasteboard-info%-creation
|
'pasteboard-info%-creation
|
||||||
'frame:pasteboard-info%)
|
'frame:pasteboard-info%
|
||||||
|
'(label "test"))
|
||||||
|
|
||||||
(test-creation
|
(test-creation
|
||||||
'standard-menus%-creation
|
'standard-menus%-creation
|
||||||
'frame:standard-menus%)
|
'frame:standard-menus%
|
||||||
|
'(label "test"))
|
||||||
|
|
||||||
(test-creation
|
(test-creation
|
||||||
'standard-menus-mixin
|
'standard-menus-mixin
|
||||||
'(frame:standard-menus-mixin frame:basic%))
|
'(frame:standard-menus-mixin frame:basic%)
|
||||||
|
'(label "test"))
|
||||||
|
|
||||||
(test-creation
|
(test-creation
|
||||||
'text%-creation
|
'text%-creation
|
||||||
|
@ -95,15 +114,18 @@
|
||||||
(test
|
(test
|
||||||
name
|
name
|
||||||
(lambda (x)
|
(lambda (x)
|
||||||
(delete-file tmp-file)
|
(when (file-exists? tmp-file)
|
||||||
|
(delete-file tmp-file))
|
||||||
(equal? x test-file-contents))
|
(equal? x test-file-contents))
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(send-sexp-to-mred
|
(let ([frame-name
|
||||||
`(begin
|
(send-sexp-to-mred
|
||||||
(preferences:set 'framework:exit-when-no-frames #f)
|
`(let ([frame (instantiate ,class-expression ())])
|
||||||
(preferences:set 'framework:file-dialogs 'common)
|
(preferences:set 'framework:exit-when-no-frames #f)
|
||||||
(send (make-object ,class-expression "test open") show #t)))
|
(preferences:set 'framework:file-dialogs 'common)
|
||||||
(wait-for-frame "test open")
|
(send frame show #t)
|
||||||
|
(send frame get-label)))])
|
||||||
|
(wait-for-frame frame-name)
|
||||||
(send-sexp-to-mred
|
(send-sexp-to-mred
|
||||||
`(test:menu-select "File" "Open..."))
|
`(test:menu-select "File" "Open..."))
|
||||||
(wait-for-frame "Get file")
|
(wait-for-frame "Get file")
|
||||||
|
@ -128,37 +150,10 @@
|
||||||
[t (send (send w get-editor) get-text)])
|
[t (send (send w get-editor) get-text)])
|
||||||
(test:close-top-level-window w)
|
(test:close-top-level-window w)
|
||||||
t))
|
t))
|
||||||
(wait-for-frame "test open")
|
(wait-for-frame frame-name)
|
||||||
(queue-sexp-to-mred
|
(queue-sexp-to-mred
|
||||||
`(send (get-top-level-focus-window) close)))))))
|
`(send (get-top-level-focus-window) close))))))))
|
||||||
|
|
||||||
(test-open "frame:editor open" 'frame:text%)
|
(test-open "frame:editor open" 'frame:text%)
|
||||||
(test-open "frame:searchable open" 'frame:searchable%)
|
(test-open "frame:searchable open" 'frame:searchable%)
|
||||||
(test-open "frame:text-info open" 'frame:text-info-file%)
|
(test-open "frame:text-info open" 'frame:text-info-file%))
|
||||||
|
|
||||||
(test
|
|
||||||
"set!-ing menu callback in standard-menus-frame"
|
|
||||||
(lambda (x) (eq? x 'passed))
|
|
||||||
(lambda ()
|
|
||||||
(send-sexp-to-mred
|
|
||||||
`(let* ([set!-cb-frame%
|
|
||||||
(class frame:standard-menus% ()
|
|
||||||
(private [value 'failed])
|
|
||||||
(public
|
|
||||||
[get-value
|
|
||||||
(lambda () value)]
|
|
||||||
[update-printing-proc
|
|
||||||
(lambda ()
|
|
||||||
(set! file-menu:print
|
|
||||||
(lambda x (set! value 'passed))))])
|
|
||||||
(override
|
|
||||||
[file-menu:print (lambda x (void))])
|
|
||||||
(sequence (super-init "set!-cb frame")))]
|
|
||||||
[f (make-object set!-cb-frame%)])
|
|
||||||
(send f update-printing-proc)
|
|
||||||
(send f show #t)))
|
|
||||||
(wait-for-frame "set!-cb frame")
|
|
||||||
(send-sexp-to-mred
|
|
||||||
`(test:menu-select "File" "Print..."))
|
|
||||||
(send-sexp-to-mred
|
|
||||||
`(send (get-top-level-focus-window) get-value))))
|
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
(require (lib "errortrace.ss" "errortrace"))
|
;(require (lib "errortrace.ss" "errortrace"))
|
||||||
|
|
||||||
(module framework-test-engine mzscheme
|
(module framework-test-engine mzscheme
|
||||||
(require (lib "pconvert.ss")
|
(require (lib "pconvert.ss")
|
||||||
(lib "mred.ss" "mred")
|
(lib "mred.ss" "mred")
|
||||||
(lib "errortrace.ss" "errortrace")
|
"debug.ss")
|
||||||
"debug.ss"
|
|
||||||
)
|
|
||||||
|
|
||||||
(define errs null)
|
(define errs null)
|
||||||
(define sema (make-semaphore 1))
|
(define sema (make-semaphore 1))
|
||||||
|
@ -16,42 +14,49 @@
|
||||||
|
|
||||||
(define (exception->string x)
|
(define (exception->string x)
|
||||||
(if (exn? x)
|
(if (exn? x)
|
||||||
; (let ([p (open-output-string)])
|
(let ([p (open-output-string)])
|
||||||
; (print-error-trace p x)
|
(parameterize ([current-error-port p])
|
||||||
; (string-append (exn-message x) (string #\newline) (get-output-string p)))
|
((error-display-handler) (exn-message x) x))
|
||||||
(exn-message x)
|
(get-output-string p))
|
||||||
(format "~s" x)))
|
(format "uncaught exn: ~s" x)))
|
||||||
|
|
||||||
(thread
|
(thread
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(let ([port (load
|
(with-handlers ([(lambda (x) #t)
|
||||||
(build-path
|
(lambda (x)
|
||||||
(collection-path "tests" "framework")
|
(printf "test suite thread died: ~a~n"
|
||||||
"receive-sexps-port.ss"))])
|
(if (exn? x)
|
||||||
(debug-printf tcp "about to connect to ~a~n" port)
|
(exn-message x)
|
||||||
(let*-values ([(in out) (tcp-connect "127.0.0.1" port)])
|
(format "~s" x))))])
|
||||||
(let loop ()
|
(let ([port (load
|
||||||
(debug-printf tcp "about to read~n")
|
(build-path
|
||||||
(let ([sexp (read in)])
|
(collection-path "tests" "framework")
|
||||||
(debug-printf tcp "got something~n")
|
"receive-sexps-port.ss"))])
|
||||||
(if (eof-object? sexp)
|
(debug-printf mr-tcp "about to connect to ~a~n" port)
|
||||||
(begin
|
(let*-values ([(in out) (tcp-connect "127.0.0.1" port)])
|
||||||
(close-input-port in)
|
(let loop ()
|
||||||
(close-output-port out)
|
(debug-printf mr-tcp "about to read~n")
|
||||||
(exit))
|
(let ([sexp (read in)])
|
||||||
(begin
|
(if (eof-object? sexp)
|
||||||
(write
|
(begin
|
||||||
(let ([these-errs (protect (lambda () (begin0 errs (set! errs null))))])
|
(debug-printf mr-tcp "got eof~n")
|
||||||
(if (null? these-errs)
|
(close-input-port in)
|
||||||
(with-handlers ([(lambda (x) #t)
|
(close-output-port out)
|
||||||
(lambda (x) (list 'error (exception->string x)))])
|
(exit))
|
||||||
(list 'normal (print-convert (eval sexp))))
|
(begin
|
||||||
(list 'error
|
(debug-printf mr-tcp "got expression to evaluate~n")
|
||||||
(apply string-append
|
(write
|
||||||
(map (lambda (x) (string-append (exception->string x) (string #\newline)))
|
(let ([these-errs (protect (lambda () (begin0 errs (set! errs null))))])
|
||||||
these-errs)))))
|
(if (null? these-errs)
|
||||||
out)
|
(with-handlers ([not-break-exn?
|
||||||
(loop)))))))))
|
(lambda (x) (list 'error (exception->string x)))])
|
||||||
|
(list 'normal (print-convert (eval sexp))))
|
||||||
|
(list 'last-error
|
||||||
|
(apply string-append
|
||||||
|
(map (lambda (x) (string-append (exception->string x) (string #\newline)))
|
||||||
|
these-errs)))))
|
||||||
|
out)
|
||||||
|
(loop))))))))))
|
||||||
|
|
||||||
(let ([od (event-dispatch-handler)]
|
(let ([od (event-dispatch-handler)]
|
||||||
[port (current-output-port)])
|
[port (current-output-port)])
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
(module group-test mzscheme
|
||||||
|
(require "test-suite-utils.ss")
|
||||||
|
|
||||||
(test
|
(test
|
||||||
'exit-off
|
'exit-off
|
||||||
(lambda (x) (not (equal? x "test")))
|
(lambda (x) (not (equal? x "test")))
|
||||||
|
@ -140,3 +143,5 @@
|
||||||
(for-each (lambda (x) (send x close)) frames))))))
|
(for-each (lambda (x) (send x close)) frames))))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
)
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
(module handler-test mzscheme
|
||||||
|
(require "test-suite-utils.ss")
|
||||||
|
|
||||||
(let* ([filename "framework-group-test.ss"]
|
(let* ([filename "framework-group-test.ss"]
|
||||||
[tmp-filename (build-path (find-system-path 'temp-dir) filename)])
|
[tmp-filename (build-path (find-system-path 'temp-dir) filename)])
|
||||||
|
|
||||||
|
@ -40,3 +43,5 @@
|
||||||
(send-sexp-to-mred
|
(send-sexp-to-mred
|
||||||
`(let ([f (car (get-top-level-windows))])
|
`(let ([f (car (get-top-level-windows))])
|
||||||
(send (send f get-editor) get-filename))))))
|
(send (send f get-editor) get-filename))))))
|
||||||
|
|
||||||
|
)
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
(module keys mzscheme
|
||||||
|
(require "test-suite-utils.ss")
|
||||||
|
|
||||||
(test
|
(test
|
||||||
'keymap:aug-keymap%/get-table
|
'keymap:aug-keymap%/get-table
|
||||||
(lambda (x)
|
(lambda (x)
|
||||||
|
@ -121,3 +124,5 @@
|
||||||
(scheme:text-mixin text:basic%))])
|
(scheme:text-mixin text:basic%))])
|
||||||
(sequence (super-init name)))
|
(sequence (super-init name)))
|
||||||
scheme-specs)
|
scheme-specs)
|
||||||
|
|
||||||
|
)
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
;; mem-boxes : (list-of (list string (list-of (weak-box TST))))
|
(module mem mzscheme
|
||||||
|
(require "test-suite-utils.ss")
|
||||||
|
|
||||||
|
; mem-boxes : (list-of (list string (list-of (weak-box TST))))
|
||||||
(send-sexp-to-mred '(define mem-boxes null))
|
(send-sexp-to-mred '(define mem-boxes null))
|
||||||
|
|
||||||
(define mem-count 10)
|
(define mem-count 10)
|
||||||
|
@ -32,13 +35,17 @@
|
||||||
[anything? #f])
|
[anything? #f])
|
||||||
(for-each
|
(for-each
|
||||||
(lambda (boxl)
|
(lambda (boxl)
|
||||||
(let* ([tag (first boxl)]
|
(let* ([tag (car boxl)]
|
||||||
[boxes (second boxl)]
|
[boxes (cadr boxl)]
|
||||||
[calc-results
|
[calc-results
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(foldl (lambda (b n) (if (weak-box-value b) (+ n 1) n))
|
(let loop ([boxes boxes]
|
||||||
0
|
[n 0])
|
||||||
boxes))])
|
(cond
|
||||||
|
[(null? boxes) n]
|
||||||
|
[else (if (weak-box-value (car boxes))
|
||||||
|
(loop (cdr boxes) (+ n 1))
|
||||||
|
(loop (cdr boxes) n))])))])
|
||||||
(let loop ([tries 16])
|
(let loop ([tries 16])
|
||||||
(unless (zero? tries)
|
(unless (zero? tries)
|
||||||
(when (> (calc-results) 0)
|
(when (> (calc-results) 0)
|
||||||
|
@ -117,3 +124,4 @@
|
||||||
;(test-frame-allocate 'frame:pasteboard%)
|
;(test-frame-allocate 'frame:pasteboard%)
|
||||||
;(test-frame-allocate 'frame:pasteboard-info-file%)
|
;(test-frame-allocate 'frame:pasteboard-info-file%)
|
||||||
(done)
|
(done)
|
||||||
|
)
|
||||||
|
|
|
@ -1,61 +1,66 @@
|
||||||
|
(module panel mzscheme
|
||||||
|
(require "test-suite-utils.ss")
|
||||||
|
|
||||||
(test
|
(test
|
||||||
'single-panel
|
'single-panel
|
||||||
(lambda (x) (eq? x 'passed))
|
(lambda (x) (eq? x 'passed))
|
||||||
`(let* ([semaphore (make-semaphore 0)]
|
`(let* ([semaphore (make-semaphore 0)]
|
||||||
[semaphore-frame%
|
[semaphore-frame%
|
||||||
(class frame% args
|
(class frame%
|
||||||
(override
|
(override on-close)
|
||||||
[on-close (lambda () (semaphore-post semaphore))])
|
[define on-close (lambda () (semaphore-post semaphore))]
|
||||||
(sequence
|
(super-instantiate ()))]
|
||||||
(apply super-init args)))]
|
|
||||||
[f (make-object semaphore-frame% "Single Panel Test")]
|
[f (make-object semaphore-frame% "Single Panel Test")]
|
||||||
[blue-brush (send the-brush-list find-or-create-brush "BLUE" 'solid)]
|
[blue-brush (send the-brush-list find-or-create-brush "BLUE" 'solid)]
|
||||||
[green-brush (send the-brush-list find-or-create-brush "FOREST GREEN" 'solid)]
|
[green-brush (send the-brush-list find-or-create-brush "FOREST GREEN" 'solid)]
|
||||||
[black-pen (send the-pen-list find-or-create-pen "BLACK" 1 'solid)]
|
[black-pen (send the-pen-list find-or-create-pen "BLACK" 1 'solid)]
|
||||||
[grid-canvas%
|
[grid-canvas%
|
||||||
(class canvas% (lines parent label stretchable-width? stretchable-height?)
|
(class canvas%
|
||||||
|
(init-field lines)
|
||||||
|
(init label)
|
||||||
(inherit get-dc get-client-size)
|
(inherit get-dc get-client-size)
|
||||||
(override
|
(override on-paint)
|
||||||
[on-paint
|
(define (on-paint)
|
||||||
(lambda ()
|
(let-values ([(width height) (get-client-size)])
|
||||||
(let-values ([(width height) (get-client-size)])
|
(let ([dc (get-dc)]
|
||||||
(let ([dc (get-dc)]
|
[single-width (/ width lines)]
|
||||||
[single-width (/ width lines)]
|
[single-height (/ height lines)])
|
||||||
[single-height (/ height lines)])
|
(send dc set-pen black-pen)
|
||||||
(send dc set-pen black-pen)
|
(let loop ([i lines])
|
||||||
(let loop ([i lines])
|
(cond
|
||||||
(cond
|
[(zero? i) (void)]
|
||||||
[(zero? i) (void)]
|
[else
|
||||||
[else
|
(let loop ([j lines])
|
||||||
(let loop ([j lines])
|
(cond
|
||||||
(cond
|
[(zero? j) (void)]
|
||||||
[(zero? j) (void)]
|
[else
|
||||||
[else
|
(send dc set-brush
|
||||||
(send dc set-brush
|
(if (= 0 (modulo (+ i j) 2))
|
||||||
(if (= 0 (modulo (+ i j) 2))
|
blue-brush green-brush))
|
||||||
blue-brush green-brush))
|
(send dc draw-rectangle
|
||||||
(send dc draw-rectangle
|
(* single-width (- i 1))
|
||||||
(* single-width (- i 1))
|
(* single-height (- j 1))
|
||||||
(* single-height (- j 1))
|
single-width
|
||||||
single-width
|
single-height)
|
||||||
single-height)
|
(loop (- j 1))]))
|
||||||
(loop (- j 1))]))
|
(loop (- i 1))])))))
|
||||||
(loop (- i 1))])))))])
|
(super-instantiate ())
|
||||||
(inherit set-label min-width min-height stretchable-height stretchable-width)
|
|
||||||
(sequence
|
|
||||||
(super-init parent)
|
|
||||||
(stretchable-width stretchable-width?)
|
|
||||||
(stretchable-height stretchable-height?)
|
|
||||||
(min-width 50)
|
|
||||||
(min-height 50)
|
|
||||||
(set-label label)))]
|
|
||||||
|
|
||||||
|
;; soon to be obsolete, hopefully.
|
||||||
|
(inherit set-label)
|
||||||
|
(set-label label)
|
||||||
|
|
||||||
|
(inherit min-width min-height)
|
||||||
|
(min-width 50)
|
||||||
|
(min-height 50))]
|
||||||
[border-panel (make-object horizontal-panel% f '(border))]
|
[border-panel (make-object horizontal-panel% f '(border))]
|
||||||
[single-panel (make-object panel:single% border-panel)]
|
[single-panel (make-object panel:single% border-panel)]
|
||||||
[children (list (make-object grid-canvas% 3 single-panel "Small" #f #f)
|
[children
|
||||||
(make-object grid-canvas% 3 single-panel "Wide" #f #t)
|
(list
|
||||||
(make-object grid-canvas% 3 single-panel "Tall" #t #f)
|
(instantiate grid-canvas% () (lines 3) (parent single-panel) (label "Small") (stretchable-width #f) (stretchable-height #f))
|
||||||
(make-object grid-canvas% 3 single-panel "Wide and Tall" #t #t))]
|
(instantiate grid-canvas% () (lines 3) (parent single-panel) (label "Wide") (stretchable-width #f) (stretchable-height #t))
|
||||||
|
(instantiate grid-canvas% () (lines 3) (parent single-panel) (label "Tall") (stretchable-width #t) (stretchable-height #f))
|
||||||
|
(instantiate grid-canvas% () (lines 3) (parent single-panel) (label "Wide and Tall") (stretchable-width #t) (stretchable-height #t)))]
|
||||||
[active-child (car children)]
|
[active-child (car children)]
|
||||||
[radios (make-object horizontal-panel% f)]
|
[radios (make-object horizontal-panel% f)]
|
||||||
[make-radio
|
[make-radio
|
||||||
|
@ -128,3 +133,4 @@
|
||||||
(yield semaphore)
|
(yield semaphore)
|
||||||
(send f show #f)
|
(send f show #f)
|
||||||
result))
|
result))
|
||||||
|
)
|
||||||
|
|
|
@ -1,20 +1,24 @@
|
||||||
|
(module pasteboard mzscheme
|
||||||
|
(require "test-suite-utils.ss")
|
||||||
|
|
||||||
(define (test-creation frame class name)
|
(define (test-creation frame class name)
|
||||||
(test
|
(test
|
||||||
name
|
name
|
||||||
(lambda (x) #t)
|
(lambda (x) #t)
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(send-sexp-to-mred
|
(let ([frame-label
|
||||||
`(let* ([% (class-asi ,frame
|
(send-sexp-to-mred
|
||||||
(override
|
`(let* ([% (class ,frame
|
||||||
[get-editor%
|
(override get-editor%)
|
||||||
(lambda ()
|
[define (get-editor%)
|
||||||
,class)]))]
|
,class])]
|
||||||
[f (make-object % "test pasteboard")])
|
[f (instantiate % ())])
|
||||||
(preferences:set 'framework:exit-when-no-frames #f)
|
(preferences:set 'framework:exit-when-no-frames #f)
|
||||||
(send f show #t)))
|
(send f show #t)
|
||||||
(wait-for-frame "test pasteboard")
|
(send f get-label)))])
|
||||||
(queue-sexp-to-mred
|
(wait-for-frame frame-label)
|
||||||
`(send (get-top-level-focus-window) close)))))
|
(queue-sexp-to-mred
|
||||||
|
`(send (get-top-level-focus-window) close))))))
|
||||||
|
|
||||||
(test-creation 'frame:editor%
|
(test-creation 'frame:editor%
|
||||||
'(editor:basic-mixin pasteboard%)
|
'(editor:basic-mixin pasteboard%)
|
||||||
|
@ -43,3 +47,4 @@
|
||||||
(test-creation 'frame:pasteboard%
|
(test-creation 'frame:pasteboard%
|
||||||
'pasteboard:info%
|
'pasteboard:info%
|
||||||
'pasteboard:info-creation)
|
'pasteboard:info-creation)
|
||||||
|
)
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
(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)
|
(local [(define pref-file (build-path (find-system-path 'pref-dir)
|
||||||
(case (system-type)
|
(case (system-type)
|
||||||
[(macos) "MrEd Preferences"]
|
[(macos) "MrEd Preferences"]
|
||||||
|
@ -34,7 +40,14 @@
|
||||||
(preferences:get ',pref-sym)))
|
(preferences:get ',pref-sym)))
|
||||||
|
|
||||||
(with-handlers ([eof-result? (lambda (x) (void))])
|
(with-handlers ([eof-result? (lambda (x) (void))])
|
||||||
(send-sexp-to-mred '(begin (preferences:set 'framework:verify-exit #f) (exit:exit))))
|
(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
|
(test 'preference-get-after-restart
|
||||||
(check-eq? 'new-pref)
|
(check-eq? 'new-pref)
|
||||||
|
@ -45,7 +58,8 @@
|
||||||
(test 'dialog-appears
|
(test 'dialog-appears
|
||||||
(lambda (x) (eq? 'passed x))
|
(lambda (x) (eq? 'passed x))
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(send-sexp-to-mred '(preferences:show-dialog))
|
(send-sexp-to-mred '(begin (send (make-object frame:basic% "frame") show #t)
|
||||||
|
(preferences:show-dialog)))
|
||||||
(wait-for-frame "Preferences")
|
(wait-for-frame "Preferences")
|
||||||
(send-sexp-to-mred '(begin (preferences:hide-dialog)
|
(send-sexp-to-mred '(begin (preferences:hide-dialog)
|
||||||
(let ([f (get-top-level-focus-window)])
|
(let ([f (get-top-level-focus-window)])
|
||||||
|
@ -54,3 +68,5 @@
|
||||||
'failed
|
'failed
|
||||||
'passed)
|
'passed)
|
||||||
'passed))))))
|
'passed))))))
|
||||||
|
)
|
||||||
|
|
||||||
|
|
|
@ -63,39 +63,37 @@
|
||||||
(define listener
|
(define listener
|
||||||
(let loop ()
|
(let loop ()
|
||||||
(let ([port (load port-filename)])
|
(let ([port (load port-filename)])
|
||||||
(with-handlers ([(lambda (x) #t)
|
(with-handlers ([not-break-exn?
|
||||||
(lambda (x)
|
(lambda (x)
|
||||||
(let ([next (+ port 1)])
|
(let ([next (+ port 1)])
|
||||||
(call-with-output-file port-filename
|
(call-with-output-file port-filename
|
||||||
(lambda (p)
|
(lambda (p)
|
||||||
(write next p))
|
(write next p))
|
||||||
'truncate)
|
'truncate)
|
||||||
(debug-printf tcp " tcp-listen failed for port ~a, attempting ~a~n"
|
(debug-printf mz-tcp " tcp-listen failed for port ~a, attempting ~a~n"
|
||||||
port
|
port
|
||||||
next)
|
next)
|
||||||
(loop)))])
|
(loop)))])
|
||||||
(debug-printf tcp "listening to ~a~n" port)
|
(debug-printf mz-tcp "listening to ~a~n" port)
|
||||||
(tcp-listen port)))))
|
(tcp-listen port)))))
|
||||||
|
|
||||||
(define in-port #f)
|
(define in-port #f)
|
||||||
(define out-port #f)
|
(define out-port #f)
|
||||||
|
|
||||||
(define restart-mred
|
(define (restart-mred)
|
||||||
(lambda ()
|
(shutdown-mred)
|
||||||
(shutdown-mred)
|
((case (system-type)
|
||||||
((case (system-type)
|
[(macos) system*]
|
||||||
[(macos) system*]
|
[else (lambda (x) (thread (lambda () (system* x))))])
|
||||||
[else (lambda (x) (thread (lambda () (system* x))))])
|
(mred-program-launcher-path "Framework Test Engine"))
|
||||||
(mred-program-launcher-path "Framework Test Engine"))
|
(debug-printf mz-tcp "accepting listener~n")
|
||||||
(debug-printf tcp "accepting listener~n")
|
(let-values ([(in out) (tcp-accept listener)])
|
||||||
(let-values ([(in out) (tcp-accept listener)])
|
(set! in-port in)
|
||||||
(set! in-port in)
|
(set! out-port out))
|
||||||
(set! out-port out))
|
(when load-framework-automatically?
|
||||||
(when load-framework-automatically?
|
(queue-sexp-to-mred
|
||||||
(queue-sexp-to-mred
|
'(begin (eval '(require (lib "framework.ss" "framework")))
|
||||||
`(begin
|
(eval '(require (lib "gui.ss" "tests" "utils")))))))
|
||||||
(require (lib "framework.ss" "framework")
|
|
||||||
(lib "gui.ss" "tests" "utils")))))))
|
|
||||||
|
|
||||||
(define load-framework-automatically
|
(define load-framework-automatically
|
||||||
(case-lambda
|
(case-lambda
|
||||||
|
@ -109,16 +107,16 @@
|
||||||
(define shutdown-listener
|
(define shutdown-listener
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(shutdown-mred)
|
(shutdown-mred)
|
||||||
(debug-printf tcp "closing listener~n")
|
(debug-printf mz-tcp "closing listener~n")
|
||||||
(tcp-close listener)))
|
(tcp-close listener)))
|
||||||
|
|
||||||
(define shutdown-mred
|
(define shutdown-mred
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(when (and in-port
|
(when (and in-port
|
||||||
out-port)
|
out-port)
|
||||||
(with-handlers ([(lambda (x) #t) (lambda (x) (void))])
|
(with-handlers ([not-break-exn? (lambda (x) (void))])
|
||||||
(close-output-port out-port))
|
(close-output-port out-port))
|
||||||
(with-handlers ([(lambda (x) #t) (lambda (x) (void))])
|
(with-handlers ([not-break-exn? (lambda (x) (void))])
|
||||||
(close-input-port in-port))
|
(close-input-port in-port))
|
||||||
(set! in-port #f)
|
(set! in-port #f)
|
||||||
(set! in-port #f))))
|
(set! in-port #f))))
|
||||||
|
@ -145,82 +143,83 @@
|
||||||
(or (regexp-match re:tcp-read-error (exn-message exn))
|
(or (regexp-match re:tcp-read-error (exn-message exn))
|
||||||
(regexp-match re:tcp-write-error (exn-message exn))))
|
(regexp-match re:tcp-write-error (exn-message exn))))
|
||||||
|
|
||||||
(define send-sexp-to-mred
|
(define (send-sexp-to-mred sexp)
|
||||||
(let ([failed-last-time? #f])
|
(let/ec k
|
||||||
(lambda (sexp)
|
(let ([show-text
|
||||||
(let/ec k
|
(lambda (sexp)
|
||||||
(let ([show-text
|
|
||||||
(lambda (sexp)
|
|
||||||
|
|
||||||
(debug-when messages
|
|
||||||
(parameterize ([pretty-print-print-line
|
|
||||||
(let ([prompt " "]
|
|
||||||
[old-liner (pretty-print-print-line)])
|
|
||||||
(lambda (ln port ol cols)
|
|
||||||
(let ([ov (old-liner ln port ol cols)])
|
|
||||||
(if ln
|
|
||||||
(begin (display prompt port)
|
|
||||||
(+ (string-length prompt) ov))
|
|
||||||
ov))))])
|
|
||||||
(pretty-print sexp)
|
|
||||||
(newline))))])
|
|
||||||
(unless (and in-port
|
|
||||||
out-port
|
|
||||||
(with-handlers ([tcp-error?
|
|
||||||
(lambda (x) #f)])
|
|
||||||
(or (not (char-ready? in-port))
|
|
||||||
(not (eof-object? (peek-char in-port))))))
|
|
||||||
(restart-mred))
|
|
||||||
(debug-printf messages " ~a // ~a: sending to mred:~n" section-name test-name)
|
|
||||||
(show-text sexp)
|
|
||||||
(with-handlers ([(lambda (x) #t)
|
|
||||||
(lambda (x)
|
|
||||||
(cond
|
|
||||||
;; this means that mred was closed
|
|
||||||
;; so we can restart it and try again.
|
|
||||||
[(tcp-error? x)
|
|
||||||
(restart-mred)
|
|
||||||
(write sexp out-port)
|
|
||||||
(newline out-port)]
|
|
||||||
[else (raise x)]))])
|
|
||||||
(write sexp out-port)
|
|
||||||
(newline out-port))
|
|
||||||
(let ([answer
|
|
||||||
(with-handlers ([(lambda (x) #t)
|
|
||||||
(lambda (x)
|
|
||||||
(if (tcp-error? x);; assume tcp-error means app closed
|
|
||||||
eof
|
|
||||||
(list 'cant-read
|
|
||||||
(string-append
|
|
||||||
(exn-message x)
|
|
||||||
"; rest of string: "
|
|
||||||
(format
|
|
||||||
"~s"
|
|
||||||
(apply
|
|
||||||
string
|
|
||||||
(let loop ()
|
|
||||||
(if (char-ready? in-port)
|
|
||||||
(let ([char (read-char in-port)])
|
|
||||||
(if (eof-object? char)
|
|
||||||
null
|
|
||||||
(cons char (loop))))
|
|
||||||
null))))))))])
|
|
||||||
(read in-port))])
|
|
||||||
(unless (or (eof-object? answer)
|
|
||||||
(and (list? answer)
|
|
||||||
(= 2 (length answer))))
|
|
||||||
(error 'send-sexp-to-mred "unpected result from mred: ~s~n" answer))
|
|
||||||
(if (eof-object? answer)
|
|
||||||
(raise (make-eof-result))
|
|
||||||
(case (car answer)
|
|
||||||
[(error)
|
|
||||||
(error 'send-sexp-to-mred "mred raised \"~a\"" (second answer))]
|
|
||||||
[(cant-read) (error 'mred/cant-parse (second answer))]
|
|
||||||
[(normal)
|
|
||||||
(debug-printf messages " ~a // ~a: received from mred:~n" section-name test-name)
|
|
||||||
(show-text (second answer))
|
|
||||||
(eval (second answer))]))))))))
|
|
||||||
|
|
||||||
|
(debug-when messages
|
||||||
|
(parameterize ([pretty-print-print-line
|
||||||
|
(let ([prompt " "]
|
||||||
|
[old-liner (pretty-print-print-line)])
|
||||||
|
(lambda (ln port ol cols)
|
||||||
|
(let ([ov (old-liner ln port ol cols)])
|
||||||
|
(if ln
|
||||||
|
(begin (display prompt port)
|
||||||
|
(+ (string-length prompt) ov))
|
||||||
|
ov))))])
|
||||||
|
(pretty-print sexp)
|
||||||
|
(newline))))])
|
||||||
|
(unless (and in-port
|
||||||
|
out-port
|
||||||
|
(with-handlers ([tcp-error?
|
||||||
|
(lambda (x) #f)])
|
||||||
|
(or (not (char-ready? in-port))
|
||||||
|
(not (eof-object? (peek-char in-port))))))
|
||||||
|
(restart-mred))
|
||||||
|
(debug-printf messages " ~a // ~a: sending to mred:~n" section-name test-name)
|
||||||
|
(show-text sexp)
|
||||||
|
(with-handlers ([not-break-exn?
|
||||||
|
(lambda (x)
|
||||||
|
(cond
|
||||||
|
;; this means that mred was closed
|
||||||
|
;; so we can restart it and try again.
|
||||||
|
[(tcp-error? x)
|
||||||
|
(restart-mred)
|
||||||
|
(write sexp out-port)
|
||||||
|
(newline out-port)]
|
||||||
|
[else (raise x)]))])
|
||||||
|
(write sexp out-port)
|
||||||
|
(newline out-port))
|
||||||
|
(let ([answer
|
||||||
|
(with-handlers ([not-break-exn?
|
||||||
|
(lambda (x)
|
||||||
|
(if (tcp-error? x);; assume tcp-error means app closed
|
||||||
|
eof
|
||||||
|
(list 'cant-read
|
||||||
|
(string-append
|
||||||
|
(exn-message x)
|
||||||
|
"; rest of string: "
|
||||||
|
(format
|
||||||
|
"~s"
|
||||||
|
(apply
|
||||||
|
string
|
||||||
|
(let loop ()
|
||||||
|
(if (char-ready? in-port)
|
||||||
|
(let ([char (read-char in-port)])
|
||||||
|
(if (eof-object? char)
|
||||||
|
null
|
||||||
|
(cons char (loop))))
|
||||||
|
null))))))))])
|
||||||
|
(read in-port))])
|
||||||
|
(debug-printf messages " ~a // ~a: received from mred:~n" section-name test-name)
|
||||||
|
(show-text answer)
|
||||||
|
(unless (or (eof-object? answer)
|
||||||
|
(and (list? answer)
|
||||||
|
(= 2 (length answer))
|
||||||
|
(memq (car answer)
|
||||||
|
'(error last-error cant-read normal))))
|
||||||
|
(error 'send-sexp-to-mred "unpected result from mred: ~s~n" answer))
|
||||||
|
(if (eof-object? answer)
|
||||||
|
(raise (make-eof-result))
|
||||||
|
(case (car answer)
|
||||||
|
[(error)
|
||||||
|
(error 'send-sexp-to-mred "mred raised \"~a\"" (second answer))]
|
||||||
|
[(last-error)
|
||||||
|
(error 'send-sexp-to-mred "mred (last time) raised \"~a\"" (second answer))]
|
||||||
|
[(cant-read) (error 'mred/cant-parse (second answer))]
|
||||||
|
[(normal)
|
||||||
|
(eval (second answer))]))))))
|
||||||
|
|
||||||
(define test
|
(define test
|
||||||
(case-lambda
|
(case-lambda
|
||||||
|
@ -230,7 +229,7 @@
|
||||||
(when (or (not only-these-tests)
|
(when (or (not only-these-tests)
|
||||||
(memq test-name only-these-tests))
|
(memq test-name only-these-tests))
|
||||||
(let* ([result
|
(let* ([result
|
||||||
(with-handlers ([(lambda (x) #t)
|
(with-handlers ([not-break-exn?
|
||||||
(lambda (x)
|
(lambda (x)
|
||||||
(if (exn? x)
|
(if (exn? x)
|
||||||
(exn-message x)
|
(exn-message x)
|
||||||
|
@ -239,7 +238,14 @@
|
||||||
(sexp/proc)
|
(sexp/proc)
|
||||||
(begin0 (send-sexp-to-mred sexp/proc)
|
(begin0 (send-sexp-to-mred sexp/proc)
|
||||||
(send-sexp-to-mred ''check-for-errors))))]
|
(send-sexp-to-mred ''check-for-errors))))]
|
||||||
[failed (not (passed? result))])
|
[failed (with-handlers ([not-break-exn?
|
||||||
|
(lambda (x)
|
||||||
|
(string-append
|
||||||
|
"passed? test raised exn: "
|
||||||
|
(if (exn? x)
|
||||||
|
(exn-message x)
|
||||||
|
(format "~s" x))))])
|
||||||
|
(not (passed? result)))])
|
||||||
(when failed
|
(when failed
|
||||||
(debug-printf schedule "FAILED ~a:~n ~s~n" test-name result)
|
(debug-printf schedule "FAILED ~a:~n ~s~n" test-name result)
|
||||||
(set! failed-tests (cons (cons section-name test-name) failed-tests))
|
(set! failed-tests (cons (cons section-name test-name) failed-tests))
|
||||||
|
|
|
@ -1,23 +1,30 @@
|
||||||
|
(module text mzscheme
|
||||||
|
(require "test-suite-utils.ss")
|
||||||
|
|
||||||
(define (test-creation frame% class name)
|
(define (test-creation frame% class name)
|
||||||
(test
|
(test
|
||||||
name
|
name
|
||||||
(lambda (x) #t)
|
(lambda (x) (eq? x 'passed))
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(send-sexp-to-mred
|
(let ([label
|
||||||
`(let* ([% (class-asi ,frame%
|
(send-sexp-to-mred
|
||||||
(override
|
`(let ([f (instantiate (class ,frame%
|
||||||
[get-editor% (lambda () ,class)]))]
|
(override get-editor%)
|
||||||
[f (make-object % "test text")])
|
[define (get-editor%) ,class]
|
||||||
(preferences:set 'framework:exit-when-no-frames #f)
|
(super-instantiate ()))
|
||||||
(send f show #t)))
|
())])
|
||||||
(wait-for-frame "test text")
|
(preferences:set 'framework:exit-when-no-frames #f)
|
||||||
(send-sexp-to-mred `(test:keystroke #\a))
|
(send f show #t)
|
||||||
(wait-for `(string=? "a" (send (send (get-top-level-focus-window) get-editor) get-text)))
|
(send f get-label)))])
|
||||||
(send-sexp-to-mred
|
(wait-for-frame label)
|
||||||
`(begin (send (send (get-top-level-focus-window) get-editor) lock #t)
|
(send-sexp-to-mred `(test:keystroke #\a))
|
||||||
(send (send (get-top-level-focus-window) get-editor) lock #f)))
|
(wait-for `(string=? "a" (send (send (get-top-level-focus-window) get-editor) get-text)))
|
||||||
(queue-sexp-to-mred
|
(send-sexp-to-mred
|
||||||
`(send (get-top-level-focus-window) close)))))
|
`(begin (send (send (get-top-level-focus-window) get-editor) lock #t)
|
||||||
|
(send (send (get-top-level-focus-window) get-editor) lock #f)))
|
||||||
|
(queue-sexp-to-mred
|
||||||
|
`(send (get-top-level-focus-window) close))
|
||||||
|
'passed))))
|
||||||
|
|
||||||
|
|
||||||
(test-creation 'frame:text%
|
(test-creation 'frame:text%
|
||||||
|
@ -27,17 +34,6 @@
|
||||||
'text:basic%
|
'text:basic%
|
||||||
'text:basic-creation)
|
'text:basic-creation)
|
||||||
|
|
||||||
(define (return-args class)
|
|
||||||
`(class ,class ()
|
|
||||||
(sequence
|
|
||||||
(super-init void))))
|
|
||||||
(test-creation 'frame:text%
|
|
||||||
(return-args '(text:return-mixin text:basic%))
|
|
||||||
'text:return-mixin-creation)
|
|
||||||
(test-creation 'frame:text%
|
|
||||||
(return-args 'text:return%)
|
|
||||||
'text:return-creation)
|
|
||||||
|
|
||||||
(test-creation 'frame:text%
|
(test-creation 'frame:text%
|
||||||
'(editor:file-mixin text:keymap%)
|
'(editor:file-mixin text:keymap%)
|
||||||
'editor:file-mixin-creation)
|
'editor:file-mixin-creation)
|
||||||
|
@ -68,3 +64,5 @@
|
||||||
(test-creation '(frame:searchable-mixin frame:text%)
|
(test-creation '(frame:searchable-mixin frame:text%)
|
||||||
'text:info%
|
'text:info%
|
||||||
'text:info-creation)
|
'text:info-creation)
|
||||||
|
|
||||||
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user