1 ! Copyright (C) 2006 Chris Double.
2 ! See http://factorcode.org/license.txt for BSD license.
4 USING: tools.test kernel serialize io io.streams.byte-array
5 alien arrays byte-arrays bit-arrays specialized-arrays
6 sequences math prettyprint parser classes math.constants
7 io.encodings.binary random assocs serialize.private alien.c-types
8 combinators.short-circuit ;
9 SPECIALIZED-ARRAY: double
12 : test-serialize-cell ( a -- ? )
14 binary [ serialize-cell ] with-byte-writer
15 binary [ deserialize-cell ] with-byte-reader = ;
21 [ 40 [ test-serialize-cell ] all-integers? ]
22 [ 4 [ 40 * test-serialize-cell ] all-integers? ]
23 [ 4 [ 400 * test-serialize-cell ] all-integers? ]
24 [ 4 [ 4000 * test-serialize-cell ] all-integers? ]
29 TUPLE: serialize-test a b ;
31 C: <serialize-test> serialize-test
48 "hello \u012345 unicode"
51 T{ serialize-test f "a" 2 }
54 double-array{ 1.0 3.0 4.0 1.0 2.35 0.33 }
55 << 1 [ 2 ] curry suffix! >>
56 { { "a" "bc" } { "de" "fg" } }
57 H{ { "a" "bc" } { "de" "fg" } }
60 : check-serialize-1 ( obj -- ? )
69 : check-serialize-2 ( obj -- ? )
70 dup number? over wrapper? or [
71 drop t ! we don't care if numbers aren't interned
81 [ t ] [ objects [ check-serialize-1 ] all? ] unit-test
83 [ t ] [ objects [ check-serialize-2 ] all? ] unit-test
85 [ t ] [ pi check-serialize-1 ] unit-test
86 [ serialize ] must-infer
87 [ deserialize ] must-infer
97 H{ } dup dup dup set-at