factor/basis/io/unix/unix-tests.factor

141 lines
2.7 KiB
Factor
Raw Normal View History

2008-02-18 08:30:16 -05:00
USING: io.files io.sockets io kernel threads
namespaces tools.test continuations strings byte-arrays
2008-05-05 03:32:35 -04:00
sequences prettyprint system io.encodings.binary io.encodings.ascii
io.streams.duplex destructors make ;
2008-03-01 17:00:45 -05:00
IN: io.unix.tests
2007-09-20 18:09:08 -04:00
! Unix domain stream sockets
2008-02-25 20:37:43 -05:00
: socket-server "unix-domain-socket-test" temp-file ;
2007-09-20 18:09:08 -04:00
[
2008-02-25 20:37:43 -05:00
[ socket-server delete-file ] ignore-errors
2007-09-20 18:09:08 -04:00
2008-02-25 20:37:43 -05:00
socket-server <local>
ascii <server> [
2008-04-11 17:08:40 -04:00
accept drop [
2007-09-20 18:09:08 -04:00
"Hello world" print flush
readln "XYZ" = "FOO" "BAR" ? print flush
] with-stream
] with-disposal
2007-09-20 18:09:08 -04:00
2008-02-25 20:37:43 -05:00
socket-server delete-file
2008-02-18 06:07:40 -05:00
] "Test" spawn drop
2007-09-20 18:09:08 -04:00
yield
[ { "Hello world" "FOO" } ] [
[
socket-server <local> ascii [
2007-09-20 18:09:08 -04:00
readln ,
"XYZ" print flush
readln ,
] with-client
2007-09-20 18:09:08 -04:00
] { } make
] unit-test
2008-02-25 20:37:43 -05:00
: datagram-server "unix-domain-datagram-test" temp-file ;
: datagram-client "unix-domain-datagram-test-2" temp-file ;
2007-09-20 18:09:08 -04:00
2008-02-25 20:37:43 -05:00
! Unix domain datagram sockets
[ datagram-server delete-file ] ignore-errors
[ datagram-client delete-file ] ignore-errors
2007-09-20 18:09:08 -04:00
[
[
2008-02-25 20:37:43 -05:00
datagram-server <local> <datagram> "d" set
2007-09-20 18:09:08 -04:00
"Receive 1" print
"d" get receive >r reverse r>
"Send 1" print
dup .
"d" get send
"Receive 2" print
2008-02-01 17:02:02 -05:00
"d" get receive >r " world" append r>
2007-09-20 18:09:08 -04:00
"Send 1" print
dup .
"d" get send
"d" get dispose
2007-09-20 18:09:08 -04:00
"Done" print
2008-02-25 20:37:43 -05:00
datagram-server delete-file
2007-09-20 18:09:08 -04:00
] with-scope
2008-02-18 06:07:40 -05:00
] "Test" spawn drop
2007-09-20 18:09:08 -04:00
yield
2008-02-25 20:37:43 -05:00
[ datagram-client delete-file ] ignore-errors
2007-09-20 18:09:08 -04:00
2008-02-25 20:37:43 -05:00
datagram-client <local> <datagram>
2007-09-20 18:09:08 -04:00
"d" set
[ ] [
"hello" >byte-array
2008-02-25 20:37:43 -05:00
datagram-server <local>
2007-09-20 18:09:08 -04:00
"d" get send
] unit-test
[ "olleh" t ] [
"d" get receive
2008-02-25 20:37:43 -05:00
datagram-server <local> =
2007-09-20 18:09:08 -04:00
>r >string r>
] unit-test
[ ] [
"hello" >byte-array
2008-02-25 20:37:43 -05:00
datagram-server <local>
2007-09-20 18:09:08 -04:00
"d" get send
] unit-test
2008-02-01 17:02:02 -05:00
[ "hello world" t ] [
2007-09-20 18:09:08 -04:00
"d" get receive
2008-02-25 20:37:43 -05:00
datagram-server <local> =
2007-09-20 18:09:08 -04:00
>r >string r>
] unit-test
[ ] [ "d" get dispose ] unit-test
2007-09-20 18:09:08 -04:00
! Test error behavior
2008-02-25 20:37:43 -05:00
: another-datagram "unix-domain-datagram-test-3" temp-file ;
2007-09-20 18:09:08 -04:00
2008-02-25 20:37:43 -05:00
[ another-datagram delete-file ] ignore-errors
2007-09-20 18:09:08 -04:00
2008-02-25 20:37:43 -05:00
datagram-client delete-file
2007-09-20 18:09:08 -04:00
2008-02-25 20:37:43 -05:00
[ ] [ datagram-client <local> <datagram> "d" set ] unit-test
2007-09-20 18:09:08 -04:00
2008-02-25 20:37:43 -05:00
[ B{ 1 2 3 } another-datagram <local> "d" get send ] must-fail
2007-09-20 18:09:08 -04:00
[ ] [ "d" get dispose ] unit-test
2007-09-20 18:09:08 -04:00
! See what happens on send/receive after close
[ "d" get receive ] must-fail
2007-09-20 18:09:08 -04:00
2008-02-25 20:37:43 -05:00
[ B{ 1 2 } datagram-server <local> "d" get send ] must-fail
2007-09-20 18:09:08 -04:00
! Invalid parameter tests
[
image binary [ input-stream get accept ] with-file-reader
] must-fail
2007-09-20 18:09:08 -04:00
[
image binary [ input-stream get receive ] with-file-reader
] must-fail
2007-09-20 18:09:08 -04:00
[
image binary [
2008-02-26 02:24:40 -05:00
B{ 1 2 } datagram-server <local>
input-stream get send
] with-file-reader
] must-fail