OSDN Git Service

add tag out
[happyabc/happyabc.git] / swflib / swfBaseOutTest.ml
1 open Base
2 open OUnit
3 open SwfBaseOut
4
5 let ok_i x y =
6   assert_equal ~printer:Std.dump x @@ to_list [ y ]
7
8 let ok_b x y =
9   assert_equal ~printer:Std.dump (to_list x) (to_list y)
10
11 let _ = begin "swfBaseOut.ml" >::: [
12   "equality" >:: begin fun () ->
13     assert_equal (`Si8 0) (`Si8 0)
14   end;
15   "`Si8" >:: begin fun () ->
16     ok_i  [0x7F] @@ `Si8 0x7F;
17     ok_i  [0xFF] @@ `Si8 (~-1);
18   end;
19   "`Si16" >:: begin fun () ->
20     ok_i [0x7F; 0x00] @@ `Si16 0x7F;
21     ok_i [0xFF; 0x7F] @@ `Si16 0x7FFF;
22     ok_i [0xFF; 0xFF] @@ `Si16 (~-1);
23   end;
24   "`Si24" >:: begin fun () ->
25     ok_i [0x7F; 0; 0] @@ `Si24 0x7F;
26     ok_i [0x56; 0x34; 0x12] @@ `Si24 0x123456;
27     ok_i [0xFF; 0xFF; 0xFF] @@ `Si24 (~-1);
28   end;
29   "`Si32" >:: begin fun () ->
30     ok_i [0xFF; 0xFF; 0xFF; 0x7F] @@ `Si32 0x7FFFFFFFl;
31     ok_i [0xFF; 0xFF; 0xFF; 0xFF] @@ `Si32 (-1l);
32   end;
33   "`Ui8" >:: begin fun () ->
34     ok_i [0x0] @@ `Ui8 0x0;
35     ok_i [0xFF] @@ `Ui8 0xFF;
36   end;
37   "`Ui16" >:: begin fun () ->
38     ok_i [0x00; 0x00] @@ `Ui16 0;
39     ok_i [0xFF; 0xFF] @@ `Ui16 0xFFFF;
40     ok_i [0x34; 0x12] @@ `Ui16 0x1234;
41   end;
42   "`Ui24" >:: begin fun () ->
43     ok_i [0;0;0] @@ `Ui24 0;
44     ok_i [0x56; 0x34; 0x12] @@ `Ui24 0x123456;
45     ok_i [0xFF; 0xFF; 0xFF] @@ `Ui24 0xFFFFFF;
46   end;
47   "`Ui32" >:: begin fun () ->
48     ok_i [0xFF; 0xFF; 0xFF; 0x7F] @@ `Ui32 0x7FFFFFFFl;
49     ok_i [0xFF; 0xFF; 0xFF; 0xFF] @@ `Ui32 0xFFFFFFFFl;
50   end;
51   "`Ui64" >:: begin fun () ->
52     ok_i [0xFF; 0xFF; 0xFF; 0xFF; 0;0;0;0] @@
53       `Ui64 0xFFFFFFFFL;
54   end;
55   "Fixed" >:: begin fun () ->
56     ok_b [`Ui16 0x8000; `Ui16 7] [`Fixed 7.5];
57     ok_b [`Ui16 0; `Ui16 0xFFFF] [`Fixed 65535.0];
58   end;
59   "Fixed8" >:: begin fun () ->
60     ok_b [`Ui8 0x80; `Ui8 7] [`Fixed8 7.5];
61     ok_b [`Ui8 0; `Ui8 0xFF] [`Fixed8 255.0];
62   end;
63 (*  "Float16" >:: begin fun() ->
64     ok_i [0; 0x3c] @@ Float16 1.;
65     ok_i [0; 0xc0] @@ Float16 (-2.0);
66     ok_i [0xff; 0x7b] @@ Float16 65504.;
67   end;*)
68   "Float32" >:: begin fun() ->
69     ok_i [0; 0; 0x20; 0x40] @@ `Float32 2.5;
70   end;
71   "Float64" >:: begin fun() ->
72     ok_i [0x55; 0x55; 0x55; 0x55;
73           0x55; 0x55; 0xd5; 0x3f] @@ `Float64 0.333333333333333315;
74   end;
75   "u30" >::: [
76     "1byte" >:: begin fun () ->
77       ok_i [0]    @@ `EUi32 0l;
78       ok_i [0x7F] @@ `EUi32 0x7Fl
79     end;
80     "2byte" >:: begin fun () ->
81       ok_i [0xFF;0x30] @@ `EUi32 0x187Fl;
82       ok_i [0xFF;0x01] @@ `EUi32 0xFFl;
83       ok_i [0xFF;0x7F] @@ `EUi32 0x3FFFl
84     end;
85     "3byte/15-21bit" >:: begin fun () ->
86       ok_i [0xFF;0xFF;0x01] @@ `EUi32 0x7FFFl;
87       ok_i [0xFF;0xFF;0x7F] @@ `EUi32 0x1F_FFFFl
88     end;
89     "4 byte/22-28bit" >:: begin fun () ->
90       ok_i [0xFF;0xFF;0xFF;0x01] @@ `EUi32 0x003F_FFFFl;
91       ok_i [0xFF;0xFF;0xFF;0x7F] @@ `EUi32 0x0FFF_FFFFl
92     end;
93     "5 byte/29-35bit" >:: begin fun () ->
94       ok_i [0xFF;0xFF;0xFF;0xFF;0x01] @@ `EUi32 0x1FFF_FFFFl;
95       ok_i [0xFF;0xFF;0xFF;0xFF;0x03] @@ `EUi32 0x3FFF_FFFFl
96     end
97   ];
98   "`UB" >:: begin fun () ->
99     ok_i [0b00001_000] @@ `Bits [UB (5,1)];
100   end;
101   "`SB" >:: begin fun () ->
102     ok_i [0b00001_000] @@ `Bits [SB (5,1)];
103     ok_i [0b11111_000] @@ `Bits [SB (5,-1)];
104   end;
105   "Bits" >:: begin fun () ->
106     ok_i [0b00001_000; 0b1000_0000] @@ `Bits [UB (5,1); UB (4,1)]
107   end;
108   "rect" >:: begin fun () ->
109     ok_b [ `Bits [UB(5,2);  SB(2,0);    SB(2,0);    SB(2,1);   SB(2,1)]]    @@ [`Rect (0,0,1,1)];
110     ok_b [ `Bits [UB(5,11); SB(11,127); SB(11,260); SB(11,15); SB(11,514)]] @@ [`Rect (127,260,15,514)]
111   end;
112   "size" >:: begin fun () ->
113     ok_b [`Ui32 4l] [`Ui32Size];
114     ok_b [`Ui32 6l; `EUi32 0xFFl] [`Ui32Size;  `EUi32 0xFFl;];
115   end;
116   "rgb" >:: begin fun () ->
117     ok_b [`Ui8 1; `Ui8 2; `Ui8 3] [`RGB (1,2,3)];
118     ok_b [`Ui8 1; `Ui8 2; `Ui8 3; `Ui8 4] [`RGBA (1,2,3,4)]
119   end
120 ] end +> run_test_tt_main
121