1# Copyright 2021 The Tint Authors
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#     http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15import("${skia_root_dir}/build_overrides/build.gni")
16import("${skia_root_dir}/testing/test.gni")
17import("../tint_overrides_with_defaults.gni")
18
19###############################################################################
20# Gtest Gmock - Handle building inside and outside of Chromium.
21###############################################################################
22# When building outside of Chromium we need to define our own targets for GTest
23# and GMock. However when compiling inside of Chromium we need to reuse the
24# existing targets, both because Chromium has a special harness for swarming
25# and because otherwise the "gn check" fails.
26
27if (!build_with_chromium) {
28  # When we aren't in Chromium we define out own targets based on the location
29  # of the googletest repo.
30  config("gtest_config") {
31    include_dirs = [
32      "${tint_googletest_dir}/googletest",
33      "${tint_googletest_dir}/googletest/include",
34    ]
35  }
36  static_library("gtest") {
37    testonly = true
38    sources = [ "${tint_googletest_dir}/googletest/src/gtest-all.cc" ]
39    public_configs = [ ":gtest_config" ]
40  }
41
42  config("gmock_config") {
43    include_dirs = [
44      "${tint_googletest_dir}/googlemock",
45      "${tint_googletest_dir}/googlemock/include",
46      "${tint_googletest_dir}/googletest/include",
47    ]
48  }
49
50  static_library("gmock") {
51    testonly = true
52    sources = [ "${tint_googletest_dir}/googlemock/src/gmock-all.cc" ]
53    public_configs = [ ":gmock_config" ]
54  }
55
56  group("gmock_and_gtest") {
57    testonly = true
58    public_deps = [
59      ":gmock",
60      ":gtest",
61    ]
62  }
63} else {
64  # When we are in Chromium we reuse its targets, and also add some deps that
65  # are needed to launch the test in swarming mode.
66  group("gmock_and_gtest") {
67    testonly = true
68    public_deps = [
69      "${skia_root_dir}/base",
70      "${skia_root_dir}/base/test:test_support",
71      "${skia_root_dir}/testing/gmock",
72      "${skia_root_dir}/testing/gtest",
73      "${skia_third_party_dir}/googletest:gmock",
74    ]
75  }
76}
77
78###############################################################################
79# Wrapping of Chromium targets
80###############################################################################
81# These targets are separated because they are Chromium sources files that
82# can't use the tint_internal config, otherwise Tint's warning flags get
83# applied while compiling a bunch of Chromium's //base (via header inclusion)
84source_set("tint_unittests_main") {
85  testonly = true
86  deps = [ ":gmock_and_gtest" ]
87  if (build_with_chromium) {
88    sources = [ "${skia_root_dir}/gpu/tint_unittests_main.cc" ]
89  } else {
90    sources = [ "../src/test_main.cc" ]
91    configs += [ ":tint_unittests_config" ]
92    deps += [
93      ":tint_unittests_hlsl_writer_src",
94      ":tint_unittests_msl_writer_src",
95      ":tint_unittests_spv_reader_src",
96      "${tint_root_dir}/src:libtint",
97    ]
98  }
99}
100
101###############################################################################
102# Tests - For libtint core and optional modules
103###############################################################################
104config("tint_unittests_config") {
105  include_dirs = [
106    "${tint_googletest_dir}/googlemock/include",
107    "${tint_googletest_dir}/googletest/include",
108  ]
109
110  configs = [
111    "${tint_root_dir}/src:tint_common_config",
112    "${tint_root_dir}/src:tint_public_config",
113  ]
114}
115
116template("tint_unittests_source_set") {
117  source_set(target_name) {
118    forward_variables_from(invoker, "*", [ "configs" ])
119
120    if (defined(invoker.configs)) {
121      configs += invoker.configs
122    }
123    configs += [ ":tint_unittests_config" ]
124    if (build_with_chromium) {
125      configs -= [ "${skia_root_dir}/build/config/compiler:chromium_code" ]
126      configs += [ "${skia_root_dir}/build/config/compiler:no_chromium_code" ]
127    }
128
129    testonly = true
130
131    if (!defined(invoker.deps)) {
132      deps = []
133    }
134    deps += [
135      ":gmock_and_gtest",
136      "${tint_root_dir}/src:libtint",
137      "${tint_root_dir}/src:tint_utils_io",
138    ]
139  }
140}
141
142tint_unittests_source_set("tint_unittests_ast_src") {
143  sources = [
144    "../src/ast/alias_test.cc",
145    "../src/ast/array_test.cc",
146    "../src/ast/assignment_statement_test.cc",
147    "../src/ast/atomic_test.cc",
148    "../src/ast/binary_expression_test.cc",
149    "../src/ast/binding_decoration_test.cc",
150    "../src/ast/bitcast_expression_test.cc",
151    "../src/ast/block_statement_test.cc",
152    "../src/ast/bool_literal_expression_test.cc",
153    "../src/ast/bool_test.cc",
154    "../src/ast/break_statement_test.cc",
155    "../src/ast/builtin_decoration_test.cc",
156    "../src/ast/call_expression_test.cc",
157    "../src/ast/call_statement_test.cc",
158    "../src/ast/case_statement_test.cc",
159    "../src/ast/continue_statement_test.cc",
160    "../src/ast/depth_multisampled_texture_test.cc",
161    "../src/ast/depth_texture_test.cc",
162    "../src/ast/discard_statement_test.cc",
163    "../src/ast/else_statement_test.cc",
164    "../src/ast/external_texture_test.cc",
165    "../src/ast/f32_test.cc",
166    "../src/ast/fallthrough_statement_test.cc",
167    "../src/ast/float_literal_expression_test.cc",
168    "../src/ast/for_loop_statement_test.cc",
169    "../src/ast/function_test.cc",
170    "../src/ast/group_decoration_test.cc",
171    "../src/ast/i32_test.cc",
172    "../src/ast/identifier_expression_test.cc",
173    "../src/ast/if_statement_test.cc",
174    "../src/ast/index_accessor_expression_test.cc",
175    "../src/ast/int_literal_expression_test.cc",
176    "../src/ast/interpolate_decoration_test.cc",
177    "../src/ast/intrinsic_texture_helper_test.cc",
178    "../src/ast/intrinsic_texture_helper_test.h",
179    "../src/ast/invariant_decoration_test.cc",
180    "../src/ast/location_decoration_test.cc",
181    "../src/ast/loop_statement_test.cc",
182    "../src/ast/matrix_test.cc",
183    "../src/ast/member_accessor_expression_test.cc",
184    "../src/ast/module_clone_test.cc",
185    "../src/ast/module_test.cc",
186    "../src/ast/multisampled_texture_test.cc",
187    "../src/ast/override_decoration_test.cc",
188    "../src/ast/phony_expression_test.cc",
189    "../src/ast/pointer_test.cc",
190    "../src/ast/return_statement_test.cc",
191    "../src/ast/sampled_texture_test.cc",
192    "../src/ast/sampler_test.cc",
193    "../src/ast/sint_literal_expression_test.cc",
194    "../src/ast/stage_decoration_test.cc",
195    "../src/ast/storage_texture_test.cc",
196    "../src/ast/stride_decoration_test.cc",
197    "../src/ast/struct_member_align_decoration_test.cc",
198    "../src/ast/struct_member_offset_decoration_test.cc",
199    "../src/ast/struct_member_size_decoration_test.cc",
200    "../src/ast/struct_member_test.cc",
201    "../src/ast/struct_test.cc",
202    "../src/ast/switch_statement_test.cc",
203    "../src/ast/test_helper.h",
204    "../src/ast/texture_test.cc",
205    "../src/ast/traverse_expressions_test.cc",
206    "../src/ast/u32_test.cc",
207    "../src/ast/uint_literal_expression_test.cc",
208    "../src/ast/unary_op_expression_test.cc",
209    "../src/ast/variable_decl_statement_test.cc",
210    "../src/ast/variable_test.cc",
211    "../src/ast/vector_test.cc",
212    "../src/ast/workgroup_decoration_test.cc",
213  ]
214}
215
216tint_unittests_source_set("tint_unittests_diagnostic_src") {
217  sources = [
218    "../src/diagnostic/formatter_test.cc",
219    "../src/diagnostic/printer_test.cc",
220  ]
221}
222
223tint_unittests_source_set("tint_unittests_inspector_src") {
224  sources = [
225    "../src/inspector/inspector_test.cc",
226    "../src/inspector/test_inspector_builder.cc",
227    "../src/inspector/test_inspector_builder.h",
228    "../src/inspector/test_inspector_runner.cc",
229    "../src/inspector/test_inspector_runner.h",
230  ]
231}
232
233tint_unittests_source_set("tint_unittests_resolver_src") {
234  sources = [
235    "../src/resolver/array_accessor_test.cc",
236    "../src/resolver/assignment_validation_test.cc",
237    "../src/resolver/atomics_test.cc",
238    "../src/resolver/atomics_validation_test.cc",
239    "../src/resolver/bitcast_validation_test.cc",
240    "../src/resolver/builtins_validation_test.cc",
241    "../src/resolver/call_test.cc",
242    "../src/resolver/call_validation_test.cc",
243    "../src/resolver/compound_statement_test.cc",
244    "../src/resolver/control_block_validation_test.cc",
245    "../src/resolver/decoration_validation_test.cc",
246    "../src/resolver/dependency_graph_test.cc",
247    "../src/resolver/entry_point_validation_test.cc",
248    "../src/resolver/function_validation_test.cc",
249    "../src/resolver/host_shareable_validation_test.cc",
250    "../src/resolver/intrinsic_test.cc",
251    "../src/resolver/intrinsic_validation_test.cc",
252    "../src/resolver/is_host_shareable_test.cc",
253    "../src/resolver/is_storeable_test.cc",
254    "../src/resolver/pipeline_overridable_constant_test.cc",
255    "../src/resolver/ptr_ref_test.cc",
256    "../src/resolver/ptr_ref_validation_test.cc",
257    "../src/resolver/resolver_behavior_test.cc",
258    "../src/resolver/resolver_constants_test.cc",
259    "../src/resolver/resolver_test.cc",
260    "../src/resolver/resolver_test_helper.cc",
261    "../src/resolver/resolver_test_helper.h",
262    "../src/resolver/storage_class_layout_validation_test.cc",
263    "../src/resolver/storage_class_validation_test.cc",
264    "../src/resolver/struct_layout_test.cc",
265    "../src/resolver/struct_pipeline_stage_use_test.cc",
266    "../src/resolver/struct_storage_class_use_test.cc",
267    "../src/resolver/type_constructor_validation_test.cc",
268    "../src/resolver/type_validation_test.cc",
269    "../src/resolver/validation_test.cc",
270    "../src/resolver/var_let_test.cc",
271    "../src/resolver/var_let_validation_test.cc",
272  ]
273  deps = [ ":tint_unittests_ast_src" ]
274}
275
276tint_unittests_source_set("tint_unittests_sem_src") {
277  sources = [
278    "../src/sem/atomic_type_test.cc",
279    "../src/sem/bool_type_test.cc",
280    "../src/sem/depth_multisampled_texture_type_test.cc",
281    "../src/sem/depth_texture_type_test.cc",
282    "../src/sem/external_texture_type_test.cc",
283    "../src/sem/f32_type_test.cc",
284    "../src/sem/i32_type_test.cc",
285    "../src/sem/intrinsic_test.cc",
286    "../src/sem/matrix_type_test.cc",
287    "../src/sem/multisampled_texture_type_test.cc",
288    "../src/sem/pointer_type_test.cc",
289    "../src/sem/reference_type_test.cc",
290    "../src/sem/sampled_texture_type_test.cc",
291    "../src/sem/sampler_type_test.cc",
292    "../src/sem/sem_array_test.cc",
293    "../src/sem/sem_struct_test.cc",
294    "../src/sem/storage_texture_type_test.cc",
295    "../src/sem/texture_type_test.cc",
296    "../src/sem/type_manager_test.cc",
297    "../src/sem/u32_type_test.cc",
298    "../src/sem/vector_type_test.cc",
299  ]
300}
301
302tint_unittests_source_set("tint_unittests_transform_src") {
303  sources = [
304    "../src/transform/add_empty_entry_point_test.cc",
305    "../src/transform/array_length_from_uniform_test.cc",
306    "../src/transform/binding_remapper_test.cc",
307    "../src/transform/calculate_array_length_test.cc",
308    "../src/transform/canonicalize_entry_point_io_test.cc",
309    "../src/transform/decompose_memory_access_test.cc",
310    "../src/transform/decompose_strided_matrix_test.cc",
311    "../src/transform/external_texture_transform_test.cc",
312    "../src/transform/first_index_offset_test.cc",
313    "../src/transform/fold_constants_test.cc",
314    "../src/transform/fold_trivial_single_use_lets_test.cc",
315    "../src/transform/for_loop_to_loop_test.cc",
316    "../src/transform/loop_to_for_loop_test.cc",
317    "../src/transform/module_scope_var_to_entry_point_param_test.cc",
318    "../src/transform/multiplanar_external_texture_test.cc",
319    "../src/transform/num_workgroups_from_uniform_test.cc",
320    "../src/transform/pad_array_elements_test.cc",
321    "../src/transform/promote_initializers_to_const_var_test.cc",
322    "../src/transform/remove_phonies_test.cc",
323    "../src/transform/remove_unreachable_statements_test.cc",
324    "../src/transform/renamer_test.cc",
325    "../src/transform/robustness_test.cc",
326    "../src/transform/simplify_pointers_test.cc",
327    "../src/transform/single_entry_point_test.cc",
328    "../src/transform/test_helper.h",
329    "../src/transform/transform_test.cc",
330    "../src/transform/unshadow_test.cc",
331    "../src/transform/vectorize_scalar_matrix_constructors_test.cc",
332    "../src/transform/vertex_pulling_test.cc",
333    "../src/transform/wrap_arrays_in_structs_test.cc",
334    "../src/transform/zero_init_workgroup_memory_test.cc",
335  ]
336}
337
338tint_unittests_source_set("tint_unittests_utils_src") {
339  sources = [
340    "../src/utils/defer_test.cc",
341    "../src/utils/enum_set_test.cc",
342    "../src/utils/hash_test.cc",
343    "../src/utils/io/command_test.cc",
344    "../src/utils/io/tmpfile_test.cc",
345    "../src/utils/map_test.cc",
346    "../src/utils/math_test.cc",
347    "../src/utils/reverse_test.cc",
348    "../src/utils/scoped_assignment_test.cc",
349    "../src/utils/string_test.cc",
350    "../src/utils/transform_test.cc",
351    "../src/utils/unique_vector_test.cc",
352  ]
353}
354
355tint_unittests_source_set("tint_unittests_writer_src") {
356  sources = [
357    "../src/writer/append_vector_test.cc",
358    "../src/writer/float_to_string_test.cc",
359    "../src/writer/text_generator_test.cc",
360  ]
361}
362
363tint_unittests_source_set("tint_unittests_spv_reader_src") {
364  sources = [
365    "../src/reader/spirv/enum_converter_test.cc",
366    "../src/reader/spirv/fail_stream_test.cc",
367    "../src/reader/spirv/function_arithmetic_test.cc",
368    "../src/reader/spirv/function_bit_test.cc",
369    "../src/reader/spirv/function_call_test.cc",
370    "../src/reader/spirv/function_cfg_test.cc",
371    "../src/reader/spirv/function_composite_test.cc",
372    "../src/reader/spirv/function_conversion_test.cc",
373    "../src/reader/spirv/function_decl_test.cc",
374    "../src/reader/spirv/function_glsl_std_450_test.cc",
375    "../src/reader/spirv/function_logical_test.cc",
376    "../src/reader/spirv/function_memory_test.cc",
377    "../src/reader/spirv/function_misc_test.cc",
378    "../src/reader/spirv/function_var_test.cc",
379    "../src/reader/spirv/namer_test.cc",
380    "../src/reader/spirv/parser_impl_barrier_test.cc",
381    "../src/reader/spirv/parser_impl_convert_member_decoration_test.cc",
382    "../src/reader/spirv/parser_impl_convert_type_test.cc",
383    "../src/reader/spirv/parser_impl_function_decl_test.cc",
384    "../src/reader/spirv/parser_impl_get_decorations_test.cc",
385    "../src/reader/spirv/parser_impl_handle_test.cc",
386    "../src/reader/spirv/parser_impl_import_test.cc",
387    "../src/reader/spirv/parser_impl_module_var_test.cc",
388    "../src/reader/spirv/parser_impl_named_types_test.cc",
389    "../src/reader/spirv/parser_impl_test.cc",
390    "../src/reader/spirv/parser_impl_test_helper.cc",
391    "../src/reader/spirv/parser_impl_test_helper.h",
392    "../src/reader/spirv/parser_impl_user_name_test.cc",
393    "../src/reader/spirv/parser_test.cc",
394    "../src/reader/spirv/parser_type_test.cc",
395    "../src/reader/spirv/spirv_tools_helpers_test.cc",
396    "../src/reader/spirv/spirv_tools_helpers_test.h",
397    "../src/reader/spirv/usage_test.cc",
398  ]
399
400  deps = [ "${tint_root_dir}/src:libtint_spv_reader_src" ]
401}
402
403tint_unittests_source_set("tint_unittests_spv_writer_src") {
404  sources = [
405    "../src/writer/spirv/binary_writer_test.cc",
406    "../src/writer/spirv/builder_accessor_expression_test.cc",
407    "../src/writer/spirv/builder_assign_test.cc",
408    "../src/writer/spirv/builder_binary_expression_test.cc",
409    "../src/writer/spirv/builder_bitcast_expression_test.cc",
410    "../src/writer/spirv/builder_block_test.cc",
411    "../src/writer/spirv/builder_call_test.cc",
412    "../src/writer/spirv/builder_constructor_expression_test.cc",
413    "../src/writer/spirv/builder_discard_test.cc",
414    "../src/writer/spirv/builder_entry_point_test.cc",
415    "../src/writer/spirv/builder_format_conversion_test.cc",
416    "../src/writer/spirv/builder_function_decoration_test.cc",
417    "../src/writer/spirv/builder_function_test.cc",
418    "../src/writer/spirv/builder_function_variable_test.cc",
419    "../src/writer/spirv/builder_global_variable_test.cc",
420    "../src/writer/spirv/builder_ident_expression_test.cc",
421    "../src/writer/spirv/builder_if_test.cc",
422    "../src/writer/spirv/builder_intrinsic_test.cc",
423    "../src/writer/spirv/builder_intrinsic_texture_test.cc",
424    "../src/writer/spirv/builder_literal_test.cc",
425    "../src/writer/spirv/builder_loop_test.cc",
426    "../src/writer/spirv/builder_return_test.cc",
427    "../src/writer/spirv/builder_switch_test.cc",
428    "../src/writer/spirv/builder_test.cc",
429    "../src/writer/spirv/builder_type_test.cc",
430    "../src/writer/spirv/builder_unary_op_expression_test.cc",
431    "../src/writer/spirv/instruction_test.cc",
432    "../src/writer/spirv/operand_test.cc",
433    "../src/writer/spirv/scalar_constant_test.cc",
434    "../src/writer/spirv/spv_dump.cc",
435    "../src/writer/spirv/spv_dump.h",
436    "../src/writer/spirv/test_helper.h",
437  ]
438
439  deps = [
440    ":tint_unittests_ast_src",
441    "${tint_root_dir}/src:libtint_spv_writer_src",
442    "${tint_spirv_tools_dir}/:spvtools",
443  ]
444}
445
446tint_unittests_source_set("tint_unittests_wgsl_reader_src") {
447  sources = [
448    "../src/reader/wgsl/lexer_test.cc",
449    "../src/reader/wgsl/parser_impl_additive_expression_test.cc",
450    "../src/reader/wgsl/parser_impl_and_expression_test.cc",
451    "../src/reader/wgsl/parser_impl_argument_expression_list_test.cc",
452    "../src/reader/wgsl/parser_impl_assignment_stmt_test.cc",
453    "../src/reader/wgsl/parser_impl_body_stmt_test.cc",
454    "../src/reader/wgsl/parser_impl_break_stmt_test.cc",
455    "../src/reader/wgsl/parser_impl_bug_cases_test.cc",
456    "../src/reader/wgsl/parser_impl_call_stmt_test.cc",
457    "../src/reader/wgsl/parser_impl_case_body_test.cc",
458    "../src/reader/wgsl/parser_impl_const_expr_test.cc",
459    "../src/reader/wgsl/parser_impl_const_literal_test.cc",
460    "../src/reader/wgsl/parser_impl_continue_stmt_test.cc",
461    "../src/reader/wgsl/parser_impl_continuing_stmt_test.cc",
462    "../src/reader/wgsl/parser_impl_depth_texture_type_test.cc",
463    "../src/reader/wgsl/parser_impl_else_stmt_test.cc",
464    "../src/reader/wgsl/parser_impl_elseif_stmt_test.cc",
465    "../src/reader/wgsl/parser_impl_equality_expression_test.cc",
466    "../src/reader/wgsl/parser_impl_error_msg_test.cc",
467    "../src/reader/wgsl/parser_impl_error_resync_test.cc",
468    "../src/reader/wgsl/parser_impl_exclusive_or_expression_test.cc",
469    "../src/reader/wgsl/parser_impl_external_texture_type_test.cc",
470    "../src/reader/wgsl/parser_impl_for_stmt_test.cc",
471    "../src/reader/wgsl/parser_impl_function_decl_test.cc",
472    "../src/reader/wgsl/parser_impl_function_decoration_list_test.cc",
473    "../src/reader/wgsl/parser_impl_function_decoration_test.cc",
474    "../src/reader/wgsl/parser_impl_function_header_test.cc",
475    "../src/reader/wgsl/parser_impl_global_constant_decl_test.cc",
476    "../src/reader/wgsl/parser_impl_global_decl_test.cc",
477    "../src/reader/wgsl/parser_impl_global_variable_decl_test.cc",
478    "../src/reader/wgsl/parser_impl_if_stmt_test.cc",
479    "../src/reader/wgsl/parser_impl_image_storage_type_test.cc",
480    "../src/reader/wgsl/parser_impl_inclusive_or_expression_test.cc",
481    "../src/reader/wgsl/parser_impl_logical_and_expression_test.cc",
482    "../src/reader/wgsl/parser_impl_logical_or_expression_test.cc",
483    "../src/reader/wgsl/parser_impl_loop_stmt_test.cc",
484    "../src/reader/wgsl/parser_impl_multiplicative_expression_test.cc",
485    "../src/reader/wgsl/parser_impl_param_list_test.cc",
486    "../src/reader/wgsl/parser_impl_paren_rhs_stmt_test.cc",
487    "../src/reader/wgsl/parser_impl_pipeline_stage_test.cc",
488    "../src/reader/wgsl/parser_impl_primary_expression_test.cc",
489    "../src/reader/wgsl/parser_impl_relational_expression_test.cc",
490    "../src/reader/wgsl/parser_impl_reserved_keyword_test.cc",
491    "../src/reader/wgsl/parser_impl_sampled_texture_type_test.cc",
492    "../src/reader/wgsl/parser_impl_sampler_type_test.cc",
493    "../src/reader/wgsl/parser_impl_shift_expression_test.cc",
494    "../src/reader/wgsl/parser_impl_singular_expression_test.cc",
495    "../src/reader/wgsl/parser_impl_statement_test.cc",
496    "../src/reader/wgsl/parser_impl_statements_test.cc",
497    "../src/reader/wgsl/parser_impl_storage_class_test.cc",
498    "../src/reader/wgsl/parser_impl_storage_texture_type_test.cc",
499    "../src/reader/wgsl/parser_impl_struct_body_decl_test.cc",
500    "../src/reader/wgsl/parser_impl_struct_decl_test.cc",
501    "../src/reader/wgsl/parser_impl_struct_decoration_decl_test.cc",
502    "../src/reader/wgsl/parser_impl_struct_decoration_test.cc",
503    "../src/reader/wgsl/parser_impl_struct_member_decoration_decl_test.cc",
504    "../src/reader/wgsl/parser_impl_struct_member_decoration_test.cc",
505    "../src/reader/wgsl/parser_impl_struct_member_test.cc",
506    "../src/reader/wgsl/parser_impl_switch_body_test.cc",
507    "../src/reader/wgsl/parser_impl_switch_stmt_test.cc",
508    "../src/reader/wgsl/parser_impl_test.cc",
509    "../src/reader/wgsl/parser_impl_test_helper.cc",
510    "../src/reader/wgsl/parser_impl_test_helper.h",
511    "../src/reader/wgsl/parser_impl_texture_sampler_types_test.cc",
512    "../src/reader/wgsl/parser_impl_type_alias_test.cc",
513    "../src/reader/wgsl/parser_impl_type_decl_test.cc",
514    "../src/reader/wgsl/parser_impl_unary_expression_test.cc",
515    "../src/reader/wgsl/parser_impl_variable_decl_test.cc",
516    "../src/reader/wgsl/parser_impl_variable_decoration_list_test.cc",
517    "../src/reader/wgsl/parser_impl_variable_decoration_test.cc",
518    "../src/reader/wgsl/parser_impl_variable_ident_decl_test.cc",
519    "../src/reader/wgsl/parser_impl_variable_qualifier_test.cc",
520    "../src/reader/wgsl/parser_impl_variable_stmt_test.cc",
521    "../src/reader/wgsl/parser_test.cc",
522    "../src/reader/wgsl/token_test.cc",
523  ]
524
525  deps = [ "${tint_root_dir}/src:libtint_wgsl_reader_src" ]
526}
527
528tint_unittests_source_set("tint_unittests_wgsl_writer_src") {
529  sources = [
530    "../src/writer/wgsl/generator_impl_alias_type_test.cc",
531    "../src/writer/wgsl/generator_impl_array_accessor_test.cc",
532    "../src/writer/wgsl/generator_impl_assign_test.cc",
533    "../src/writer/wgsl/generator_impl_binary_test.cc",
534    "../src/writer/wgsl/generator_impl_bitcast_test.cc",
535    "../src/writer/wgsl/generator_impl_block_test.cc",
536    "../src/writer/wgsl/generator_impl_break_test.cc",
537    "../src/writer/wgsl/generator_impl_call_test.cc",
538    "../src/writer/wgsl/generator_impl_case_test.cc",
539    "../src/writer/wgsl/generator_impl_cast_test.cc",
540    "../src/writer/wgsl/generator_impl_constructor_test.cc",
541    "../src/writer/wgsl/generator_impl_continue_test.cc",
542    "../src/writer/wgsl/generator_impl_discard_test.cc",
543    "../src/writer/wgsl/generator_impl_fallthrough_test.cc",
544    "../src/writer/wgsl/generator_impl_function_test.cc",
545    "../src/writer/wgsl/generator_impl_global_decl_test.cc",
546    "../src/writer/wgsl/generator_impl_identifier_test.cc",
547    "../src/writer/wgsl/generator_impl_if_test.cc",
548    "../src/writer/wgsl/generator_impl_literal_test.cc",
549    "../src/writer/wgsl/generator_impl_loop_test.cc",
550    "../src/writer/wgsl/generator_impl_member_accessor_test.cc",
551    "../src/writer/wgsl/generator_impl_return_test.cc",
552    "../src/writer/wgsl/generator_impl_switch_test.cc",
553    "../src/writer/wgsl/generator_impl_test.cc",
554    "../src/writer/wgsl/generator_impl_type_test.cc",
555    "../src/writer/wgsl/generator_impl_unary_op_test.cc",
556    "../src/writer/wgsl/generator_impl_variable_decl_statement_test.cc",
557    "../src/writer/wgsl/generator_impl_variable_test.cc",
558    "../src/writer/wgsl/test_helper.h",
559  ]
560
561  deps = [
562    ":tint_unittests_ast_src",
563    "${tint_root_dir}/src:libtint_wgsl_writer_src",
564  ]
565}
566
567tint_unittests_source_set("tint_unittests_msl_writer_src") {
568  sources = [
569    "../src/writer/msl/generator_impl_array_accessor_test.cc",
570    "../src/writer/msl/generator_impl_assign_test.cc",
571    "../src/writer/msl/generator_impl_binary_test.cc",
572    "../src/writer/msl/generator_impl_bitcast_test.cc",
573    "../src/writer/msl/generator_impl_block_test.cc",
574    "../src/writer/msl/generator_impl_break_test.cc",
575    "../src/writer/msl/generator_impl_call_test.cc",
576    "../src/writer/msl/generator_impl_case_test.cc",
577    "../src/writer/msl/generator_impl_cast_test.cc",
578    "../src/writer/msl/generator_impl_constructor_test.cc",
579    "../src/writer/msl/generator_impl_continue_test.cc",
580    "../src/writer/msl/generator_impl_discard_test.cc",
581    "../src/writer/msl/generator_impl_function_test.cc",
582    "../src/writer/msl/generator_impl_identifier_test.cc",
583    "../src/writer/msl/generator_impl_if_test.cc",
584    "../src/writer/msl/generator_impl_import_test.cc",
585    "../src/writer/msl/generator_impl_intrinsic_test.cc",
586    "../src/writer/msl/generator_impl_intrinsic_texture_test.cc",
587    "../src/writer/msl/generator_impl_loop_test.cc",
588    "../src/writer/msl/generator_impl_member_accessor_test.cc",
589    "../src/writer/msl/generator_impl_module_constant_test.cc",
590    "../src/writer/msl/generator_impl_return_test.cc",
591    "../src/writer/msl/generator_impl_sanitizer_test.cc",
592    "../src/writer/msl/generator_impl_switch_test.cc",
593    "../src/writer/msl/generator_impl_test.cc",
594    "../src/writer/msl/generator_impl_type_test.cc",
595    "../src/writer/msl/generator_impl_unary_op_test.cc",
596    "../src/writer/msl/generator_impl_variable_decl_statement_test.cc",
597    "../src/writer/msl/test_helper.h",
598  ]
599
600  deps = [
601    ":tint_unittests_ast_src",
602    "${tint_root_dir}/src:libtint_msl_writer_src",
603  ]
604}
605
606tint_unittests_source_set("tint_unittests_hlsl_writer_src") {
607  sources = [
608    "../src/writer/hlsl/generator_impl_array_accessor_test.cc",
609    "../src/writer/hlsl/generator_impl_assign_test.cc",
610    "../src/writer/hlsl/generator_impl_binary_test.cc",
611    "../src/writer/hlsl/generator_impl_bitcast_test.cc",
612    "../src/writer/hlsl/generator_impl_block_test.cc",
613    "../src/writer/hlsl/generator_impl_break_test.cc",
614    "../src/writer/hlsl/generator_impl_call_test.cc",
615    "../src/writer/hlsl/generator_impl_case_test.cc",
616    "../src/writer/hlsl/generator_impl_cast_test.cc",
617    "../src/writer/hlsl/generator_impl_constructor_test.cc",
618    "../src/writer/hlsl/generator_impl_continue_test.cc",
619    "../src/writer/hlsl/generator_impl_discard_test.cc",
620    "../src/writer/hlsl/generator_impl_function_test.cc",
621    "../src/writer/hlsl/generator_impl_identifier_test.cc",
622    "../src/writer/hlsl/generator_impl_if_test.cc",
623    "../src/writer/hlsl/generator_impl_import_test.cc",
624    "../src/writer/hlsl/generator_impl_intrinsic_test.cc",
625    "../src/writer/hlsl/generator_impl_intrinsic_texture_test.cc",
626    "../src/writer/hlsl/generator_impl_loop_test.cc",
627    "../src/writer/hlsl/generator_impl_member_accessor_test.cc",
628    "../src/writer/hlsl/generator_impl_module_constant_test.cc",
629    "../src/writer/hlsl/generator_impl_return_test.cc",
630    "../src/writer/hlsl/generator_impl_sanitizer_test.cc",
631    "../src/writer/hlsl/generator_impl_switch_test.cc",
632    "../src/writer/hlsl/generator_impl_test.cc",
633    "../src/writer/hlsl/generator_impl_type_test.cc",
634    "../src/writer/hlsl/generator_impl_unary_op_test.cc",
635    "../src/writer/hlsl/generator_impl_variable_decl_statement_test.cc",
636    "../src/writer/hlsl/generator_impl_workgroup_var_test.cc",
637    "../src/writer/hlsl/test_helper.h",
638  ]
639
640  deps = [
641    ":tint_unittests_ast_src",
642    "${tint_root_dir}/src:libtint_hlsl_writer_src",
643  ]
644}
645
646tint_unittests_source_set("tint_unittests_glsl_writer_src") {
647  sources = [
648    "../src/transform/glsl_test.cc",
649    "../src/writer/glsl/generator_impl_array_accessor_test.cc",
650    "../src/writer/glsl/generator_impl_assign_test.cc",
651    "../src/writer/glsl/generator_impl_binary_test.cc",
652    "../src/writer/glsl/generator_impl_bitcast_test.cc",
653    "../src/writer/glsl/generator_impl_block_test.cc",
654    "../src/writer/glsl/generator_impl_break_test.cc",
655    "../src/writer/glsl/generator_impl_call_test.cc",
656    "../src/writer/glsl/generator_impl_case_test.cc",
657    "../src/writer/glsl/generator_impl_cast_test.cc",
658    "../src/writer/glsl/generator_impl_constructor_test.cc",
659    "../src/writer/glsl/generator_impl_continue_test.cc",
660    "../src/writer/glsl/generator_impl_discard_test.cc",
661    "../src/writer/glsl/generator_impl_function_test.cc",
662    "../src/writer/glsl/generator_impl_identifier_test.cc",
663    "../src/writer/glsl/generator_impl_if_test.cc",
664    "../src/writer/glsl/generator_impl_import_test.cc",
665    "../src/writer/glsl/generator_impl_intrinsic_test.cc",
666    "../src/writer/glsl/generator_impl_intrinsic_texture_test.cc",
667    "../src/writer/glsl/generator_impl_loop_test.cc",
668    "../src/writer/glsl/generator_impl_member_accessor_test.cc",
669    "../src/writer/glsl/generator_impl_module_constant_test.cc",
670    "../src/writer/glsl/generator_impl_return_test.cc",
671    "../src/writer/glsl/generator_impl_sanitizer_test.cc",
672    "../src/writer/glsl/generator_impl_switch_test.cc",
673    "../src/writer/glsl/generator_impl_test.cc",
674    "../src/writer/glsl/generator_impl_type_test.cc",
675    "../src/writer/glsl/generator_impl_unary_op_test.cc",
676    "../src/writer/glsl/generator_impl_variable_decl_statement_test.cc",
677    "../src/writer/glsl/generator_impl_workgroup_var_test.cc",
678    "../src/writer/glsl/test_helper.h",
679  ]
680
681  deps = [
682    ":tint_unittests_ast_src",
683    ":tint_unittests_transform_src",
684    "${tint_root_dir}/src:libtint_glsl_writer_src",
685  ]
686}
687
688tint_unittests_source_set("tint_unittests_core_src") {
689  sources = [
690    "../src/block_allocator_test.cc",
691    "../src/castable_test.cc",
692    "../src/clone_context_test.cc",
693    "../src/debug_test.cc",
694    "../src/demangler_test.cc",
695    "../src/intrinsic_table_test.cc",
696    "../src/program_builder_test.cc",
697    "../src/program_test.cc",
698    "../src/scope_stack_test.cc",
699    "../src/symbol_table_test.cc",
700    "../src/symbol_test.cc",
701    "../src/traits_test.cc",
702  ]
703
704  deps = [ ":tint_unittests_ast_src" ]
705}
706
707if (build_with_chromium) {
708  tint_unittests_source_set("tint_unittests_fuzzer_src") {
709    sources = [ "../fuzzers/random_generator_test.cc" ]
710
711    deps = [
712      ":tint_unittests_core_src",
713      "${tint_root_dir}/fuzzers:tint_fuzzer_common_src",
714    ]
715  }
716}
717
718source_set("tint_unittests_src") {
719  testonly = true
720
721  deps = [
722    ":tint_unittests_ast_src",
723    ":tint_unittests_core_src",
724    ":tint_unittests_diagnostic_src",
725    ":tint_unittests_inspector_src",
726    ":tint_unittests_resolver_src",
727    ":tint_unittests_sem_src",
728    ":tint_unittests_transform_src",
729    ":tint_unittests_utils_src",
730    ":tint_unittests_writer_src",
731    "${tint_root_dir}/src:libtint_wgsl_reader_src",
732    "${tint_root_dir}/src:libtint_wgsl_writer_src",
733  ]
734
735  if (tint_build_spv_reader) {
736    deps += [ ":tint_unittests_spv_reader_src" ]
737  }
738
739  if (tint_build_spv_writer) {
740    deps += [ ":tint_unittests_spv_writer_src" ]
741  }
742
743  if (tint_build_wgsl_reader) {
744    deps += [ ":tint_unittests_wgsl_reader_src" ]
745  }
746
747  if (tint_build_wgsl_writer) {
748    deps += [ ":tint_unittests_wgsl_writer_src" ]
749  }
750
751  if (tint_build_msl_writer) {
752    deps += [ ":tint_unittests_msl_writer_src" ]
753  }
754
755  if (tint_build_hlsl_writer) {
756    deps += [ ":tint_unittests_hlsl_writer_src" ]
757  }
758
759  if (tint_build_glsl_writer) {
760    deps += [ ":tint_unittests_glsl_writer_src" ]
761  }
762
763  if (build_with_chromium) {
764    deps += [ ":tint_unittests_fuzzer_src" ]
765  }
766
767  configs += [ ":tint_unittests_config" ]
768
769  if (build_with_chromium) {
770    configs -= [ "${skia_root_dir}/build/config/compiler:chromium_code" ]
771    configs += [ "${skia_root_dir}/build/config/compiler:no_chromium_code" ]
772  }
773}
774
775test("tint_unittests") {
776  deps = [
777    ":gmock_and_gtest",
778    ":tint_unittests_src",
779    "${tint_spirv_tools_dir}/:spvtools",
780    "${tint_spirv_tools_dir}/:spvtools_opt",
781    "${tint_spirv_tools_dir}/:spvtools_val",
782  ]
783
784  deps += [ ":tint_unittests_main" ]
785
786  configs += [ ":tint_unittests_config" ]
787
788  if (build_with_chromium) {
789    configs -= [ "${skia_root_dir}/build/config/compiler:chromium_code" ]
790    configs += [ "${skia_root_dir}/build/config/compiler:no_chromium_code" ]
791  }
792
793  testonly = true
794}
795