USING: io.streams.duplex io io.streams.string kernel continuations tools.test destructors accessors ; IN: io.streams.duplex.tests ! Test duplex stream close behavior TUPLE: closing-stream < disposable ; : ( -- stream ) closing-stream new-disposable ; M: closing-stream dispose* drop ; TUPLE: unclosable-stream ; : ( -- stream ) unclosable-stream new ; M: unclosable-stream dispose "Can't close me!" throw ; [ ] [ dup dispose dispose ] unit-test [ t ] [ [ [ dup dispose ] [ 2drop ] recover ] keep disposed>> ] unit-test [ t ] [ [ [ dup dispose ] [ 2drop ] recover ] keep disposed>> ] unit-test [ "Hey" ] [ "Hey\nThere" stream-readln ] unit-test