factor/basis/serialize/serialize-tests.factor

99 lines
2.2 KiB
Factor
Raw Normal View History

2007-09-20 18:09:08 -04:00
! Copyright (C) 2006 Chris Double.
! See http://factorcode.org/license.txt for BSD license.
!
USING: tools.test kernel serialize io io.streams.byte-array
2008-11-14 21:18:16 -05:00
alien arrays byte-arrays bit-arrays specialized-arrays.double
sequences math prettyprint parser classes math.constants
2008-12-03 04:43:59 -05:00
io.encodings.binary random assocs serialize.private ;
2008-03-01 17:00:45 -05:00
IN: serialize.tests
2007-09-20 18:09:08 -04:00
2009-03-23 01:34:02 -04:00
: test-serialize-cell ( a -- ? )
2008-03-08 03:51:26 -05:00
2^ random dup
binary [ serialize-cell ] with-byte-writer
binary [ deserialize-cell ] with-byte-reader = ;
[ t ] [
100 [
drop
2008-06-11 03:58:38 -04:00
40 [ test-serialize-cell ] all?
4 [ 40 * test-serialize-cell ] all?
4 [ 400 * test-serialize-cell ] all?
4 [ 4000 * test-serialize-cell ] all?
and and and
2008-03-08 03:51:26 -05:00
] all?
] unit-test
2007-09-20 18:09:08 -04:00
TUPLE: serialize-test a b ;
C: <serialize-test> serialize-test
2009-03-23 01:34:02 -04:00
CONSTANT: objects
2007-09-20 18:09:08 -04:00
{
f
t
0
-50
20
5.25
-5.25
C{ 1 2 }
1/2
"test"
{ 1 2 "three" }
V{ 1 2 "three" }
SBUF" hello world"
2008-03-08 03:51:26 -05:00
"hello \u123456 unicode"
2007-09-20 18:09:08 -04:00
\ dup
[ \ dup dup ]
T{ serialize-test f "a" 2 }
B{ 50 13 55 64 1 }
?{ t f t f f t f }
2008-11-14 21:18:16 -05:00
double-array{ 1.0 3.0 4.0 1.0 2.35 0.33 }
2008-02-06 20:23:39 -05:00
<< 1 [ 2 ] curry parsed >>
2007-09-20 18:09:08 -04:00
{ { "a" "bc" } { "de" "fg" } }
H{ { "a" "bc" } { "de" "fg" } }
2009-03-23 01:34:02 -04:00
}
2007-09-20 18:09:08 -04:00
: check-serialize-1 ( obj -- ? )
"=====" print
2007-09-20 18:09:08 -04:00
dup class .
dup .
2008-03-08 03:51:26 -05:00
dup
object>bytes
bytes>object
dup . = ;
2007-09-20 18:09:08 -04:00
: check-serialize-2 ( obj -- ? )
dup number? over wrapper? or [
drop t ! we don't care if numbers aren't interned
] [
"=====" print
2007-09-20 18:09:08 -04:00
dup class .
dup 2array dup .
object>bytes
bytes>object dup .
2007-09-20 18:09:08 -04:00
first2 eq?
] if ;
[ t ] [ objects [ check-serialize-1 ] all? ] unit-test
[ t ] [ objects [ check-serialize-2 ] all? ] unit-test
[ t ] [ pi check-serialize-1 ] unit-test
2008-03-08 03:51:26 -05:00
[ serialize ] must-infer
[ deserialize ] must-infer
[ t ] [
V{ } dup dup push
object>bytes
bytes>object
dup first eq?
] unit-test
[ t ] [
H{ } dup dup dup set-at
object>bytes
bytes>object
dup keys first eq?
] unit-test