summaryrefslogtreecommitdiff
path: root/cmake/DemoTests.cmake
blob: 69ba5f634d4f24723186c8ff4409659662a5a163 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
# Tests Configuration
# Extracted from main CMakeLists.txt

add_demo_test(test_window HammingWindowTest audio src/tests/audio/test_window.cc ${GEN_DEMO_CC})
target_link_libraries(test_window PRIVATE audio util procedural ${DEMO_LIBS})
add_dependencies(test_window generate_demo_assets)

add_demo_test(test_maths MathUtilsTest util src/tests/util/test_maths.cc)

add_demo_test(test_file_watcher FileWatcherTest util src/tests/util/test_file_watcher.cc)
target_link_libraries(test_file_watcher PRIVATE util ${DEMO_LIBS})

add_demo_test(test_synth SynthEngineTest audio src/tests/audio/test_synth.cc ${GEN_DEMO_CC})
target_link_libraries(test_synth PRIVATE audio util procedural ${DEMO_LIBS})
add_dependencies(test_synth generate_demo_assets)

add_demo_test(test_dct DctTest audio src/tests/audio/test_dct.cc ${GEN_DEMO_CC})
target_link_libraries(test_dct PRIVATE audio util procedural ${DEMO_LIBS})
add_dependencies(test_dct generate_demo_assets)

add_demo_test(test_fft FftTest audio src/tests/audio/test_fft.cc ${GEN_DEMO_CC})
target_link_libraries(test_fft PRIVATE audio util procedural ${DEMO_LIBS})
add_dependencies(test_fft generate_demo_assets)

add_demo_test(test_spectral_brush SpectralBrushTest audio src/tests/audio/test_spectral_brush.cc ${GEN_DEMO_CC})
target_link_libraries(test_spectral_brush PRIVATE audio util procedural ${DEMO_LIBS})
add_dependencies(test_spectral_brush generate_demo_assets)

add_demo_test(test_audio_gen AudioGenTest audio src/tests/audio/test_audio_gen.cc ${GEN_DEMO_CC})
target_link_libraries(test_audio_gen PRIVATE audio util procedural ${DEMO_LIBS})
add_dependencies(test_audio_gen generate_demo_assets)

add_demo_test(test_audio_backend AudioBackendTest audio src/tests/audio/test_audio_backend.cc ${GEN_DEMO_CC})
target_link_libraries(test_audio_backend PRIVATE audio util procedural ${DEMO_LIBS})
add_dependencies(test_audio_backend generate_demo_assets)

