1 USING: io.streams.duplex io io.streams.string
2 kernel continuations tools.test destructors accessors ;
3 IN: io.streams.duplex.tests
5 ! Test duplex stream close behavior
6 TUPLE: closing-stream < disposable ;
8 : <closing-stream> closing-stream new ;
10 M: closing-stream dispose* drop ;
12 TUPLE: unclosable-stream ;
14 : <unclosable-stream> unclosable-stream new ;
16 M: unclosable-stream dispose
17 "Can't close me!" throw ;
20 <closing-stream> <closing-stream> <duplex-stream>
25 <unclosable-stream> <closing-stream> [
27 [ dup dispose ] [ 2drop ] recover
32 <closing-stream> [ <unclosable-stream>
34 [ dup dispose ] [ 2drop ] recover
39 "Hey\nThere" <string-reader> <string-writer> <duplex-stream>