]> gitweb.factorcode.org Git - factor.git/blob - basis/io/streams/duplex/duplex-tests.factor
Fix permission bits
[factor.git] / basis / io / streams / duplex / duplex-tests.factor
1 USING: io.streams.duplex io io.streams.string
2 kernel continuations tools.test destructors accessors ;
3 IN: io.streams.duplex.tests
4
5 ! Test duplex stream close behavior
6 TUPLE: closing-stream < disposable ;
7
8 : <closing-stream> closing-stream new ;
9
10 M: closing-stream dispose* drop ;
11
12 TUPLE: unclosable-stream ;
13
14 : <unclosable-stream> unclosable-stream new ;
15
16 M: unclosable-stream dispose
17     "Can't close me!" throw ;
18
19 [ ] [
20     <closing-stream> <closing-stream> <duplex-stream>
21     dup dispose dispose
22 ] unit-test
23
24 [ t ] [
25     <unclosable-stream> <closing-stream> [
26         <duplex-stream>
27         [ dup dispose ] [ 2drop ] recover
28     ] keep disposed>>
29 ] unit-test
30
31 [ t ] [
32     <closing-stream> [ <unclosable-stream>
33         <duplex-stream>
34         [ dup dispose ] [ 2drop ] recover
35     ] keep disposed>>
36 ] unit-test
37
38 [ "Hey" ] [
39     "Hey\nThere" <string-reader> <string-writer> <duplex-stream>
40     stream-readln
41 ] unit-test