add_demo_test(test_silent_backend SilentBackendTest audio src/tests/audio/test_silent_backend.cc ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
target_link_libraries(test_silent_backend PRIVATE audio util procedural ${DEMO_LIBS})
add_dependencies(test_silent_backend generate_demo_assets generate_tracker_music)

add_demo_test(test_mock_backend MockAudioBackendTest audio src/tests/audio/test_mock_backend.cc src/audio/backend/mock_audio_backend.cc ${GEN_DEMO_CC})
target_link_libraries(test_mock_backend PRIVATE audio util procedural ${DEMO_LIBS})
add_dependencies(test_mock_backend generate_demo_assets)

add_demo_test(test_wav_dump WavDumpBackendTest audio src/tests/audio/test_wav_dump.cc src/audio/backend/wav_dump_backend.cc ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
target_link_libraries(test_wav_dump PRIVATE audio util procedural ${DEMO_LIBS})
add_dependencies(test_wav_dump generate_demo_assets generate_tracker_music)

add_demo_test(test_jittered_audio JitteredAudioBackendTest audio src/tests/audio/test_jittered_audio.cc src/audio/backend/jittered_audio_backend.cc ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
target_link_libraries(test_jittered_audio PRIVATE audio util procedural ${DEMO_LIBS})
add_dependencies(test_jittered_audio generate_demo_assets generate_tracker_music)

add_demo_test(test_tracker_timing TrackerTimingTest audio src/tests/audio/test_tracker_timing.cc src/audio/backend/mock_audio_backend.cc ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
target_link_libraries(test_tracker_timing PRIVATE audio util procedural ${DEMO_LIBS})
add_dependencies(test_tracker_timing generate_demo_assets generate_tracker_music)

add_demo_test(test_variable_tempo VariableTempoTest audio src/tests/audio/test_variable_tempo.cc src/audio/backend/mock_audio_backend.cc ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
target_link_libraries(test_variable_tempo PRIVATE audio util procedural ${DEMO_LIBS})
add_dependencies(test_variable_tempo generate_demo_assets generate_tracker_music)

add_demo_test(test_tracker TrackerSystemTest audio src/tests/audio/test_tracker.cc ${GEN_DEMO_CC} ${GENERATED_TEST_DEMO_MUSIC_CC})
target_link_libraries(test_tracker PRIVATE audio util procedural ${DEMO_LIBS})
add_dependencies(test_tracker generate_demo_assets generate_test_demo_music)

add_demo_test(test_audio_engine AudioEngineTest audio src/tests/audio/test_audio_engine.cc ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
target_link_libraries(test_audio_engine PRIVATE audio util procedural ${DEMO_LIBS})
add_dependencies(test_audio_engine generate_demo_assets generate_tracker_music)

add_demo_test(test_shader_assets ShaderAssetValidation gpu src/tests/gpu/test_shader_assets.cc ${GEN_DEMO_CC})
target_link_libraries(test_shader_assets PRIVATE util procedural ${DEMO_LIBS})
add_dependencies(test_shader_assets generate_demo_assets)

add_demo_test(test_shader_compilation ShaderCompilationTest gpu src/tests/gpu/test_shader_compilation.cc ${PLATFORM_SOURCES} ${GEN_DEMO_CC})
target_link_libraries(test_shader_compilation PRIVATE gpu util procedural ${DEMO_LIBS})
add_dependencies(test_shader_compilation generate_demo_assets)

add_demo_test(test_noise_functions NoiseFunctionsTest gpu src/tests/gpu/test_noise_functions.cc ${PLATFORM_SOURCES} ${GEN_DEMO_CC})
target_link_libraries(test_noise_functions PRIVATE gpu util procedural ${DEMO_LIBS})
add_dependencies(test_noise_functions generate_demo_assets)

add_demo_test(test_uniform_helper UniformHelperTest gpu src/tests/gpu/test_uniform_helper.cc)
target_link_libraries(test_uniform_helper PRIVATE gpu util ${DEMO_LIBS})

add_demo_executable(test_spectool src/tests/gpu/test_spectool.cc ${PLATFORM_SOURCES} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
target_compile_definitions(test_spectool PRIVATE DEMO_BUILD_TOOLS)
target_link_libraries(test_spectool PRIVATE audio util procedural ${DEMO_LIBS})
add_dependencies(test_spectool generate_tracker_music generate_demo_assets)

add_demo_test(test_assets AssetManagerTest assets src/tests/assets/test_assets.cc ${GEN_TEST_CC})
target_include_directories(test_assets PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/src/generated_test)
target_compile_definitions(test_assets PRIVATE USE_TEST_ASSETS)
target_link_libraries(test_assets PRIVATE util procedural ${DEMO_LIBS})
add_dependencies(test_assets generate_test_assets)
set_source_files_properties(src/tests/assets/test_assets.cc PROPERTIES COMPILE_DEFINITIONS "USE_TEST_ASSETS")

add_demo_test(test_sequence SequenceSystemTest assets src/tests/assets/test_sequence.cc ${GEN_DEMO_CC} ${GENERATED_TIMELINE_CC} ${PLATFORM_SOURCES})
target_link_libraries(test_sequence PRIVATE 3d gpu util procedural ${DEMO_LIBS})
add_dependencies(test_sequence generate_timeline generate_demo_assets)

add_demo_test(test_procedural ProceduralGenTest util src/tests/util/test_procedural.cc)
target_link_libraries(test_procedural PRIVATE procedural ${DEMO_LIBS})

add_demo_test(test_physics PhysicsTest 3d src/tests/3d/test_physics.cc)
target_link_libraries(test_physics PRIVATE 3d util procedural ${DEMO_LIBS})

add_demo_test(test_3d ThreeDSystemTest 3d src/tests/3d/test_3d.cc)

add_demo_test(test_shader_composer ShaderComposerTest gpu src/tests/gpu/test_shader_composer.cc ${GEN_TEST_CC})
target_compile_definitions(test_shader_composer PRIVATE USE_TEST_ASSETS)
target_include_directories(test_shader_composer PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/src/generated_test ${CORE_INCLUDES})
target_link_libraries(test_shader_composer PRIVATE gpu util procedural ${DEMO_LIBS})
add_dependencies(test_shader_composer generate_test_assets)


add_demo_executable(test_3d_render src/tests/3d/test_3d_render.cc ${PLATFORM_SOURCES} ${GENERATED_TIMELINE_CC} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
target_link_libraries(test_3d_render PRIVATE 3d gpu audio procedural util ${DEMO_LIBS})
add_dependencies(test_3d_render generate_timeline generate_demo_assets generate_tracker_music)

add_demo_executable(test_3d_physics src/tests/3d/test_3d_physics.cc ${PLATFORM_SOURCES} ${GENERATED_TIMELINE_CC} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
target_link_libraries(test_3d_physics PRIVATE 3d gpu audio procedural util ${DEMO_LIBS})
add_dependencies(test_3d_physics generate_timeline generate_demo_assets generate_tracker_music)

add_demo_executable(test_mesh src/tests/3d/test_mesh.cc ${PLATFORM_SOURCES} ${GENERATED_TIMELINE_CC} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
target_link_libraries(test_mesh PRIVATE 3d gpu audio procedural util ${DEMO_LIBS})
add_dependencies(test_mesh generate_timeline generate_demo_assets generate_tracker_music)

add_demo_executable(test_platform src/tests/test_platform.cc ${PLATFORM_SOURCES})
target_link_libraries(test_platform PRIVATE util ${DEMO_LIBS})

add_demo_executable(test_scene_loader src/tests/3d/test_scene_loader.cc ${PLATFORM_SOURCES} ${GEN_DEMO_CC})
target_link_libraries(test_scene_loader PRIVATE 3d util procedural ${DEMO_LIBS})
add_dependencies(test_scene_loader generate_demo_assets)
add_test(NAME SceneLoaderTest COMMAND test_scene_loader)
set_tests_properties(SceneLoaderTest PROPERTIES LABELS "3d")

# GPU Effects Test Infrastructure (Phase 1: Foundation)
add_demo_test(test_effect_base EffectBaseTest gpu
    src/tests/gpu/test_effect_base.cc
    src/tests/common/webgpu_test_fixture.cc
    src/tests/common/offscreen_render_target.cc
    src/tests/common/effect_test_helpers.cc
    ${PLATFORM_SOURCES}
    ${GEN_DEMO_CC}
    ${GENERATED_TIMELINE_CC}
    ${GENERATED_MUSIC_DATA_CC})
target_link_libraries(test_effect_base PRIVATE 3d gpu audio procedural util ${DEMO_LIBS})
add_dependencies(test_effect_base generate_timeline generate_demo_assets generate_tracker_music)

# GPU Effects Test Infrastructure (Phase 2.1: Effect Classes)
add_demo_test(test_demo_effects DemoEffectsTest gpu
    src/tests/gpu/test_demo_effects.cc
    src/tests/common/webgpu_test_fixture.cc
    src/tests/common/offscreen_render_target.cc
    src/tests/common/effect_test_helpers.cc
    ${PLATFORM_SOURCES}
    ${GEN_DEMO_CC}
    ${GENERATED_TIMELINE_CC}
    ${GENERATED_MUSIC_DATA_CC})
target_link_libraries(test_demo_effects PRIVATE 3d gpu audio procedural util ${DEMO_LIBS})
add_dependencies(test_demo_effects generate_timeline generate_demo_assets generate_tracker_music)

# GPU Effects Test Infrastructure (Phase 2.2: Post-Process Utilities)
add_demo_test(test_post_process_helper PostProcessHelperTest gpu
    src/tests/gpu/test_post_process_helper.cc
    src/tests/common/webgpu_test_fixture.cc
    src/tests/common/offscreen_render_target.cc
    ${PLATFORM_SOURCES}
    ${GEN_DEMO_CC})
target_link_libraries(test_post_process_helper PRIVATE 3d gpu audio procedural util ${DEMO_LIBS})
add_dependencies(test_post_process_helper generate_demo_assets)

# TextureManager tests
add_demo_test(test_texture_manager TextureManagerTest gpu
    src/tests/gpu/test_texture_manager.cc
    src/tests/common/webgpu_test_fixture.cc
    ${PLATFORM_SOURCES}
    ${GEN_DEMO_CC})
target_link_libraries(test_texture_manager PRIVATE 3d gpu audio procedural util ${DEMO_LIBS})
add_dependencies(test_texture_manager generate_demo_assets)

# GPU Procedural Texture Test
add_demo_test(test_gpu_procedural GpuProceduralTest gpu
    src/tests/gpu/test_gpu_procedural.cc
    ${PLATFORM_SOURCES}
    ${GEN_DEMO_CC})
target_link_libraries(test_gpu_procedural PRIVATE 3d gpu audio procedural util ${DEMO_LIBS})
add_dependencies(test_gpu_procedural generate_demo_assets)

# CNN shader testing tool
add_executable(cnn_test
    tools/cnn_test.cc
    src/tests/common/webgpu_test_fixture.cc
    src/tests/common/offscreen_render_target.cc
    ${PLATFORM_SOURCES}
    ${GEN_DEMO_CC})

target_include_directories(cnn_test PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}/src
    ${CMAKE_CURRENT_SOURCE_DIR}/third_party
    ${CMAKE_CURRENT_BINARY_DIR}/src/generated
    ${CORE_INCLUDES})

target_link_libraries(cnn_test PRIVATE
    gpu util procedural ${DEMO_LIBS})

add_dependencies(cnn_test generate_demo_assets)

# Define STB_IMAGE macros
target_compile_definitions(cnn_test PRIVATE
    STB_IMAGE_IMPLEMENTATION
    STB_IMAGE_WRITE_IMPLEMENTATION)

# GPU Composite Texture Test (Phase 4)
add_demo_test(test_gpu_composite GpuCompositeTest gpu
    src/tests/gpu/test_gpu_composite.cc
    ${PLATFORM_SOURCES}
    ${GEN_DEMO_CC})
target_link_libraries(test_gpu_composite PRIVATE 3d gpu audio procedural util ${DEMO_LIBS})
add_dependencies(test_gpu_composite generate_demo_assets)

# Gantt chart output test (bash script)
add_test(
    NAME GanttOutputTest
    COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/scripts/test_gantt_output.sh
            $<TARGET_FILE:seq_compiler>
            ${CMAKE_CURRENT_SOURCE_DIR}/assets/test_gantt.seq
            ${CMAKE_CURRENT_BINARY_DIR}/test_gantt_output.txt
)
set_tests_properties(GanttOutputTest PROPERTIES LABELS "scripts")

# HTML Gantt chart output test
add_test(
    NAME GanttHtmlOutputTest
    COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/scripts/test_gantt_html.sh
            $<TARGET_FILE:seq_compiler>
            ${CMAKE_CURRENT_SOURCE_DIR}/assets/test_gantt.seq
            ${CMAKE_CURRENT_BINARY_DIR}/test_gantt_output.html
)
set_tests_properties(GanttHtmlOutputTest PROPERTIES LABELS "scripts")

# Subsystem test targets
add_custom_target(run_audio_tests
    COMMAND ${CMAKE_CTEST_COMMAND} -L audio --output-on-failure
    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
    COMMENT "Running audio subsystem tests...")

add_custom_target(run_gpu_tests
    COMMAND ${CMAKE_CTEST_COMMAND} -L gpu --output-on-failure
    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
    COMMENT "Running GPU subsystem tests...")

add_custom_target(run_3d_tests
    COMMAND ${CMAKE_CTEST_COMMAND} -L 3d --output-on-failure
    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
    COMMENT "Running 3D subsystem tests...")

add_custom_target(run_assets_tests
    COMMAND ${CMAKE_CTEST_COMMAND} -L assets --output-on-failure
    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
    COMMENT "Running asset system tests...")

add_custom_target(run_util_tests
    COMMAND ${CMAKE_CTEST_COMMAND} -L util --output-on-failure
    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
    COMMENT "Running utility tests...")

add_custom_target(run_all_tests
    COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure
    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
    COMMENT "Running all tests...")