factor/basis/io/streams/duplex/duplex-tests.factor

42 lines
963 B
Factor
Raw Normal View History

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
M: unclosable-stream dispose
2007-09-20 18:09:08 -04:00
"Can't close me!" throw ;
[ ] [
2007-09-20 18:09:08 -04:00
<closing-stream> <closing-stream> <duplex-stream>
dup dispose dispose
2007-09-20 18:09:08 -04:00
] unit-test
[ t ] [
2007-09-20 18:09:08 -04:00
<unclosable-stream> <closing-stream> [
<duplex-stream>
[ dup dispose ] [ 2drop ] recover
2008-05-15 00:23:12 -04:00
] keep disposed>>
2007-09-20 18:09:08 -04:00
] unit-test
[ t ] [
2007-09-20 18:09:08 -04:00
<closing-stream> [ <unclosable-stream>
<duplex-stream>
[ 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
[ "Hey" ] [
2008-05-09 17:38:27 -04:00
"Hey\nThere" <string-reader> <string-writer> <duplex-stream>
stream-readln
] unit-test