73 lines
2.5 KiB
Scheme
73 lines
2.5 KiB
Scheme
|
(import (scheme base)
|
||
|
(srfi 106)
|
||
|
(picrin test))
|
||
|
|
||
|
; The number 9600 has no meaning. I just borrowed from Rust.
|
||
|
(define *test-port* 9600)
|
||
|
(define (next-test-port)
|
||
|
(set! *test-port* (+ *test-port* 1))
|
||
|
(number->string *test-port*))
|
||
|
|
||
|
(test #f (socket? '()))
|
||
|
(let* ((port (next-test-port))
|
||
|
(server (make-server-socket port))
|
||
|
(client (make-client-socket "127.0.0.1" port)))
|
||
|
(test #t (socket? server))
|
||
|
(test #t (socket? client)))
|
||
|
|
||
|
(let* ((port (next-test-port))
|
||
|
(server (make-server-socket port))
|
||
|
(client (make-client-socket "127.0.0.1" port)))
|
||
|
(test #t (socket? (socket-accept server))))
|
||
|
|
||
|
(let* ((port (next-test-port))
|
||
|
(server (make-server-socket port))
|
||
|
(client (make-client-socket "127.0.0.1" port))
|
||
|
(conn (socket-accept server)))
|
||
|
(test 5 (socket-send conn (string->utf8 "hello")))
|
||
|
(test "hello" (utf8->string (socket-recv client 5))))
|
||
|
|
||
|
(let* ((port (next-test-port))
|
||
|
(sock (make-server-socket port)))
|
||
|
(test #t (port? (socket-input-port sock)))
|
||
|
(test #t (port? (socket-output-port sock))))
|
||
|
|
||
|
(test *ai-canonname* (socket-merge-flags *ai-canonname*))
|
||
|
(test *ai-canonname* (socket-merge-flags *ai-canonname* *ai-canonname*))
|
||
|
(test *ai-canonname* (socket-purge-flags *ai-canonname*))
|
||
|
(test *ai-canonname* (socket-purge-flags (socket-merge-flags *ai-canonname* *ai-all*)
|
||
|
*ai-all*))
|
||
|
(test *ai-canonname* (socket-purge-flags (socket-merge-flags *ai-all* *ai-canonname*)
|
||
|
*ai-all*))
|
||
|
|
||
|
(test *af-inet* (address-family inet))
|
||
|
(test *af-inet6* (address-family inet6))
|
||
|
(test *af-unspec* (address-family unspec))
|
||
|
|
||
|
(test *sock-stream* (socket-domain stream))
|
||
|
(test *sock-dgram* (socket-domain datagram))
|
||
|
|
||
|
(test *ai-canonname* (address-info canoname))
|
||
|
(test *ai-numerichost* (address-info numerichost))
|
||
|
(test *ai-v4mapped* (address-info v4mapped))
|
||
|
(test *ai-all* (address-info all))
|
||
|
(test *ai-addrconfig* (address-info addrconfig))
|
||
|
(test (socket-merge-flags *ai-v4mapped* *ai-addrconfig*)
|
||
|
(address-info v4mapped addrconfig))
|
||
|
|
||
|
(test *ipproto-ip* (ip-protocol ip))
|
||
|
(test *ipproto-tcp* (ip-protocol tcp))
|
||
|
(test *ipproto-udp* (ip-protocol udp))
|
||
|
|
||
|
(test 0 (message-type none))
|
||
|
(test *msg-peek* (message-type peek))
|
||
|
(test *msg-oob* (message-type oob))
|
||
|
(test *msg-waitall* (message-type wait-all))
|
||
|
(test (socket-merge-flags *msg-oob* *msg-waitall*)
|
||
|
(message-type oob wait-all))
|
||
|
|
||
|
(test *shut-rd* (shutdown-method read))
|
||
|
(test *shut-wr* (shutdown-method write))
|
||
|
(test *shut-rdwr* (shutdown-method read write))
|
||
|
(test *shut-rdwr* (shutdown-method write read))
|