]> gitweb.factorcode.org Git - factor.git/blob - library/io/buffer/test/buffer.factor
a54f2f048e6985844417b667528cbf25199a8cf1
[factor.git] / library / io / buffer / test / buffer.factor
1 IN: temporary
2 USING: alien io-internals kernel kernel-internals libc
3 sequences test ;
4
5 : buffer-append ( buffer buffer -- )
6     #! Append first buffer to second buffer.
7     2dup buffer-end <alien> over buffer-ptr <alien>
8     rot buffer-fill memcpy >r buffer-fill r> n>buffer ;
9
10 : buffer-set ( string buffer -- )
11     2dup buffer-ptr string>memory
12     >r length r> buffer-reset ;
13
14 : string>buffer ( string -- buffer )
15     dup length <buffer> tuck buffer-set ;
16
17 [ "" 65536 ] [
18     65536 <buffer>
19     dup buffer-contents
20     over buffer-capacity
21     rot buffer-free
22 ] unit-test
23
24 [ "hello world" "" ] [
25     "hello world" string>buffer
26     dup buffer-contents
27     0 pick buffer-reset
28     over buffer-contents
29     rot buffer-free
30 ] unit-test
31
32 [ "hello" ] [
33     "hello world" string>buffer
34     5 over buffer-first-n swap buffer-free
35 ] unit-test
36
37 [ 11 ] [
38     "hello world" string>buffer
39     [ buffer-length ] keep buffer-free
40 ] unit-test
41
42 [ "hello world" ] [
43     "hello" 1024 <buffer> [ buffer-set ] keep
44     " world" over >buffer
45     dup buffer-contents swap buffer-free
46 ] unit-test
47
48 [ CHAR: e ] [
49     "hello" string>buffer
50     1 over buffer-consume [ buffer-pop ] keep buffer-free
51 ] unit-test
52
53 [ "Hello world" ] [
54     " world" string>buffer
55     "Hello" string>buffer
56     2dup buffer-append
57     [ buffer-contents ] keep buffer-free swap buffer-free
58 ] unit-test