]> gitweb.factorcode.org Git - factor.git/blob - basis/io/buffers/buffers-tests.factor
Fix permission bits
[factor.git] / basis / io / buffers / buffers-tests.factor
1 IN: io.buffers.tests
2 USING: alien alien.c-types io.buffers kernel kernel.private libc
3 sequences tools.test namespaces byte-arrays strings accessors
4 destructors ;
5
6 : buffer-set ( string buffer -- )
7     over >byte-array over ptr>> byte-array>memory
8     >r length r> buffer-reset ;
9
10 : string>buffer ( string -- buffer )
11     dup length <buffer> tuck buffer-set ;
12
13 : buffer-read-all ( buffer -- byte-array )
14     [ [ pos>> ] [ ptr>> ] bi <displaced-alien> ]
15     [ buffer-length ] bi
16     memory>byte-array ;
17
18 [ B{ } 65536 ] [
19     65536 <buffer>
20     dup buffer-read-all
21     over buffer-capacity
22     rot dispose
23 ] unit-test
24
25 [ "hello world" "" ] [
26     "hello world" string>buffer
27     dup buffer-read-all >string
28     0 pick buffer-reset
29     over buffer-read-all >string
30     rot dispose
31 ] unit-test
32
33 [ "hello" ] [
34     "hello world" string>buffer
35     5 over buffer-read >string swap dispose
36 ] unit-test
37
38 [ 11 ] [
39     "hello world" string>buffer
40     [ buffer-length ] keep dispose
41 ] unit-test
42
43 [ "hello world" ] [
44     "hello" 1024 <buffer> [ buffer-set ] keep
45     " world" >byte-array over >buffer
46     dup buffer-read-all >string swap dispose
47 ] unit-test
48
49 [ CHAR: e ] [
50     "hello" string>buffer
51     1 over buffer-consume [ buffer-pop ] keep dispose
52 ] unit-test
53
54 "hello world" string>buffer "b" set
55 [ "hello world" ] [ 1000 "b" get buffer-read >string ] unit-test
56 "b" get dispose
57
58 100 <buffer> "b" set
59 [ 1000 "b" get n>buffer >string ] must-fail
60 "b" get dispose