6 module A = AbcOut.Make(struct
17 namespace = [Namespace 1];
18 namespace_set = [[1;2]];
19 multiname=[QName (0,1);Multiname (2,3)] }
22 { params=[]; return=1; method_name=2; method_flags=[ NeedArguments; NeedActivation] }
35 {init=0x7F; script_traits=[]}
38 OUnit.assert_equal ~printer:(Std.dump) (to_int_list x) (to_int_list y)
44 ok [u30 0x7F; u30 0] @@ of_script script);
47 ok [u30 1;u8 0; u30 1; u30 2; u30 3; u8 4; ] @@
48 of_trait {trait_name=1; data=SlotTrait (1,2,3,4); trait_metadata=[]};
49 ok [u30 1;u8 0; u30 1; u30 2; u30 0] @@
50 of_trait {trait_name=1; data=SlotTrait (1,2,0,4); trait_metadata=[]};
51 ok [u30 1;u8 1; u30 1; u30 2] @@
52 of_trait {trait_name=1; data=MethodTrait (1,2,[]); trait_metadata=[]};
53 ok [u30 1;u8 2; u30 1; u30 2] @@
54 of_trait {trait_name=1; data=GetterTrait (1,2,[]); trait_metadata=[]};
55 ok [u30 1;u8 3; u30 1; u30 2] @@
56 of_trait {trait_name=1; data=SetterTrait (1,2,[]); trait_metadata=[]};
57 ok [u30 1;u8 4; u30 1; u30 2] @@
58 of_trait {trait_name=1; data=ClassTrait (1,2); trait_metadata=[]};
59 ok [u30 1;u8 5; u30 1; u30 2] @@
60 of_trait {trait_name=1; data=FunctionTrait (1,2); trait_metadata=[]};
61 ok [u30 1;u8 6; u30 1; u30 2; u30 3; u8 4] @@
62 of_trait {trait_name=1; data=ConstTrait (1,2,3,4); trait_metadata=[]};
63 ok [u30 1;u8 6; u30 1; u30 2; u30 0] @@
64 of_trait {trait_name=1; data=ConstTrait (1,2,0,4); trait_metadata=[]};);
65 "of_method_info test" >::
67 ok [u30 0; (* param count *)
72 ok [u30 0; u30 1; u30 2;
76 u30 1; u8 0x03; (* val=1; kind=int *)
77 u30 0; u8 0x0c; (* val=0; kind=null*) ] @@
78 of_method_info { info with
79 method_flags=[ HasOptional [IntVal 1; NullVal] ] };
81 u30 2; u30 3; u30 4; (* params *)
83 u30 1; u30 2; u30 3 (* param names *) ] @@
84 of_method_info { info with
86 method_flags=[ HasParamNames [1; 2; 3]] };
88 "of_method_body test" >::
107 u30 1 (* mname *)] @@
108 of_cpool empty_cpool;
109 ok [u30 3; s32 ~-1; s32 42; (* int *)
110 u30 2; u32 42; (* uint *)
112 u30 2; u30 3; u8 0x61; u8 0x62; u8 0x63; (* string *)
113 u30 2; u8 0x08; u30 1; (* ns *)
114 u30 2; u30 2; u30 1; u30 2; (* ns_set *)
115 u30 3; u8 0x07; u30 0; u30 1;
116 u8 0x09; u30 2; u30 3; (* mname *)] @@
120 ok [u30 10; u30 0] @@
121 of_class {cinit=10; class_traits=[]});
122 "of_instance test" >::
124 ok [u30 1; (* name *)
125 u30 2; (* super name *)
127 u30 4; (* interface count *)
128 u30 1; u30 2; u30 3; u30 4; (* interface *)
130 u30 0; (* traits count *) ] @@
134 instance_flags=[Sealed;Final];
135 interfaces=[1;2;3;4];
137 instance_traits=[]});
138 "of_instance protected ns" >::
140 ok [u30 1; (* name *)
141 u30 2; (* super name *)
143 u30 1; (* protected ns *)
144 u30 4; (* interface count *)
145 u30 1; u30 2; u30 3; u30 4; (* interface *)
147 u30 0; (* traits count *) ] @@
151 instance_flags=[ProtectedNs 1];
152 interfaces=[1;2;3;4];
154 instance_traits=[]});
157 ok [u16 16; u16 46;(* version *)
158 u30 1; u30 1; u30 1; u30 1; u30 1; u30 1; u30 1;
164 u30 0; (* body *) ] @@
172 method_bodies = []});
176 (* version *) [ u16 16; u16 46];
177 (* cpool *) of_cpool {empty_cpool with string=["foo"] };
178 (* info *) [ u30 1]; of_method_info info;
181 (* script *) [u30 1]; of_script script;
182 (* body *) [u30 1]; of_method_body body; ]) @@
184 cpool = {empty_cpool with string=["foo"] } ;
185 method_info = [info];
190 method_bodies = [body]})
191 ] ) +> run_test_tt_main