]> gitweb.factorcode.org Git - factor.git/blob - basis/io/buffers/buffers-tests.factor
factor: rename [ ] [ ] unit-test -> { } [ ] unit-test using a refactoring tool!
[factor.git] / basis / io / buffers / buffers-tests.factor
1 IN: io.buffers.tests
2 USING: accessors alien alien.data arrays byte-arrays destructors
3 io.buffers kernel libc namespaces sequences strings tools.test ;
4
5 : buffer-set ( string buffer -- )
6     [ ptr>> swap >byte-array binary-object memcpy ]
7     [ [ length ] dip buffer-reset ]
8     2bi ;
9
10 : string>buffer ( string -- buffer )
11     dup length <buffer> [ buffer-set ] keep ;
12
13 : buffer-read-all ( buffer -- byte-array )
14     [ buffer@ ] [ buffer-length ] bi memory>byte-array ;
15
16 { B{ } 65536 } [
17     65536 <buffer>
18     dup buffer-read-all
19     over buffer-capacity
20     rot dispose
21 ] unit-test
22
23 { "hello world" "" } [
24     "hello world" string>buffer
25     dup buffer-read-all >string
26     0 pick buffer-reset
27     over buffer-read-all >string
28     rot dispose
29 ] unit-test
30
31 { "hello" } [
32     "hello world" string>buffer
33     5 over buffer-read >string swap dispose
34 ] unit-test
35
36 { 11 } [
37     "hello world" string>buffer
38     [ buffer-length ] keep dispose
39 ] unit-test
40
41 { "hello world" } [
42     "hello" 1024 <buffer> [ buffer-set ] keep
43     " world" >byte-array binary-object pick buffer-write
44     dup buffer-read-all >string swap dispose
45 ] unit-test
46
47 { CHAR: e } [
48     "hello" string>buffer
49     1 over buffer-consume [ buffer-pop ] keep dispose
50 ] unit-test
51
52 "hello world" string>buffer "b" set
53 { "hello world" } [ 1000 "b" get buffer-read >string ] unit-test
54 "b" get dispose
55
56 100 <buffer> "b" set
57 [ 1000 "b" get buffer+ >string ] must-fail
58 "b" get dispose
59
60 "hello world" string>buffer "b" set
61 { "hello" CHAR: \s } [ " " "b" get buffer-read-until [ >string ] dip ] unit-test
62 "b" get dispose
63
64 { 4 B{ 1 2 3 4 0 0 0 0 0 0 } } [
65     10 <buffer>
66     [ B{ 1 2 3 4 } binary-object rot buffer-write ]
67     [ 10 <byte-array> [ 10 rot buffer-read-into ] keep ] bi
68 ] unit-test
69
70 { 4 { 1 2 3 4 f f f f f f } } [
71     10 <buffer>
72     [ B{ 1 2 3 4 } binary-object rot buffer-write ]
73     [ 10 f <array> [ 10 rot buffer-read-into ] keep ] bi
74 ] unit-test