1# Copyright (c) 2023 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6#     http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14import("//arkcompiler/ets_frontend/es2panda/es2abc_config.gni")
15import("//arkcompiler/runtime_core/ark_config.gni")
16import("$ark_root/tests/test_helper.gni")
17
18disasm_test_configs = [
19  "$ark_root:ark_config",
20  "$ark_root/libpandabase:arkbase_public_config",
21  "$ark_root/libpandafile:arkfile_public_config",
22  sdk_libc_secshared_config,
23]
24
25disasm_test_deps = [
26  "$ark_root/disassembler:arkdisassembler",
27  "$ark_root/libpandabase:libarkbase_static",
28  "$ark_root/libpandafile:libarkfile_static",
29]
30
31disasm_column_test_js_files = [
32  "column-number1",
33  "column-number2",
34  "column-number3",
35  "column-number4",
36  "column-number5",
37  "column-number6",
38  "line-number1",
39  "line-number2",
40  "line-number3",
41  "line-number4",
42  "line-number5",
43]
44
45disasm_line_release_test_ts_files = [ "line_number_release" ]
46
47disasm_test_js_files = [
48  "slot-number-annotation",
49  "script-string1",
50  "script-string2",
51]
52
53test_js_path = "//arkcompiler/runtime_core/disassembler/tests/js/"
54
55foreach(file, disasm_column_test_js_files) {
56  es2abc_gen_abc("gen_${file}_abc") {
57    test_js = "${test_js_path}${file}.js"
58    test_abc = "$target_out_dir/${file}.abc"
59    src_js = rebase_path(test_js)
60    dst_file = rebase_path(test_abc)
61    extra_args = [
62      "--debug",
63      "--module",
64    ]
65    in_puts = [ test_js ]
66    out_puts = [ test_abc ]
67  }
68}
69
70test_ts_path = "//arkcompiler/runtime_core/disassembler/tests/ts/"
71
72foreach(file, disasm_line_release_test_ts_files) {
73  es2abc_gen_abc("gen_${file}_abc") {
74    test_ts = "${test_ts_path}${file}.ts"
75    test_abc = "$target_out_dir/${file}.abc"
76    src_js = rebase_path(test_ts)
77    dst_file = rebase_path(test_abc)
78    extra_args = [ "--module" ]
79    in_puts = [ test_ts ]
80    out_puts = [ test_abc ]
81  }
82}
83
84disasm_annotation_test_files = [
85  "declaration-3d-array-boolean",
86  "declaration-3d-array-enum-number",
87  "declaration-3d-array-enum-string",
88  "declaration-3d-array-number",
89  "declaration-3d-array-string",
90  "declaration-array-boolean",
91  "declaration-array-enum-number",
92  "declaration-array-enum-string",
93  "declaration-array-number",
94  "declaration-array-string",
95  "declaration-boolean",
96  "declaration-combination",
97  "declaration-empty",
98  "declaration-enum-number",
99  "declaration-enum-string",
100  "declaration-number",
101  "declaration-string",
102  "declaration-usage-3d-array-boolean",
103  "declaration-usage-3d-array-enum-number",
104  "declaration-usage-3d-array-enum-string",
105  "declaration-usage-3d-array-number",
106  "declaration-usage-3d-array-string",
107  "declaration-usage-array-boolean",
108  "declaration-usage-array-enum-number",
109  "declaration-usage-array-enum-string",
110  "declaration-usage-array-number",
111  "declaration-usage-array-string",
112  "declaration-usage-boolean",
113  "declaration-usage-combination",
114  "declaration-usage-empty",
115  "declaration-usage-enum-number",
116  "declaration-usage-enum-string",
117  "declaration-usage-number",
118  "declaration-usage-string",
119  "export",
120  "import-qualified",
121  "import-unqualified",
122  "multiple-annotations",
123]
124
125test_annotation_path =
126    "//arkcompiler/runtime_core/disassembler/tests/annotations/"
127
128foreach(file, disasm_annotation_test_files) {
129  es2abc_gen_abc("gen_${file}_abc") {
130    test_ts = "${test_annotation_path}${file}.ts"
131    test_abc = "$target_out_dir/${file}.abc"
132    src_js = rebase_path(test_ts)
133    dst_file = rebase_path(test_abc)
134    extra_args = [
135      "--enable-annotations",
136      "--module",
137      "--merge-abc",
138    ]
139    in_puts = [ test_ts ]
140    out_puts = [ test_abc ]
141  }
142}
143
144disasm_module_test_js_files = [
145  "module-requests-annotation-import",
146  "module-regular-import",
147  "module-namespace-import",
148  "module-local-export",
149  "module-indirect-export",
150  "module-start-export",
151  "module-regular-import-local-export",
152]
153
154module_test_js_path = "//arkcompiler/runtime_core/disassembler/tests/module/"
155
156foreach(file, disasm_module_test_js_files) {
157  es2abc_gen_abc("gen_${file}_abc") {
158    test_js = "${module_test_js_path}${file}.js"
159    test_abc = "$target_out_dir/${file}.abc"
160    src_js = rebase_path(test_js)
161
162    dst_file = rebase_path(test_abc)
163    extra_args = [
164      "--module",
165      "--merge-abc",
166    ]
167    in_puts = [ test_js ]
168    out_puts = [ test_abc ]
169  }
170}
171
172foreach(file, disasm_test_js_files) {
173  es2abc_gen_abc("gen_${file}_abc") {
174    test_js = "${test_js_path}${file}.js"
175    test_abc = "$target_out_dir/${file}.abc"
176    src_js = rebase_path(test_js)
177
178    dst_file = rebase_path(test_abc)
179    in_puts = [ test_js ]
180    out_puts = [ test_abc ]
181  }
182}
183
184disasm_include_dirs = [
185  "$ark_root/disassembler",
186  "$ark_root/assembler",
187  "$target_gen_dir",
188  "$target_gen_dir/../",
189  "$target_gen_dir/../../assembler",
190]
191
192script_sources = [
193  "disassembler_column_number_test.cpp",
194  "disassembler_get_file_name_test.cpp",
195  "disassembler_line_number_test.cpp",
196  "disassembler_string_test.cpp",
197  "disassembler_system_annotations_test.cpp",
198]
199
200module_sources = [
201  "disassembler_module_literal_test.cpp",
202  "disassembler_system_annotations_test.cpp",
203]
204
205host_unittest_action("DisasmModuleTest") {
206  module_out_path = module_output_path
207  sources = module_sources
208  include_dirs = disasm_include_dirs
209  configs = disasm_test_configs
210  deps = disasm_test_deps
211  test_abc_dir = rebase_path(target_out_dir)
212  defines = [ "GRAPH_TEST_ABC_DIR=\"${test_abc_dir}/\"" ]
213
214  foreach(file, disasm_module_test_js_files) {
215    deps += [ ":gen_${file}_abc" ]
216  }
217}
218
219host_unittest_action("DisasmDebugTest") {
220  module_out_path = module_output_path
221  sources = script_sources
222  include_dirs = disasm_include_dirs
223  configs = disasm_test_configs
224  deps = disasm_test_deps
225  test_abc_dir = rebase_path(target_out_dir)
226  defines = [ "GRAPH_TEST_ABC_DIR=\"${test_abc_dir}/\"" ]
227
228  foreach(file, disasm_column_test_js_files) {
229    deps += [ ":gen_${file}_abc" ]
230  }
231}
232
233host_unittest_action("DisasmReleaseTest") {
234  module_out_path = module_output_path
235  sources = script_sources
236  include_dirs = disasm_include_dirs
237  configs = disasm_test_configs
238  deps = disasm_test_deps
239  test_abc_dir = rebase_path(target_out_dir)
240  defines = [ "GRAPH_TEST_ABC_DIR=\"${test_abc_dir}/\"" ]
241
242  foreach(file, disasm_line_release_test_ts_files) {
243    deps += [ ":gen_${file}_abc" ]
244  }
245}
246
247annotations_sources = [ "disassembler_user_annotations_test.cpp" ]
248
249host_unittest_action("DisasmUserAnnotationsTest") {
250  module_out_path = module_output_path
251  sources = annotations_sources
252  include_dirs = disasm_include_dirs
253  configs = disasm_test_configs
254  deps = disasm_test_deps
255  test_abc_dir = rebase_path(target_out_dir)
256  defines = [ "GRAPH_TEST_ABC_DIR=\"${test_abc_dir}/\"" ]
257
258  foreach(file, disasm_annotation_test_files) {
259    deps += [ ":gen_${file}_abc" ]
260  }
261}
262
263host_unittest_action("DisasmScriptTest") {
264  module_out_path = module_output_path
265  sources = script_sources
266  include_dirs = disasm_include_dirs
267  configs = disasm_test_configs
268  deps = disasm_test_deps
269  test_abc_dir = rebase_path(target_out_dir)
270  defines = [ "GRAPH_TEST_ABC_DIR=\"${test_abc_dir}/\"" ]
271
272  foreach(file, disasm_test_js_files) {
273    deps += [ ":gen_${file}_abc" ]
274  }
275}
276
277host_unittest_action("DisasmImmTest") {
278  module_out_path = module_output_path
279  sources = [ "disassembler_imm_tests.cpp" ]
280  include_dirs = disasm_include_dirs
281  configs = disasm_test_configs
282  deps = disasm_test_deps
283}
284
285group("host_unittest") {
286  testonly = true
287  deps = [
288    ":DisasmDebugTestAction",
289    ":DisasmImmTestAction",
290    ":DisasmModuleTestAction",
291    ":DisasmReleaseTestAction",
292    ":DisasmScriptTestAction",
293    ":DisasmUserAnnotationsTest",
294  ]
295}
296