5 module Test
(S
: Pickle.Pickle
) =
7 let test v
= S.E.eq
(S.from_string
(S.to_string v
)) v
12 let test = let module T
= Test
(Pickle_sum
) in T.test in
15 assert (test (S2
(10,2.0)));
16 assert (test (Sunit
()));
17 assert (test (Stup
(10,2.0)));
18 assert (test (Stup1
3));
23 let test = let module T
= Test
(Pickle_nullsum
) in T.test in
32 let test = let module T
= Test
(Pickle_r1
) in T.test in
33 assert (test {r1_l1
= 10; r1_l2
= 20});
34 assert (test {r1_l1
= min_int
; r1_l2
= max_int
});
35 assert (test {r1_l1
= max_int
; r1_l2
= min_int
});
43 (Pickle_r2.from_string
44 (Pickle_r2.to_string
v)) v));
45 assert (Pickle_r2.from_string
46 (Pickle_r2.to_string
v) = v);
54 (Pickle_r3.from_string
55 (Pickle_r3.to_string
v)) v));
56 assert (Pickle_r3.from_string
57 (Pickle_r3.to_string
v) = v);
62 let test = let module T
= Test
(Pickle_intseq
) in T.test in
64 assert (test (ICons
(10, ICons
(20, ICons
(30, ICons
(40, INil
))))));
65 assert (test (ICons
(max_int
, ICons
(min_int
, INil
))));
70 let test = let module T
= Test
(Pickle_seq
(Pickle.Pickle_bool
)) in T.test in
71 let test'
= let module T
= Test
(Pickle_seq
(Pickle_seq
(Pickle.Pickle_bool
))) in T.test in
74 assert (test (Cons
(false, Cons
(true, Cons
(false, Nil
)))));
76 assert (test'
(Cons
(Cons
(false, Cons
(true, Nil
)),
77 Cons
(Cons
(true, Cons
(false, Nil
)),
83 let test = let module T
= Test
(Pickle_uses_seqs
) in T.test in
84 assert (test (INil
, Nil
));
85 assert (test (INil
, Cons
(0.0, Cons
(10.0, Nil
))));
86 assert (test (ICons
(10, ICons
(20, INil
)), Nil
));
87 assert (test (ICons
(10, ICons
(20, INil
)),
88 Cons
(0.0, Cons
(10.0, Nil
))));
91 type permute0
= [`T3
| `T1
| `T2
| `T0
] deriving
(Typeable
, Eq
, Pickle
)
94 let test v = Eq_permute0.eq
(Pickle_permute0.from_string
(Pickle_poly0.to_string
v)) v in
101 type permute3
= [`Nil
| `Cons
of int * permute3
] deriving
(Typeable
, Eq
, Pickle
)
104 let test v = Eq_permute3.eq
(Pickle_permute3.from_string
(Pickle_poly3.to_string
v)) v in
106 assert (test (`Cons
(0, `Cons
(1, `Cons
(2, `Nil
)))));
111 let test = let module T
= Test
(Pickle_poly3b
) in T.test in
112 assert (test (10, `Nil
, `F
));
113 assert (test (10, `Cons
(10, `Cons
(-20, `Nil
)), `F
));
118 let test = let module T
= Test
(Pickle_poly7
(Pickle.Pickle_bool
)) in T.test
119 and test'
= let module T
= Test
(Pickle_poly8
(Pickle.Pickle_int
)) in T.test in
120 assert (test (Foo
(`F
true)));
121 assert (test (Foo
(`F
false)));
122 assert (test'
{x
= `G
(`H
(`I
(Foo
(`F
(max_int
- 1)))))});
123 assert (test'
{x
= `G
(`H
(`I
(Foo
(`F
(min_int
+ 1)))))});
128 let test = let module T
= Test
(Pickle_poly10
) in T.test in
131 assert (test (`Cons
(12, `Cons
(14, `Nil
))));
136 let module A
= Test
(Pickle_mutrec_a
) in
137 let module B
= Test
(Pickle_mutrec_b
) in
138 let module C
= Test
(Pickle_mutrec_c
) in
139 let module D
= Test
(Pickle_mutrec_d
) in
141 let b = { l1
= S
(3, a); l2
= a } in
142 let c = S
(3, S
(4, S
(5, N
))) in
153 type ('a,'b) pmutrec_a = ('a,'b) pmutrec_c
154 and ('a,'b) pmutrec_b = { pl1 : ('a,'b) pmutrec_c ; pl2 : ('a,'b) pmutrec_a }
155 and ('a,'b) pmutrec_c = SS of 'a * ('a,'b) pmutrec_a * 'b
156 and ('a,'b) pmutrec_d = [`T of ('a,'b) pmutrec_b]
162 let test = let module T
= Test
(Pickle_ff1
(Pickle.Pickle_bool
)) in T.test in
163 assert (test (F
(true,false)));
164 assert (test (G
435));
169 let test = let module T
= Test
(Pickle_ff2
(Pickle.Pickle_bool
)(Pickle.Pickle_int
)) in T.test in
170 assert (test (F1
(F2
(Nil
, 10, None
))));
171 assert (test (F1
(F2
(Cons
(true, Cons
(false, Nil
)), 10, Some
14))));
176 let test = let module T
= Test
(Pickle_unit
) in T.test in
182 let test = let module T
= Test
(Pickle_tup2
) in T.test in
183 assert (test (-10,12e4
));
184 assert (test (max_int
,12e4
));
189 let test = let module T
= Test
(Pickle_tup3
) in T.test in
190 assert (test (0,12.3,true));
191 assert (test (min_int
,-12.3,false));
196 let test = let module T
= Test
(Pickle_tup4
) in T.test in
197 assert (test (0,0,true,()));
198 assert (test (min_int
,max_int
,false,()));
203 let v = WR
(10, ref 20) in
205 (Eq_withref.eq
(Pickle_withref.from_string
206 (Pickle_withref.to_string
v)) v));
207 assert (Pickle_withref.from_string
208 (Pickle_withref.to_string
v) = v);
213 let test v = Eq_int.eq
(Pickle_int.from_string
(Pickle_t.to_string
v)) v in
214 assert (test min_int
);
215 assert (test max_int
);
219 type refobj
= A
| B
of refobj
ref
220 deriving
(Eq
, Typeable
, Pickle
)
229 let v = Pickle_refobj.from_string
(Pickle_refobj.to_string
circular) in
236 B
{contents
= _ }}}}}}}) = v in
241 mutable x
: mut
option;
242 mutable y
: mut
option;
244 } deriving
(Eq
, Typeable
, Pickle
)
247 let i = {z
= 1; x
= None
; y
= None
} in
248 let j = {z
= 2; x
= None
; y
= Some
i} in
255 let v = Pickle_mut.from_string
(Pickle_mut.to_string
circularm) in
257 x
= Some
{z
= 2; x
= Some
{z
= 2;
262 x
= Some
{z
= 2; x
= Some
{z
= 2;
271 type t1
= { mutable x
: t2
option }
272 and t2
= { y
: t1
option }
273 deriving
(Eq
, Typeable
, Pickle
)
276 let a = { x
= None
} in
277 let b = { y
= Some
a } in
282 let {x
= Some
{y
= Some
285 {x
= Some
{y
= Some
_}}}}}}}} =
286 Pickle_t1.from_string
(Pickle_t1.to_string
circular_a) in