diff --git a/scsh/test/terminal-device-control-test.scm b/scsh/test/terminal-device-control-test.scm new file mode 100644 index 0000000..5d808db --- /dev/null +++ b/scsh/test/terminal-device-control-test.scm @@ -0,0 +1,268 @@ +;;; Test for the function in section 3.12 of the scsh-manual "Terminal device control" +;;; Author: Christoph Hetz + +;; for testing: (certainly the path will be an other on other systems...) + +;; ,open define-record-types handle +;; ,config ,load C:/cygwin/home/mephisto/cvs-scsh/scsh/scsh/test/test-packages.scm +;; ,load C:/cygwin/home/mephisto/cvs-scsh/scsh/scsh/test/test-base.scm +;; load this file +;; (test-all) + +(add-test! 'tty-info-record-test 'terminal-devive-control + (lambda () + (let ((ti (tty-info))) + (and (string? (tty-info:control-chars ti)) + (or (integer? (tty-info:input-flags ti)) + (not (tty-info:input-flags ti))) + (or (integer? (tty-info:output-flags ti)) + (not (tty-info:output-flags ti))) + (or (integer? (tty-info:control-flags ti)) + (not (tty-info:control-flags ti))) + (or (integer? (tty-info:local-flags ti)) + (not (tty-info:local-flags ti))) + (or (integer? (tty-info:input-speed ti)) + (not (tty-info:input-speed ti))) + (or (integer? (tty-info:output-speed ti)) + (not (tty-info:output-speed ti))) + (or (integer? (tty-info:min ti)) + (not (tty-info:min ti))) + (or (integer? (tty-info:time ti)) + (not(tty-info:time ti))))))) + +(add-test! 'make-tty-info-test 'terminal-device-control + (lambda () + (let* ((in-fl 770) + (out-fl 3) + (c-fl 19200) + (loc-fl 1482) + (in-spd 1200) + (out-spd 1200) + (min 1) + (time 0) + (ti (make-tty-info in-fl + out-fl + c-fl + loc-fl + in-spd + out-spd + min + time))) + (and (= in-fl + (tty-info:input-flags ti)) + (= out-fl + (tty-info:output-flags ti)) + (= c-fl + (tty-info:control-flags ti)) + (= in-spd + (tty-info:input-speed ti)) + (= out-spd + (tty-info:output-speed ti)) + (= min + (tty-info:min ti)) + (= time + (tty-info:time ti)))))) + +(add-test! 'copy-tty-test 'terminal-device-control + (lambda () + (let* ((ti (tty-info)) + (ti-c (copy-tty-info ti))) + (and (tty-info? ti) + (tty-info? ti-c) + (equal? (tty-info:control-chars ti) + (tty-info:control-chars ti-c)) + (= (tty-info:input-flags ti) + (tty-info:input-flags ti-c)) + (= (tty-info:output-flags ti) + (tty-info:output-flags ti-c)) + (= (tty-info:control-flags ti) + (tty-info:control-flags ti-c)) + (= (tty-info:local-flags ti) + (tty-info:local-flags ti-c)) + (equal? (tty-info:input-speed ti) + (tty-info:input-speed ti-c)) + (equal? (tty-info:output-speed ti) + (tty-info:output-speed ti-c)) + (= (tty-info:min ti) + (tty-info:min ti-c)) + (= (tty-info:time ti) + (tty-info:time ti-c)))))) + +(add-test! 'tty-info-record-posix-indicies-test 'terminal-device-control + (lambda () + (and ttychar/delete-char + ttychar/delete-line + ttychar/eof + ttychar/eol + ttychar/interrupt + ttychar/quit + ttychar/suspend + ttychar/start + ttychar/stop))) + +(add-test! 'tty-info-record-svr4&4.3+bsd-indicies-test 'terminal-device-control + (lambda () + (or (and ttychar/delayed-suspend + ttychar/delete-word + ttychar/discard + ttychar/eol2 + ttychar/literal-next + ttychar/reprint + ttychar/status) + (not (and ttychar/delayed-suspend + ttychar/delete-word + ttychar/discard + ttychar/eol2 + ttychar/literal-next + ttychar/reprint + ttychar/status))))) + +(add-test! 'tty-info-record-posix-input-flags 'terminal-device-control + (lambda () + (and ttyin/check-parity + ttyin/ignore-bad-parity-chars + ttyin/mark-parity-errors + ttyin/ignore-break + ttyin/interrupt-on-break + ttyin/7bits + ttyin/cr->nl + ttyin/ignore-cr + ttyin/nl->cr + ttyin/input-flow-ctl + ttyin/output-flow-ctl))) + +(add-test! 'tty-info-record-svr4&4.3+bsd-input-flags 'terminal-device-control + (lambda () + (or (and ttyin/xon-any + ttyin/beep-on-overflow + ttyin/lowercase)))) + +(add-test! 'tty-info-record-posix-output-flags 'terminal-device-control + (lambda () + ttyout/enable)) + +(add-test! 'tty-info-record-svr4&4.3+bsd-output-flags 'terminal-device-control + (lambda () + (or (and ttyout/nl->crnl + ttyout/discard-eot + ttyout/expand-tabs + ttyout/cr->nl + ttyout/nl-does-cr + ttyout/no-col0-cr + ttyout/delay-w/fill-char + ttyout/fill-w/del + ttyout/uppercase) + (not (and ttyout/nl->crnl + ttyout/discard-eot + ttyout/expand-tabs + ttyout/cr->nl + ttyout/nl-does-cr + ttyout/no-col0-cr + ttyout/delay-w/fill-char + ttyout/fill-w/del + ttyout/uppercase))))) + +(add-test! 'tty-info-record-delay-constants-for-output-flags 'terminal-device-control + (lambda () + (or (and ttyout/bs-delay + ttyout/bs-delay0 + ttyout/bs-delay1 + ttyout/cr-delay + ttyout/cr-delay0 + ttyout/cr-delay1 + ttyout/cr-delay2 + ttyout/cr-delay3 + ttyout/ff-delay + ttyout/ff-delay0 + ttyout/ff-delay1 + ttyout/tab-delay + ttyout/tab-delay0 + ttyout/tab-delay1 + ttyout/tab-delay2 + ttyout/tab-delayx + ttyout/nl-delay + ttyout/nl-delay0 + ttyout/nl-delay1 + ttyout/vtab-delay + ttyout/vtab-delay0 + ttyout/vtab-delay1 + ttyout/all-delay) + (not (and ttyout/bs-delay + ttyout/bs-delay0 + ttyout/bs-delay1 + ttyout/cr-delay + ttyout/cr-delay0 + ttyout/cr-delay1 + ttyout/cr-delay2 + ttyout/cr-delay3 + ttyout/ff-delay + ttyout/ff-delay0 + ttyout/ff-delay1 + ttyout/tab-delay + ttyout/tab-delay0 + ttyout/tab-delay1 + ttyout/tab-delay2 + ttyout/tab-delayx + ttyout/nl-delay + ttyout/nl-delay0 + ttyout/nl-delay1 + ttyout/vtab-delay + ttyout/vtab-delay0 + ttyout/vtab-delay1 + ttyout/all-delay))))) + +(add-test! 'tty-info-record-posix-control-flags 'terminal-device-control + (lambda () + (and ttyc/char-size + ttyc/char-size5 + ttyc/char-size6 + ttyc/char-size7 + ttyc/char-size8 + ttyc/enable-parity + ttyc/odd-parity + ttyc/enable-read + ttyc/hup-on-close + ttyc/no-modem-sync + ttyc/2-stop-bits))) + +(add-test! 'tty-info-record-4.3+bsd-control-flags 'terminal-device-control + (lambda () + (or (and ttyc/ignore-flags + ttyc/CTS-output-flow-ctl + ttyc/RTS-input-flow-ctl + ttyc/carrier-flow-ctl) + (not (and ttyc/ignore-flags + ttyc/CTS-output-flow-ctl + ttyc/RTS-input-flow-ctl + ttyc/carrier-flow-ctl))))) + +(add-test! 'tty-info-record-posix-local-flags 'terminal-device-control + (lambda () + (and ttyl/canonical + ttyl/echo + ttyl/echo-delete-line + ttyl/echo-nl + ttyl/visual-delete + ttyl/enable-signals + ttyl/extended + ttyl/no-flush-on-interrupt + ttyl/ttou-signal))) + +(add-test! 'tty-info-record-svr4&4.3+bsd-local-flags 'terminal-device-control + (lambda () + (or (and ttyl/echo-ctl + ttyl/flush-output + ttyl/hardcopy-delete + ttyl/reprint-unread-chars + ttyl/visual-delete-line + ttyl/alt-delete-word + ttyl/no-kernel-status + ttyl/case-map) + (not (and ttyl/echo-ctl + ttyl/flush-output + ttyl/hardcopy-delete + ttyl/reprint-unread-chars + ttyl/visual-delete-line + ttyl/alt-delete-word + ttyl/no-kernel-status + ttyl/case-map))))) \ No newline at end of file