2008-05-09 17:38:27 -04:00
|
|
|
USING: io.streams.duplex io io.streams.string
|
2008-05-15 00:23:12 -04:00
|
|
|
kernel continuations tools.test destructors accessors ;
|
2008-03-01 17:00:45 -05:00
|
|
|
IN: io.streams.duplex.tests
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
! Test duplex stream close behavior
|
2008-05-15 00:23:12 -04:00
|
|
|
TUPLE: closing-stream < disposable ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2009-08-24 21:19:55 -04:00
|
|
|
: <closing-stream> ( -- stream ) closing-stream new-disposable ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-05-15 00:23:12 -04:00
|
|
|
M: closing-stream dispose* drop ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
TUPLE: unclosable-stream ;
|
|
|
|
|
2009-03-23 01:34:02 -04:00
|
|
|
: <unclosable-stream> ( -- stream ) unclosable-stream new ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-01-31 01:52:06 -05:00
|
|
|
M: unclosable-stream dispose
|
2007-09-20 18:09:08 -04:00
|
|
|
"Can't close me!" throw ;
|
|
|
|
|
2015-07-02 16:37:42 -04:00
|
|
|
[ ] [
|
2007-09-20 18:09:08 -04:00
|
|
|
<closing-stream> <closing-stream> <duplex-stream>
|
2008-01-31 01:52:06 -05:00
|
|
|
dup dispose dispose
|
2007-09-20 18:09:08 -04:00
|
|
|
] unit-test
|
|
|
|
|
2015-07-02 16:37:42 -04:00
|
|
|
[ t ] [
|
2007-09-20 18:09:08 -04:00
|
|
|
<unclosable-stream> <closing-stream> [
|
|
|
|
<duplex-stream>
|
2008-02-06 14:47:19 -05:00
|
|
|
[ dup dispose ] [ 2drop ] recover
|
2008-05-15 00:23:12 -04:00
|
|
|
] keep disposed>>
|
2007-09-20 18:09:08 -04:00
|
|
|
] unit-test
|
|
|
|
|
2015-07-02 16:37:42 -04:00
|
|
|
[ t ] [
|
2007-09-20 18:09:08 -04:00
|
|
|
<closing-stream> [ <unclosable-stream>
|
|
|
|
<duplex-stream>
|
2008-02-06 14:47:19 -05:00
|
|
|
[ dup dispose ] [ 2drop ] recover
|
2008-05-15 00:23:12 -04:00
|
|
|
] keep disposed>>
|
2007-09-20 18:09:08 -04:00
|
|
|
] unit-test
|
2008-05-09 17:38:27 -04:00
|
|
|
|
2015-07-02 16:37:42 -04:00
|
|
|
[ "Hey" ] [
|
2008-05-09 17:38:27 -04:00
|
|
|
"Hey\nThere" <string-reader> <string-writer> <duplex-stream>
|
|
|
|
stream-readln
|
|
|
|
] unit-test
|