racket/collects/tests/mysterx/mystests.ss
Eli Barzilay 7d50e61c7f * Newlines at EOFs
* Another big chunk of v4-require-isms
* Allow `#lang framework/keybinding-lang' for keybinding files
* Move hierlist sources into "mrlib/hierlist", leave stub behind

svn: r10689
2008-07-09 07:18:06 +00:00

127 lines
3.1 KiB
Scheme

;;; mystests.ss -- test suite for MysterX
(require mzlib/class)
(require mysterx)
(define errors? #f)
(define wb
(instantiate mx-browser% ()
(label "MysTest")
(width 230)
(height 250)))
(define doc (send wb current-document))
(define ctrl (send doc insert-object-from-coclass "TestControl Class" 95 95 'percent))
(define (inv f . args) (apply com-invoke ctrl f args))
(define (test-currency n)
(= n (com-currency->number (number->com-currency n))))
(define (test-scode n)
(= n (com-scode->number (number->com-scode n))))
(define (test-date date)
(equal? date (com-date->date (date->com-date date))))
(for-each
(lambda (n)
(unless (test-scode n)
(printf "Error in test-scode for value ~a~n" n)
(set! errors? #t)))
'(25 -22 -1 -233344433 177000000 859489222))
(define (test-numprop ndx retval)
(com-set-property! ctrl (list "Numprop" ndx) 55)
(unless (= (com-get-property ctrl (list "Numprop" ndx)) retval)
(printf "Error in setting Numprop")
(set! errors? #t)))
(test-numprop 26 42)
(test-numprop 10 99)
(print-struct #t)
(let ([date (seconds->date (current-seconds))])
(set-date-dst?! date #f)
(set-date-time-zone-offset! date 0)
(unless (test-date date)
(printf "Error in test-date~n")
(set! errors? #t)))
(for-each
(lambda (n)
(unless (test-currency n)
(printf "Error in test-currency for value ~a~n" n)
(set! errors? #t)))
'(0 1 3.14 25.00 -22.34 11.7832 91000000000 25034343434.9933))
(define com-tests
`(("AddTest" (39 ,(box 420)) ,(+ 39 420))
("AddTest" (420 ,(box 39)) ,(+ 420 39))
("FloatTest" (4.7 5.2) ,(- 5.2 4.7))
("FloatTest" (88.7 33.2) ,(- 33.2 88.7))
("FloatTest" (-88.7 33.2) ,(- 33.2 -88.7))
("UnsignedTest" (92 97) ,(- 97 92))
("UnsignedTest" (20 33) ,(- 33 20))
("UnsignedTest" (1 12) ,(- 12 1))
("StringTest" ("abc" "def") ,"abcdef")
("StringTest" ("Supercali" "fragilistic") ,"Supercalifragilistic")
("ShortTest" (42 17) ,(* 42 17))
("ShortTest" (77 -22) ,(* 77 -22))))
(for-each
(lambda (t)
(let ([got (apply inv (car t) (cadr t))]
[expected (caddr t)])
(unless (equal? got expected)
(set! errors? #t)
(printf "Error in com-tests. Expected: ~a~nGot : ~a~n"
expected got))))
com-tests)
(define caption "SomeCaption")
(com-set-property! ctrl "Caption" caption)
(unless (string=? caption (com-get-property ctrl "Caption"))
(set! errors? #t))
(if errors?
(printf "There were errors!~n")
(printf "No errors in conversions and COM tests~n"))
(define (make-mousefun s)
(let ([t (string-append s ": button = ~a shift = ~a x = ~a y = ~a~n")])
(lambda (button shift x y)
(printf t button shift x y))))
(define (mouse-pair s)
(list s (make-mousefun s)))
(unless errors?
(for-each
(lambda (sf)
(com-register-event-handler ctrl (car sf) (cadr sf)))
`(("Click"
,(lambda () (printf "Click~n")))
,(mouse-pair "MouseMove")
,(mouse-pair "MouseDown")
,(mouse-pair "MouseUp")))
(printf "Try clicking and moving the mouse over the object~n")
(printf "You should see Click, MouseMove, MouseDown, and MouseUp events~n"))