OSDN Git Service

add encoded u32
[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_int_list [ y ]
7
8 let ok_b x y =
9   assert_equal ~printer:Std.dump (to_int_list x) (to_int_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 ]end +> run_test_tt_main