From d2c7c584af75f86bcf203a601c60411dcba89004 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Fri, 5 Apr 2019 18:35:57 +0200 Subject: Add termios tests. --- tests/termios.scm | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100755 tests/termios.scm (limited to 'tests/termios.scm') diff --git a/tests/termios.scm b/tests/termios.scm new file mode 100755 index 00000000..707648d4 --- /dev/null +++ b/tests/termios.scm @@ -0,0 +1,39 @@ +;;; Commentary: + +;; Tests that my termios function works, at least somewhat. +;; Note that this actually modifies the terminal it's run on, and might fail if +;; the terminal doesn't support the wanted modes. See termios(3). +;; It might also leave the terminal in a broken state if exited prematurely. + +;;; Code: + +(use-modules (terminal termios) + ((util) :select (mod!)) + ((srfi srfi-60) + :renamer (lambda (symb) + (case symb + ((bitwise-ior) '||) + ((bitwise-not) '~) + ((bitwise-and) '&) + (else symb))))) + +(define-syntax-rule (&= lvalue val) + (mod! lvalue (lambda (v) (& v val)))) + +(test-begin "termios") + +(define t (make-termios)) + +(test-equal 0 (tcgetattr! t)) +(define ifl (lflag t)) + +(define copy (copy-termios t)) + +#!curly-infix { (lflag t) &= (~ (|| ECHO ICANON)) } + +(test-equal 0 (tcsetattr! t)) +(test-equal (& ifl (~ (|| ECHO ICANON))) + (lflag t)) +(test-equal 0 (tcsetattr! copy)) + +(test-end "termios") -- cgit v1.2.3