factor/extra/io/unix/unix-tests.factor

147 lines
2.6 KiB
Factor
Executable File

USING: io.files io.sockets io kernel threads namespaces
tools.test continuations strings byte-arrays sequences
prettyprint system ;
IN: temporary
! Unix domain stream sockets
[
[
"unix-domain-socket-test" resource-path delete-file
] ignore-errors
"unix-domain-socket-test" resource-path <local>
<server> [
stdio get accept [
"Hello world" print flush
readln "XYZ" = "FOO" "BAR" ? print flush
] with-stream
] with-stream
"unix-domain-socket-test" resource-path delete-file
] in-thread
yield
[ { "Hello world" "FOO" } ] [
[
"unix-domain-socket-test" resource-path <local> <client>
[
readln ,
"XYZ" print flush
readln ,
] with-stream
] { } make
] unit-test
! Unix domain datagram sockets
[
"unix-domain-datagram-test" resource-path delete-file
] ignore-errors
: server-addr "unix-domain-datagram-test" resource-path <local> ;
: client-addr "unix-domain-datagram-test-2" resource-path <local> ;
[
[
server-addr <datagram> "d" set
"Receive 1" print
"d" get receive >r reverse r>
"Send 1" print
dup .
"d" get send
"Receive 2" print
"d" get receive >r " world" append r>
"Send 1" print
dup .
"d" get send
"d" get dispose
"Done" print
"unix-domain-datagram-test" resource-path delete-file
] with-scope
] in-thread
yield
[
"unix-domain-datagram-test-2" resource-path delete-file
] ignore-errors
client-addr <datagram>
"d" set
[ ] [
"hello" >byte-array
server-addr
"d" get send
] unit-test
[ "olleh" t ] [
"d" get receive
server-addr =
>r >string r>
] unit-test
[ ] [
"hello" >byte-array
server-addr
"d" get send
] unit-test
[ "hello world" t ] [
"d" get receive
server-addr =
>r >string r>
] unit-test
[ ] [ "d" get dispose ] unit-test
! Test error behavior
[
"unix-domain-datagram-test-3" resource-path delete-file
] ignore-errors
"unix-domain-datagram-test-2" resource-path delete-file
[ ] [ client-addr <datagram> "d" set ] unit-test
[
B{ 1 2 3 } "unix-domain-datagram-test-3" <local> "d" get send
] must-fail
[ ] [ "d" get dispose ] unit-test
! See what happens on send/receive after close
[ "d" get receive ] must-fail
[ B{ 1 2 } server-addr "d" get send ] must-fail
! Invalid parameter tests
[
image [ stdio get accept ] with-file-reader
] must-fail
[
image [ stdio get receive ] with-file-reader
] must-fail
[
image [
B{ 1 2 } server-addr
stdio get send
] with-file-reader
] must-fail