1 USING: io.files io.files.temp io.directories io.sockets io kernel threads
2 namespaces tools.test continuations strings byte-arrays
3 sequences prettyprint system io.encodings.binary io.encodings.ascii
4 io.streams.duplex destructors make io.launcher ;
5 IN: io.backend.unix.tests
7 ! Unix domain stream sockets
8 : socket-server ( -- path ) "unix-domain-socket-test" temp-file ;
11 [ socket-server delete-file ] ignore-errors
16 "Hello world" print flush
17 readln "XYZ" = "FOO" "BAR" ? print flush
21 socket-server delete-file
26 { { "Hello world" "FOO" } } [
28 socket-server <local> ascii [
36 : datagram-server ( -- path ) "unix-domain-datagram-test" temp-file ;
37 : datagram-client ( -- path ) "unix-domain-datagram-test-2" temp-file ;
39 ! Unix domain datagram sockets
40 [ datagram-server delete-file ] ignore-errors
41 [ datagram-client delete-file ] ignore-errors
44 datagram-server <local> <datagram> "d" [
48 "d" get receive [ reverse ] dip
57 "d" get receive [ " world" append ] dip
68 datagram-server delete-file
74 [ datagram-client delete-file ] ignore-errors
76 { } [ datagram-client <local> <datagram> "d" set ] unit-test
80 datagram-server <local>
86 datagram-server <local> =
92 datagram-server <local>
98 datagram-server <local> =
102 { } [ "d" get dispose ] unit-test
104 ! Test error behavior
105 : another-datagram ( -- path ) "unix-domain-datagram-test-3" temp-file ;
107 [ another-datagram delete-file ] ignore-errors
109 datagram-client delete-file
111 { } [ datagram-client <local> <datagram> "d" set ] unit-test
113 [ B{ 1 2 3 } another-datagram <local> "d" get send ] must-fail
115 { } [ "d" get dispose ] unit-test
117 ! See what happens on send/receive after close
119 [ "d" get receive ] must-fail
121 [ B{ 1 2 } datagram-server <local> "d" get send ] must-fail
123 ! Invalid parameter tests
126 image binary [ input-stream get accept ] with-file-reader
130 image binary [ input-stream get receive ] with-file-reader
135 B{ 1 2 } datagram-server <local>
136 input-stream get send
140 ! closing stdin caused some problems
146 "-e=USING: destructors namespaces io calendar threads ; input-stream get dispose 1 seconds sleep" ,
147 ] { } make try-process