# 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 (only when STRIP_ALL is OFF) if(NOT DEMO_STRIP_ALL) 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) endif() # 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 $ ${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 $ ${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...")