summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-09 20:27:04 +0100
committerskal <pascal.massimino@gmail.com>2026-02-09 20:27:04 +0100
commiteff8d43479e7704df65fae2a80eefa787213f502 (patch)
tree76f2fb8fe8d3db2c15179449df2cf12f7f54e0bf
parent12378b1b7e9091ba59895b4360b2fa959180a56a (diff)
refactor: Reorganize tests into subsystem subdirectories
Restructured test suite for better organization and targeted testing: **Structure:** - src/tests/audio/ - 15 audio system tests - src/tests/gpu/ - 12 GPU/shader tests - src/tests/3d/ - 6 3D rendering tests - src/tests/assets/ - 2 asset system tests - src/tests/util/ - 3 utility tests - src/tests/common/ - 3 shared test helpers - src/tests/scripts/ - 2 bash test scripts (moved conceptually, not physically) **CMake changes:** - Updated add_demo_test macro to accept LABEL parameter - Applied CTest labels to all 36 tests for subsystem filtering - Updated all test file paths in CMakeLists.txt - Fixed common helper paths (webgpu_test_fixture, etc.) - Added custom targets for subsystem testing: - run_audio_tests, run_gpu_tests, run_3d_tests - run_assets_tests, run_util_tests, run_all_tests **Include path updates:** - Fixed relative includes in GPU tests to reference ../common/ **Documentation:** - Updated doc/HOWTO.md with subsystem test commands - Updated doc/CONTRIBUTING.md with new test organization - Updated scripts/check_all.sh to reflect new structure **Verification:** - All 36 tests passing (100%) - ctest -L <subsystem> filters work correctly - make run_<subsystem>_tests targets functional - scripts/check_all.sh passes Backward compatible: make test and ctest continue to work unchanged. handoff(Gemini): Test reorganization complete. 36/36 tests passing.
-rw-r--r--CMakeLists.txt160
-rw-r--r--doc/CONTRIBUTING.md3
-rw-r--r--doc/HOWTO.md16
-rwxr-xr-xscripts/check_all.sh6
-rw-r--r--src/tests/3d/test_3d.cc (renamed from src/tests/test_3d.cc)0
-rw-r--r--src/tests/3d/test_3d_physics.cc (renamed from src/tests/test_3d_physics.cc)0
-rw-r--r--src/tests/3d/test_3d_render.cc (renamed from src/tests/test_3d_render.cc)0
-rw-r--r--src/tests/3d/test_mesh.cc (renamed from src/tests/test_mesh.cc)0
-rw-r--r--src/tests/3d/test_physics.cc (renamed from src/tests/test_physics.cc)0
-rw-r--r--src/tests/3d/test_scene_loader.cc (renamed from src/tests/test_scene_loader.cc)0
-rw-r--r--src/tests/assets/test_assets.cc (renamed from src/tests/test_assets.cc)0
-rw-r--r--src/tests/assets/test_sequence.cc (renamed from src/tests/test_sequence.cc)0
-rw-r--r--src/tests/audio/test_audio_backend.cc (renamed from src/tests/test_audio_backend.cc)0
-rw-r--r--src/tests/audio/test_audio_engine.cc (renamed from src/tests/test_audio_engine.cc)0
-rw-r--r--src/tests/audio/test_audio_gen.cc (renamed from src/tests/test_audio_gen.cc)0
-rw-r--r--src/tests/audio/test_dct.cc (renamed from src/tests/test_dct.cc)0
-rw-r--r--src/tests/audio/test_fft.cc (renamed from src/tests/test_fft.cc)0
-rw-r--r--src/tests/audio/test_jittered_audio.cc (renamed from src/tests/test_jittered_audio.cc)0
-rw-r--r--src/tests/audio/test_mock_backend.cc (renamed from src/tests/test_mock_backend.cc)0
-rw-r--r--src/tests/audio/test_silent_backend.cc (renamed from src/tests/test_silent_backend.cc)0
-rw-r--r--src/tests/audio/test_spectral_brush.cc (renamed from src/tests/test_spectral_brush.cc)0
-rw-r--r--src/tests/audio/test_synth.cc (renamed from src/tests/test_synth.cc)0
-rw-r--r--src/tests/audio/test_tracker.cc (renamed from src/tests/test_tracker.cc)0
-rw-r--r--src/tests/audio/test_tracker_timing.cc (renamed from src/tests/test_tracker_timing.cc)0
-rw-r--r--src/tests/audio/test_variable_tempo.cc (renamed from src/tests/test_variable_tempo.cc)0
-rw-r--r--src/tests/audio/test_wav_dump.cc (renamed from src/tests/test_wav_dump.cc)0
-rw-r--r--src/tests/audio/test_window.cc (renamed from src/tests/test_window.cc)0
-rw-r--r--src/tests/common/effect_test_helpers.cc (renamed from src/tests/effect_test_helpers.cc)0
-rw-r--r--src/tests/common/effect_test_helpers.h (renamed from src/tests/effect_test_helpers.h)0
-rw-r--r--src/tests/common/offscreen_render_target.cc (renamed from src/tests/offscreen_render_target.cc)0
-rw-r--r--src/tests/common/offscreen_render_target.h (renamed from src/tests/offscreen_render_target.h)0
-rw-r--r--src/tests/common/webgpu_test_fixture.cc (renamed from src/tests/webgpu_test_fixture.cc)0
-rw-r--r--src/tests/common/webgpu_test_fixture.h (renamed from src/tests/webgpu_test_fixture.h)0
-rw-r--r--src/tests/gpu/test_demo_effects.cc (renamed from src/tests/test_demo_effects.cc)4
-rw-r--r--src/tests/gpu/test_effect_base.cc (renamed from src/tests/test_effect_base.cc)6
-rw-r--r--src/tests/gpu/test_gpu_composite.cc (renamed from src/tests/test_gpu_composite.cc)0
-rw-r--r--src/tests/gpu/test_gpu_procedural.cc (renamed from src/tests/test_gpu_procedural.cc)0
-rw-r--r--src/tests/gpu/test_noise_functions.cc (renamed from src/tests/test_noise_functions.cc)0
-rw-r--r--src/tests/gpu/test_post_process_helper.cc (renamed from src/tests/test_post_process_helper.cc)4
-rw-r--r--src/tests/gpu/test_shader_assets.cc (renamed from src/tests/test_shader_assets.cc)0
-rw-r--r--src/tests/gpu/test_shader_compilation.cc (renamed from src/tests/test_shader_compilation.cc)0
-rw-r--r--src/tests/gpu/test_shader_composer.cc (renamed from src/tests/test_shader_composer.cc)0
-rw-r--r--src/tests/gpu/test_spectool.cc (renamed from src/tests/test_spectool.cc)0
-rw-r--r--src/tests/gpu/test_texture_manager.cc (renamed from src/tests/test_texture_manager.cc)2
-rw-r--r--src/tests/gpu/test_uniform_helper.cc (renamed from src/tests/test_uniform_helper.cc)0
-rw-r--r--src/tests/util/test_file_watcher.cc (renamed from src/tests/test_file_watcher.cc)0
-rw-r--r--src/tests/util/test_maths.cc (renamed from src/tests/test_maths.cc)0
-rw-r--r--src/tests/util/test_procedural.cc (renamed from src/tests/test_procedural.cc)0
48 files changed, 135 insertions, 66 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ede06ee..ee3dfc3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -72,6 +72,21 @@ endif()
parse_workspace_config("${WORKSPACE_DIR}")
message(STATUS "Using workspace: ${DEMO_WORKSPACE}")
+#-- - Configuration Summary -- -
+message(STATUS "")
+message(STATUS "Build Configuration:")
+message(STATUS " DEMO_SIZE_OPT: ${DEMO_SIZE_OPT}")
+message(STATUS " DEMO_STRIP_ALL: ${DEMO_STRIP_ALL}")
+message(STATUS " DEMO_FINAL_STRIP: ${DEMO_FINAL_STRIP}")
+message(STATUS " DEMO_STRIP_EXTERNAL_LIBS: ${DEMO_STRIP_EXTERNAL_LIBS}")
+message(STATUS " DEMO_BUILD_TESTS: ${DEMO_BUILD_TESTS}")
+message(STATUS " DEMO_BUILD_TOOLS: ${DEMO_BUILD_TOOLS}")
+message(STATUS " DEMO_ENABLE_COVERAGE: ${DEMO_ENABLE_COVERAGE}")
+message(STATUS " DEMO_ENABLE_DEBUG_LOGS: ${DEMO_ENABLE_DEBUG_LOGS}")
+message(STATUS " DEMO_HEADLESS: ${DEMO_HEADLESS}")
+message(STATUS " DEMO_WORKSPACE: ${DEMO_WORKSPACE}")
+message(STATUS "")
+
#-- - Platform Detection and Core Setup -- -
if(APPLE)
add_definitions(-DGLFW_EXPOSE_NATIVE_COCOA)
@@ -360,9 +375,10 @@ macro(add_demo_executable NAME)
# target_link_libraries must be called manually to ensure correct order
endmacro()
-macro(add_demo_test NAME TEST_NAME)
+macro(add_demo_test NAME TEST_NAME LABEL)
add_executable(${NAME} ${ARGN})
add_test(NAME ${TEST_NAME} COMMAND ${NAME})
+ set_tests_properties(${TEST_NAME} PROPERTIES LABELS "${LABEL}")
endmacro()
#-- - Generation Targets -- -
@@ -531,143 +547,144 @@ endif()
#-- - Tests -- -
enable_testing()
if(DEMO_BUILD_TESTS)
- add_demo_test(test_window HammingWindowTest src/tests/test_window.cc ${GEN_DEMO_CC})
+ 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 src/tests/test_maths.cc)
+ add_demo_test(test_maths MathUtilsTest util src/tests/util/test_maths.cc)
- add_demo_test(test_file_watcher FileWatcherTest src/tests/test_file_watcher.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 src/tests/test_synth.cc ${GEN_DEMO_CC})
+ 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 src/tests/test_dct.cc ${GEN_DEMO_CC})
+ 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 src/tests/test_fft.cc ${GEN_DEMO_CC})
+ 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 src/tests/test_spectral_brush.cc ${GEN_DEMO_CC})
+ 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 src/tests/test_audio_gen.cc ${GEN_DEMO_CC})
+ 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 src/tests/test_audio_backend.cc ${GEN_DEMO_CC})
+ 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 src/tests/test_silent_backend.cc ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
+ 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 src/tests/test_mock_backend.cc src/audio/backend/mock_audio_backend.cc ${GEN_DEMO_CC})
+ 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 src/tests/test_wav_dump.cc src/audio/backend/wav_dump_backend.cc ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
+ 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 src/tests/test_jittered_audio.cc src/audio/backend/jittered_audio_backend.cc ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
+ 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 src/tests/test_tracker_timing.cc src/audio/backend/mock_audio_backend.cc ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
+ 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 src/tests/test_variable_tempo.cc src/audio/backend/mock_audio_backend.cc ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
+ 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 src/tests/test_tracker.cc ${GEN_DEMO_CC} ${GENERATED_TEST_DEMO_MUSIC_CC})
+ 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 src/tests/test_audio_engine.cc ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
+ 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 src/tests/test_shader_assets.cc ${GEN_DEMO_CC})
+ 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 src/tests/test_shader_compilation.cc ${PLATFORM_SOURCES} ${GEN_DEMO_CC})
+ 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 src/tests/test_noise_functions.cc ${PLATFORM_SOURCES} ${GEN_DEMO_CC})
+ 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 src/tests/test_uniform_helper.cc)
+ 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/test_spectool.cc ${PLATFORM_SOURCES} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
+ 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 src/tests/test_assets.cc ${GEN_TEST_CC})
+ 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/test_assets.cc PROPERTIES COMPILE_DEFINITIONS "USE_TEST_ASSETS")
+ set_source_files_properties(src/tests/assets/test_assets.cc PROPERTIES COMPILE_DEFINITIONS "USE_TEST_ASSETS")
- add_demo_test(test_sequence SequenceSystemTest src/tests/test_sequence.cc ${GEN_DEMO_CC} ${GENERATED_TIMELINE_CC} ${PLATFORM_SOURCES})
+ 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 src/tests/test_procedural.cc)
+ 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 src/tests/test_physics.cc)
+ 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 src/tests/test_3d.cc)
+ add_demo_test(test_3d ThreeDSystemTest 3d src/tests/3d/test_3d.cc)
- add_demo_test(test_shader_composer ShaderComposerTest src/tests/test_shader_composer.cc ${GEN_TEST_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/test_3d_render.cc ${PLATFORM_SOURCES} ${GENERATED_TIMELINE_CC} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
+ 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/test_3d_physics.cc ${PLATFORM_SOURCES} ${GENERATED_TIMELINE_CC} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
+ 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/test_mesh.cc ${PLATFORM_SOURCES} ${GENERATED_TIMELINE_CC} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC})
+ 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/test_scene_loader.cc ${PLATFORM_SOURCES} ${GEN_DEMO_CC})
+ 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
- src/tests/test_effect_base.cc
- src/tests/webgpu_test_fixture.cc
- src/tests/offscreen_render_target.cc
- src/tests/effect_test_helpers.cc
+ 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}
@@ -676,11 +693,11 @@ if(DEMO_BUILD_TESTS)
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
- src/tests/test_demo_effects.cc
- src/tests/webgpu_test_fixture.cc
- src/tests/offscreen_render_target.cc
- src/tests/effect_test_helpers.cc
+ 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}
@@ -689,35 +706,35 @@ if(DEMO_BUILD_TESTS)
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
- src/tests/test_post_process_helper.cc
- src/tests/webgpu_test_fixture.cc
- src/tests/offscreen_render_target.cc
+ 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
- src/tests/test_texture_manager.cc
- src/tests/webgpu_test_fixture.cc
+ 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
- src/tests/test_gpu_procedural.cc
+ 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)
# GPU Composite Texture Test (Phase 4)
- add_demo_test(test_gpu_composite GpuCompositeTest
- src/tests/test_gpu_composite.cc
+ 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})
@@ -731,6 +748,7 @@ if(DEMO_BUILD_TESTS)
${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(
@@ -740,6 +758,38 @@ if(DEMO_BUILD_TESTS)
${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...")
endif()
# Sub-task 7: Integrate validation tool into CI/build system
diff --git a/doc/CONTRIBUTING.md b/doc/CONTRIBUTING.md
index 3344b18..9cd785b 100644
--- a/doc/CONTRIBUTING.md
+++ b/doc/CONTRIBUTING.md
@@ -18,6 +18,9 @@ cmake -S . -B build -DDEMO_BUILD_TESTS=ON -DDEMO_BUILD_TOOLS=ON
cmake --build build -j4
cd build && ctest --output-on-failure
+# OR run subsystem tests:
+# make run_audio_tests run_gpu_tests run_3d_tests run_assets_tests run_util_tests
+
# 2. Windows (if mingw-w64 installed)
./scripts/build_win.sh
```
diff --git a/doc/HOWTO.md b/doc/HOWTO.md
index cafcf4a..bdc0214 100644
--- a/doc/HOWTO.md
+++ b/doc/HOWTO.md
@@ -62,10 +62,26 @@ Measures demo vs external library size. See `doc/SIZE_MEASUREMENT.md`.
## Testing
+### Run All Tests
```bash
cmake -B build -DDEMO_BUILD_TESTS=ON
cmake --build build -j4
cd build && ctest
+# OR: make run_all_tests
+```
+
+### Run Subsystem Tests
+```bash
+make run_audio_tests # Audio system tests
+make run_gpu_tests # GPU/shader tests
+make run_3d_tests # 3D rendering tests
+make run_assets_tests # Asset system tests
+make run_util_tests # Utility tests
+```
+
+### Run Specific Test
+```bash
+./build/test_synth
```
---
diff --git a/scripts/check_all.sh b/scripts/check_all.sh
index 113d3f0..81d4c93 100755
--- a/scripts/check_all.sh
+++ b/scripts/check_all.sh
@@ -4,8 +4,8 @@
#
# What it verifies:
# 1. Native build (macOS/Linux) with all tests and tools
-# 2. All 26 tests pass
-# 3. All tools compile (spectool, specview, specplay)
+# 2. All 36 tests pass
+# 3. All tools compile
# 4. Windows cross-compilation (if mingw-w64 available)
#
# Usage: ./scripts/check_all.sh
@@ -20,7 +20,7 @@ cmake --build build -j8
echo "Running test suite..."
(cd build && ctest --output-on-failure)
echo "Verifying tools compile..."
-cmake --build build --target spectool specview specplay -j8
+cmake --build build --target test_spectool -j8
echo ""
echo "--- Running Windows Cross-Compilation Build ---"
diff --git a/src/tests/test_3d.cc b/src/tests/3d/test_3d.cc
index e0fb2e0..e0fb2e0 100644
--- a/src/tests/test_3d.cc
+++ b/src/tests/3d/test_3d.cc
diff --git a/src/tests/test_3d_physics.cc b/src/tests/3d/test_3d_physics.cc
index eb1f5ef..eb1f5ef 100644
--- a/src/tests/test_3d_physics.cc
+++ b/src/tests/3d/test_3d_physics.cc
diff --git a/src/tests/test_3d_render.cc b/src/tests/3d/test_3d_render.cc
index eee46ba..eee46ba 100644
--- a/src/tests/test_3d_render.cc
+++ b/src/tests/3d/test_3d_render.cc
diff --git a/src/tests/test_mesh.cc b/src/tests/3d/test_mesh.cc
index 2129bc8..2129bc8 100644
--- a/src/tests/test_mesh.cc
+++ b/src/tests/3d/test_mesh.cc
diff --git a/src/tests/test_physics.cc b/src/tests/3d/test_physics.cc
index df21e70..df21e70 100644
--- a/src/tests/test_physics.cc
+++ b/src/tests/3d/test_physics.cc
diff --git a/src/tests/test_scene_loader.cc b/src/tests/3d/test_scene_loader.cc
index 21bcbaa..21bcbaa 100644
--- a/src/tests/test_scene_loader.cc
+++ b/src/tests/3d/test_scene_loader.cc
diff --git a/src/tests/test_assets.cc b/src/tests/assets/test_assets.cc
index 2ee18d6..2ee18d6 100644
--- a/src/tests/test_assets.cc
+++ b/src/tests/assets/test_assets.cc
diff --git a/src/tests/test_sequence.cc b/src/tests/assets/test_sequence.cc
index d79ec1d..d79ec1d 100644
--- a/src/tests/test_sequence.cc
+++ b/src/tests/assets/test_sequence.cc
diff --git a/src/tests/test_audio_backend.cc b/src/tests/audio/test_audio_backend.cc
index 6a748aa..6a748aa 100644
--- a/src/tests/test_audio_backend.cc
+++ b/src/tests/audio/test_audio_backend.cc
diff --git a/src/tests/test_audio_engine.cc b/src/tests/audio/test_audio_engine.cc
index 3b29dcd..3b29dcd 100644
--- a/src/tests/test_audio_engine.cc
+++ b/src/tests/audio/test_audio_engine.cc
diff --git a/src/tests/test_audio_gen.cc b/src/tests/audio/test_audio_gen.cc
index ebdcb25..ebdcb25 100644
--- a/src/tests/test_audio_gen.cc
+++ b/src/tests/audio/test_audio_gen.cc
diff --git a/src/tests/test_dct.cc b/src/tests/audio/test_dct.cc
index 89b7964..89b7964 100644
--- a/src/tests/test_dct.cc
+++ b/src/tests/audio/test_dct.cc
diff --git a/src/tests/test_fft.cc b/src/tests/audio/test_fft.cc
index 2151608..2151608 100644
--- a/src/tests/test_fft.cc
+++ b/src/tests/audio/test_fft.cc
diff --git a/src/tests/test_jittered_audio.cc b/src/tests/audio/test_jittered_audio.cc
index d8260ec..d8260ec 100644
--- a/src/tests/test_jittered_audio.cc
+++ b/src/tests/audio/test_jittered_audio.cc
diff --git a/src/tests/test_mock_backend.cc b/src/tests/audio/test_mock_backend.cc
index defd73d..defd73d 100644
--- a/src/tests/test_mock_backend.cc
+++ b/src/tests/audio/test_mock_backend.cc
diff --git a/src/tests/test_silent_backend.cc b/src/tests/audio/test_silent_backend.cc
index 8daacf7..8daacf7 100644
--- a/src/tests/test_silent_backend.cc
+++ b/src/tests/audio/test_silent_backend.cc
diff --git a/src/tests/test_spectral_brush.cc b/src/tests/audio/test_spectral_brush.cc
index ae1862a..ae1862a 100644
--- a/src/tests/test_spectral_brush.cc
+++ b/src/tests/audio/test_spectral_brush.cc
diff --git a/src/tests/test_synth.cc b/src/tests/audio/test_synth.cc
index 12cbc54..12cbc54 100644
--- a/src/tests/test_synth.cc
+++ b/src/tests/audio/test_synth.cc
diff --git a/src/tests/test_tracker.cc b/src/tests/audio/test_tracker.cc
index 6be2a8d..6be2a8d 100644
--- a/src/tests/test_tracker.cc
+++ b/src/tests/audio/test_tracker.cc
diff --git a/src/tests/test_tracker_timing.cc b/src/tests/audio/test_tracker_timing.cc
index 9f15197..9f15197 100644
--- a/src/tests/test_tracker_timing.cc
+++ b/src/tests/audio/test_tracker_timing.cc
diff --git a/src/tests/test_variable_tempo.cc b/src/tests/audio/test_variable_tempo.cc
index bbc9ebf..bbc9ebf 100644
--- a/src/tests/test_variable_tempo.cc
+++ b/src/tests/audio/test_variable_tempo.cc
diff --git a/src/tests/test_wav_dump.cc b/src/tests/audio/test_wav_dump.cc
index eb14652..eb14652 100644
--- a/src/tests/test_wav_dump.cc
+++ b/src/tests/audio/test_wav_dump.cc
diff --git a/src/tests/test_window.cc b/src/tests/audio/test_window.cc
index bac4a4b..bac4a4b 100644
--- a/src/tests/test_window.cc
+++ b/src/tests/audio/test_window.cc
diff --git a/src/tests/effect_test_helpers.cc b/src/tests/common/effect_test_helpers.cc
index 9250366..9250366 100644
--- a/src/tests/effect_test_helpers.cc
+++ b/src/tests/common/effect_test_helpers.cc
diff --git a/src/tests/effect_test_helpers.h b/src/tests/common/effect_test_helpers.h
index 33355ee..33355ee 100644
--- a/src/tests/effect_test_helpers.h
+++ b/src/tests/common/effect_test_helpers.h
diff --git a/src/tests/offscreen_render_target.cc b/src/tests/common/offscreen_render_target.cc
index 9f65e9a..9f65e9a 100644
--- a/src/tests/offscreen_render_target.cc
+++ b/src/tests/common/offscreen_render_target.cc
diff --git a/src/tests/offscreen_render_target.h b/src/tests/common/offscreen_render_target.h
index 10c12aa..10c12aa 100644
--- a/src/tests/offscreen_render_target.h
+++ b/src/tests/common/offscreen_render_target.h
diff --git a/src/tests/webgpu_test_fixture.cc b/src/tests/common/webgpu_test_fixture.cc
index afb7ce3..afb7ce3 100644
--- a/src/tests/webgpu_test_fixture.cc
+++ b/src/tests/common/webgpu_test_fixture.cc
diff --git a/src/tests/webgpu_test_fixture.h b/src/tests/common/webgpu_test_fixture.h
index e10a2ed..e10a2ed 100644
--- a/src/tests/webgpu_test_fixture.h
+++ b/src/tests/common/webgpu_test_fixture.h
diff --git a/src/tests/test_demo_effects.cc b/src/tests/gpu/test_demo_effects.cc
index 0d2b09a..8a7d8af 100644
--- a/src/tests/test_demo_effects.cc
+++ b/src/tests/gpu/test_demo_effects.cc
@@ -10,10 +10,10 @@
// 3. If the effect requires Renderer3D, add it to requires_3d check in
// test_scene_effects()
-#include "effect_test_helpers.h"
+#include "../common/effect_test_helpers.h"
#include "gpu/demo_effects.h"
#include "gpu/effect.h"
-#include "webgpu_test_fixture.h"
+#include "../common/webgpu_test_fixture.h"
#include <cassert>
#include <cstdio>
#include <cstring>
diff --git a/src/tests/test_effect_base.cc b/src/tests/gpu/test_effect_base.cc
index 612e9da..08cf0a1 100644
--- a/src/tests/test_effect_base.cc
+++ b/src/tests/gpu/test_effect_base.cc
@@ -2,11 +2,11 @@
// It tests the Effect/Sequence/MainSequence lifecycle using headless rendering.
// Verifies effect initialization, activation, and basic rendering.
-#include "effect_test_helpers.h"
+#include "../common/effect_test_helpers.h"
#include "gpu/demo_effects.h"
#include "gpu/effect.h"
-#include "offscreen_render_target.h"
-#include "webgpu_test_fixture.h"
+#include "../common/offscreen_render_target.h"
+#include "../common/webgpu_test_fixture.h"
#include <cassert>
#include <cstdio>
#include <memory>
diff --git a/src/tests/test_gpu_composite.cc b/src/tests/gpu/test_gpu_composite.cc
index e5ac788..e5ac788 100644
--- a/src/tests/test_gpu_composite.cc
+++ b/src/tests/gpu/test_gpu_composite.cc
diff --git a/src/tests/test_gpu_procedural.cc b/src/tests/gpu/test_gpu_procedural.cc
index f1bade0..f1bade0 100644
--- a/src/tests/test_gpu_procedural.cc
+++ b/src/tests/gpu/test_gpu_procedural.cc
diff --git a/src/tests/test_noise_functions.cc b/src/tests/gpu/test_noise_functions.cc
index f8dfc93..f8dfc93 100644
--- a/src/tests/test_noise_functions.cc
+++ b/src/tests/gpu/test_noise_functions.cc
diff --git a/src/tests/test_post_process_helper.cc b/src/tests/gpu/test_post_process_helper.cc
index 36d193e..868bf26 100644
--- a/src/tests/test_post_process_helper.cc
+++ b/src/tests/gpu/test_post_process_helper.cc
@@ -4,8 +4,8 @@
#include "gpu/demo_effects.h"
#include "gpu/gpu.h"
-#include "offscreen_render_target.h"
-#include "webgpu_test_fixture.h"
+#include "../common/offscreen_render_target.h"
+#include "../common/webgpu_test_fixture.h"
#include <cassert>
#include <cstdio>
diff --git a/src/tests/test_shader_assets.cc b/src/tests/gpu/test_shader_assets.cc
index f1562ea..f1562ea 100644
--- a/src/tests/test_shader_assets.cc
+++ b/src/tests/gpu/test_shader_assets.cc
diff --git a/src/tests/test_shader_compilation.cc b/src/tests/gpu/test_shader_compilation.cc
index a322e8a..a322e8a 100644
--- a/src/tests/test_shader_compilation.cc
+++ b/src/tests/gpu/test_shader_compilation.cc
diff --git a/src/tests/test_shader_composer.cc b/src/tests/gpu/test_shader_composer.cc
index a98a259..a98a259 100644
--- a/src/tests/test_shader_composer.cc
+++ b/src/tests/gpu/test_shader_composer.cc
diff --git a/src/tests/test_spectool.cc b/src/tests/gpu/test_spectool.cc
index 984322a..984322a 100644
--- a/src/tests/test_spectool.cc
+++ b/src/tests/gpu/test_spectool.cc
diff --git a/src/tests/test_texture_manager.cc b/src/tests/gpu/test_texture_manager.cc
index c25c07c..54a1a8a 100644
--- a/src/tests/test_texture_manager.cc
+++ b/src/tests/gpu/test_texture_manager.cc
@@ -4,7 +4,7 @@
#include "gpu/texture_manager.h"
#include "procedural/generator.h"
-#include "webgpu_test_fixture.h"
+#include "../common/webgpu_test_fixture.h"
#include <cassert>
#include <cstdio>
#include <cstring>
diff --git a/src/tests/test_uniform_helper.cc b/src/tests/gpu/test_uniform_helper.cc
index cc1bf59..cc1bf59 100644
--- a/src/tests/test_uniform_helper.cc
+++ b/src/tests/gpu/test_uniform_helper.cc
diff --git a/src/tests/test_file_watcher.cc b/src/tests/util/test_file_watcher.cc
index ac13afd..ac13afd 100644
--- a/src/tests/test_file_watcher.cc
+++ b/src/tests/util/test_file_watcher.cc
diff --git a/src/tests/test_maths.cc b/src/tests/util/test_maths.cc
index 0fed85c..0fed85c 100644
--- a/src/tests/test_maths.cc
+++ b/src/tests/util/test_maths.cc
diff --git a/src/tests/test_procedural.cc b/src/tests/util/test_procedural.cc
index e9f9a02..e9f9a02 100644
--- a/src/tests/test_procedural.cc
+++ b/src/tests/util/test_procedural.cc