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 SPECIALIZED-ARRAY: double
11 : test-serialize-cell ( a -- ? )
13 binary [ serialize-cell ] with-byte-writer
14 binary [ deserialize-cell ] with-byte-reader = ;
19 40 [ test-serialize-cell ] all?
20 4 [ 40 * test-serialize-cell ] all?
21 4 [ 400 * test-serialize-cell ] all?
22 4 [ 4000 * test-serialize-cell ] all?
27 TUPLE: serialize-test a b ;
29 C: <serialize-test> serialize-test
46 "hello \u123456 unicode"
49 T{ serialize-test f "a" 2 }
52 double-array{ 1.0 3.0 4.0 1.0 2.35 0.33 }
53 << 1 [ 2 ] curry parsed >>
54 { { "a" "bc" } { "de" "fg" } }
55 H{ { "a" "bc" } { "de" "fg" } }
58 : check-serialize-1 ( obj -- ? )
67 : check-serialize-2 ( obj -- ? )
68 dup number? over wrapper? or [
69 drop t ! we don't care if numbers aren't interned
79 [ t ] [ objects [ check-serialize-1 ] all? ] unit-test
81 [ t ] [ objects [ check-serialize-2 ] all? ] unit-test
83 [ t ] [ pi check-serialize-1 ] unit-test
84 [ serialize ] must-infer
85 [ deserialize ] must-infer
95 H{ } dup dup dup set-at