diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-09 20:27:04 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-09 20:27:04 +0100 |
| commit | eff8d43479e7704df65fae2a80eefa787213f502 (patch) | |
| tree | 76f2fb8fe8d3db2c15179449df2cf12f7f54e0bf | |
| parent | 12378b1b7e9091ba59895b4360b2fa959180a56a (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.txt | 160 | ||||
| -rw-r--r-- | doc/CONTRIBUTING.md | 3 | ||||
| -rw-r--r-- | doc/HOWTO.md | 16 | ||||
| -rwxr-xr-x | scripts/check_all.sh | 6 | ||||
| -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 |
