RegressionTests__PTYTest.st
branchjv
changeset 1605 5ff1befbd463
parent 1500 d406a10b2965
child 1974 f2eaf05205d6
--- a/RegressionTests__PTYTest.st	Wed May 31 07:27:55 2017 +0100
+++ b/RegressionTests__PTYTest.st	Wed May 31 10:16:42 2017 +0100
@@ -5,13 +5,150 @@
 TestCase subclass:#PTYTest
 	instanceVariableNames:''
 	classVariableNames:''
-	poolDictionaries:''
+	poolDictionaries:'TTYConstants'
 	category:'tests-Regression-Streams'
 !
 
 
+!PTYTest methodsFor:'running'!
+
+setUp
+    self skipIf: OperatingSystem supportsTTYs not description: 'No TTY / PTY support'
+
+    "Created: / 01-06-2017 / 21:25:55 / jv"
+! !
+
 !PTYTest methodsFor:'tests'!
 
+testEOLMode01
+    |ptyPair master slave data |
+
+    ptyPair := NonPositionableExternalStream makePTYPair.
+    master := ptyPair at:1.
+    slave := ptyPair at:2.
+
+    master nextPutLine:'1234'.
+    master nextPutLine:'ABCD'.  
+
+    self assert:(data := slave  nextLine) = '1234'.      
+    self assert:(data := master nextLine) = '1234'.      
+
+    self assert:(data := slave  nextLine) = 'ABCD'.      
+    self assert:(data := master nextLine) = 'ABCD'.      
+
+    master close.
+    slave close.
+
+    "Created: / 31-05-2017 / 09:52:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (comment): / 31-05-2017 / 11:35:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+testEOLMode02
+    "
+    Turn off CR-LF on PTY (i.e., make sure lines are NL only)
+    "
+    |ptyPair master slave data attrs |
+
+    ptyPair := NonPositionableExternalStream makePTYPair.
+    master := ptyPair at:1.
+    slave := ptyPair at:2.
+
+    attrs := master getTTYAttributes.
+    attrs c_oflag: (attrs c_oflag bitClear: ONLCR).
+    master setTTYAttributes: attrs.
+
+
+    master nextPutLine:'1234'.
+    master nextPutLine:'ABCD'.  
+
+    self assert:(data := slave  next:4) = '1234'.      
+    self assert:(data := master next:4) = '1234'.      
+
+    self assert: (data := slave next) == Character linefeed.
+    self assert: (data := master next) == Character linefeed.
+
+    self assert: (data := slave next: 4) = 'ABCD'.
+    self assert: (data := master next: 4) = 'ABCD'.
+
+    master close.
+    slave close.
+
+    "Created: / 31-05-2017 / 09:53:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 31-05-2017 / 15:29:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 01-06-2017 / 21:23:35 / jv"
+!
+
+testEchoOff
+    |ptyPair master slave attrs data |
+
+    ptyPair := NonPositionableExternalStream makePTYPair.
+    master := ptyPair at:1.
+    slave := ptyPair at:2.
+
+    attrs := master getTTYAttributes.
+    attrs c_lflag: attrs c_lflag | ECHO.
+    master setTTYAttributes: attrs.
+
+    master nextPutLine:'1234567890'.
+    self assert:(data := slave  nextLine) = '1234567890'.      
+    self assert:(data := master nextAvailable:10+1"CR"+1"NL") notEmpty.
+
+    attrs := master getTTYAttributes.
+    attrs c_lflag: (attrs c_lflag bitClear: ECHO).
+    master setTTYAttributes: attrs.
+
+    master nextPutLine:'1234567890'.
+    self assert:(data := slave  nextLine) = '1234567890'.      
+    self assert:(data := master nextAvailable: 11) isEmpty.      
+    
+
+
+
+    master close.
+    slave close.
+
+    "Created: / 31-05-2017 / 07:41:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 31-05-2017 / 08:46:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 01-06-2017 / 21:23:55 / jv"
+!
+
+testGetSetAttributes
+    |ptyPair master slave attrs |
+
+    ptyPair := NonPositionableExternalStream makePTYPair.
+    master := ptyPair at:1.
+    slave := ptyPair at:2.
+
+    attrs := master getTTYAttributes.
+    master setTTYAttributes: attrs.
+
+    attrs := slave getTTYAttributes.
+    slave setTTYAttributes: attrs. 
+
+
+    master close.
+    slave close.
+
+    "Created: / 31-05-2017 / 07:39:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 01-06-2017 / 21:24:09 / jv"
+!
+
+testIsTTY
+    |ptyPair master slave|
+
+    ptyPair := NonPositionableExternalStream makePTYPair.
+    master := ptyPair at:1.
+    slave := ptyPair at:2.
+
+    self assert: master isTTY.
+    self assert: slave isTTY.
+
+    master close.
+    slave close.
+
+    "Created: / 31-05-2017 / 07:38:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 testPTY1
     |ptyPair master slave|
 
@@ -58,5 +195,10 @@
 
 version
     ^ '$Header$'
+!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
 ! !