]> gitweb.factorcode.org Git - factor.git/blob - basis/io/sockets/sockets-tests.factor
Disposables are now registered in a global disposables set. To take advantage of...
[factor.git] / basis / io / sockets / sockets-tests.factor
1 IN: io.sockets.tests
2 USING: io.sockets sequences math tools.test namespaces accessors 
3 kernel destructors calendar io.timeouts io.encodings.utf8 io
4 concurrency.promises threads io.streams.string ;
5
6 [ B{ 1 2 3 4 } ]
7 [ "1.2.3.4" T{ inet4 } inet-pton ] unit-test
8
9 [ "1.2.3.4" ]
10 [ B{ 1 2 3 4 } T{ inet4 } inet-ntop ] unit-test
11
12 [ "255.255.255.255" ]
13 [ B{ 255 255 255 255 } T{ inet4 } inet-ntop ] unit-test
14
15 [ B{ 255 255 255 255 } ]
16 [ "255.255.255.255" T{ inet4 } inet-pton ] unit-test
17
18 [ B{ 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 } ]
19 [ "1:2:3:4:5:6:7:8" T{ inet6 } inet-pton ] unit-test
20
21 [ "1:2:3:4:5:6:7:8" ]
22 [ B{ 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 } T{ inet6 } inet-ntop ] unit-test
23
24 [ B{ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 } ]
25 [ "::" T{ inet6 } inet-pton ] unit-test
26
27 [ "0:0:0:0:0:0:0:0" ]
28 [ B{ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 } T{ inet6 } inet-ntop ] unit-test
29
30 [ B{ 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 } ]
31 [ "1::" T{ inet6 } inet-pton ] unit-test
32
33 [ B{ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 } ]
34 [ "::1" T{ inet6 } inet-pton ] unit-test
35
36 [ B{ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 } ]
37 [ "::100" T{ inet6 } inet-pton ] unit-test
38
39 [ B{ 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 } ]
40 [ "1::2" T{ inet6 } inet-pton ] unit-test
41
42 [ B{ 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 3 } ]
43 [ "1::2:3" T{ inet6 } inet-pton ] unit-test
44
45 [ B{ 0 1 0 2 0 0 0 0 0 0 0 0 0 3 0 4 } ]
46 [ "1:2::3:4" T{ inet6 } inet-pton ] unit-test
47
48 [ "1:2:0:0:0:0:3:4" ]
49 [ B{ 0 1 0 2 0 0 0 0 0 0 0 0 0 3 0 4 } T{ inet6 } inet-ntop ] unit-test
50
51 [ "2001:6f8:37a:5:0:0:0:1" ]
52 [ "2001:6f8:37a:5::1" T{ inet6 } [ inet-pton ] [ inet-ntop ] bi ] unit-test
53
54 [ t ] [ "localhost" 80 <inet> resolve-host length 1 >= ] unit-test
55
56 ! Smoke-test UDP
57 [ ] [ "127.0.0.1" 0 <inet4> <datagram> "datagram1" set ] unit-test
58 [ ] [ "datagram1" get addr>> "addr1" set ] unit-test
59 [ f ] [ "addr1" get port>> 0 = ] unit-test
60
61 [ ] [ "127.0.0.1" 0 <inet4> <datagram> "datagram2" set ] unit-test
62 [ ] [ "datagram2" get addr>> "addr2" set ] unit-test
63 [ f ] [ "addr2" get port>> 0 = ] unit-test
64
65 [ ] [ B{ 1 2 3 4 } "addr2" get "datagram1" get send ] unit-test
66 [ B{ 1 2 3 4 } ] [ "datagram2" get receive "from" set ] unit-test
67 [ ] [ B{ 4 3 2 1 } "from" get "datagram2" get send ] unit-test
68 [ B{ 4 3 2 1 } t ] [ "datagram1" get receive "addr2" get = ] unit-test
69
70 [ ] [ "datagram1" get dispose ] unit-test
71 [ ] [ "datagram2" get dispose ] unit-test
72
73 ! Test timeouts
74 [ ] [ "127.0.0.1" 0 <inet4> <datagram> "datagram3" set ] unit-test
75
76 [ ] [ 1 seconds "datagram3" get set-timeout ] unit-test
77 [ "datagram3" get receive ] must-fail
78
79 ! See what happens if other end is closed
80 [ ] [ <promise> "port" set ] unit-test
81
82 [ ] [ "datagram3" get dispose ] unit-test
83
84 [ ] [
85     [
86         "127.0.0.1" 0 <inet4> utf8 <server>
87         dup addr>> "port" get fulfill
88         [
89             accept drop
90             dup stream-readln drop
91             "hello" <string-reader> swap stream-copy
92         ] with-disposal
93     ] "Socket close test" spawn drop
94 ] unit-test
95
96 [ "hello" f ] [
97     "port" get ?promise utf8 [
98         1 seconds input-stream get set-timeout
99         1 seconds output-stream get set-timeout
100         "hi\n" write flush readln readln
101     ] with-client
102 ] unit-test