OSDN Git Service

add `Size to swfBaseOut
[happyabc/happyabc.git] / swflib / swfOutTest.ml
1 open Base
2 open SwfType
3 open OUnit
4
5 module M = SwfOut.Make(struct
6                          type t = int * SwfBaseOut.s list
7                          let to_base x = x
8                        end)
9 open M
10
11 let char c =
12   `Ui8 (Char.code c)
13
14 let ok ?msg f x y =
15   assert_equal ?msg y (f x)
16
17 let ok_b ?msg f x y =
18   assert_equal ?msg (SwfBaseOut.to_list y) (SwfBaseOut.to_list (f x))
19
20 let _ = begin "swfOut.ml" >::: [
21   "header" >:: begin fun () ->
22     let swf = {
23       version     = 9;
24       frame_size  = { top=0; bottom=10; left=0; right=20 };
25       frame_rate  = 24.0;
26       frame_count = 42;
27       tags        = []
28     } in
29       ok to_base swf [
30         (* signature *)
31         char 'F'; char 'W'; char 'S';
32         (* version *)
33         `Ui8 9;
34         (* file length *)
35         `Ui32Size;
36         (* frame size *)
37         `Rect(0,20,0,10);
38         (* frame rate *)
39         `Fixed8 24.0;
40         (* frame count *)
41         `Ui16 42;
42       ]
43   end;
44   "tag" >:: begin fun () ->
45     ok_b ~msg:"size < 64" of_tag (1, [`Ui8 1;`Ui8 2; `Ui8 3])
46       [ `Ui16 0b0000000001_000011; `Ui8 1; `Ui8 2; `Ui8 3 ];
47     (* size >= 64*)
48     ok_b ~msg:"size > 64" of_tag (1, HList.replicate 64 (`Ui8 1)) @@
49       [ `Ui16 0b0000000001_111111; `Si32 64l ] @ HList.replicate 64 (`Ui8 1)
50   end
51 ] end +> run_test_tt_main