1 USING: accessors continuations destructors io io.encodings
2 io.encodings.ascii io.encodings.binary
3 io.encodings.string io.encodings.utf8 io.files io.pipes
4 io.streams.byte-array io.streams.duplex io.streams.limited io.streams.string
5 kernel namespaces strings tools.test system
6 io.encodings.8-bit.latin1 ;
7 IN: io.streams.limited.tests
10 "hello world\nhow are you today\nthis is a very long line indeed"
11 ascii encode binary <byte-reader> "data" set
14 { } [ "data" get 24 <limited-stream> "limited" set ] unit-test
16 { CHAR: h } [ "limited" get stream-read1 ] unit-test
18 { } [ "limited" get ascii <decoder> "decoded" set ] unit-test
20 { "ello world" } [ "decoded" get stream-readln ] unit-test
22 { "how " } [ 4 "decoded" get stream-read ] unit-test
24 { "are you " } [ "decoded" get stream-readln ] unit-test
26 { f } [ "decoded" get stream-readln ] unit-test
31 ascii encode binary <byte-reader> "data" set
34 { } [ "data" get 4 <limited-stream> "limited" set ] unit-test
37 [ "\n" "limited" get stream-read-until [ >string ] dip ] unit-test
39 { "" f } [ "\n" "limited" get stream-read-until [ >string ] dip ] unit-test
43 [ "a" <string-reader> 1 <limited-stream> stream-read1 ] unit-test
47 "abc" <string-reader> 3 <limited-stream>
53 "abc" <string-reader> 3 <limited-stream>
54 4 over stream-read drop 10 swap stream-read
57 ! pipes are duplex and not seekable
60 input-stream [ 2 <limited-stream> ] change
61 "asdf" write flush 2 read
67 input-stream [ 2 <limited-stream> ] change
68 "asdf" write flush 3 read
72 ! test seeking on limited unseekable streams
75 input-stream [ 2 <limited-stream> ] change
76 "asdf" write flush 2 read
82 input-stream [ 2 <limited-stream> ] change
83 "asdf" write flush 3 read
89 "abc" <string-reader> 3 limit-stream unlimit-stream
90 "abc" <string-reader> =
95 "abc" <string-reader> 3 limit-stream unlimit-stream
96 "abc" <string-reader> =
102 "resource:license.txt" utf8 <file-reader> &dispose
103 3 limit-stream unlimit-stream
104 "resource:license.txt" utf8 <file-reader> &dispose
110 "asdf" <string-reader> 2 <limited-stream> [
111 unlimited-input contents
116 "asdf" <string-reader> 2 <limited-stream> [
117 [ contents ] with-unlimited-input
122 "asdfgh" <string-reader> 4 <limited-stream> [
124 [ contents drop ] with-unlimited-input
126 [ contents ] with-unlimited-input
130 { 4 } [ B{ 0 1 2 3 4 5 } binary <byte-reader> 4 <limited-stream> stream-length ] unit-test
131 { 6 } [ B{ 0 1 2 3 4 5 } binary <byte-reader> 8 <limited-stream> stream-length ] unit-test