From 8dd77545b5ec2f45ce46b98dd7d94a3c4a13e290 Mon Sep 17 00:00:00 2001 From: skal Date: Sat, 14 Feb 2026 02:39:49 +0100 Subject: Factor common test patterns into reusable utilities Refactor duplicated test setup/teardown code into shared fixtures: - test_math_helpers.h: Float comparison (test_near, test_near_vec3) - AudioTestFixture: RAII wrapper for AudioEngine lifecycle - EffectTestFixture: Combined WebGPU + AudioEngine + MainSequence Migrated 9 test files (3 math, 6 audio) to use fixtures. Net reduction: 54 LOC (178 insertions, 232 deletions). All 34 tests passing. Co-Authored-By: Claude Sonnet 4.5 --- src/tests/audio/test_audio_engine.cc | 71 ++++++++++++++---------------------- 1 file changed, 27 insertions(+), 44 deletions(-) (limited to 'src/tests/audio/test_audio_engine.cc') diff --git a/src/tests/audio/test_audio_engine.cc b/src/tests/audio/test_audio_engine.cc index 3b29dcd..72c1653 100644 --- a/src/tests/audio/test_audio_engine.cc +++ b/src/tests/audio/test_audio_engine.cc @@ -4,6 +4,7 @@ #include "audio/audio_engine.h" #include "audio/tracker.h" #include "generated/assets.h" +#include "../common/audio_test_fixture.h" #include #include @@ -13,19 +14,13 @@ void test_audio_engine_lifecycle() { printf("Test: AudioEngine lifecycle...\n"); - AudioEngine engine; - printf(" Created AudioEngine object...\n"); - - engine.init(); - printf(" Initialized AudioEngine...\n"); + AudioTestFixture fixture; + printf(" Created and initialized AudioEngine...\n"); // Verify initialization - assert(engine.get_active_voice_count() == 0); + assert(fixture.engine().get_active_voice_count() == 0); printf(" Verified voice count is 0...\n"); - engine.shutdown(); - printf(" Shutdown AudioEngine...\n"); - printf(" ✓ AudioEngine lifecycle test passed\n"); } @@ -33,16 +28,15 @@ void test_audio_engine_lifecycle() { void test_audio_engine_music_loading() { printf("Test: AudioEngine music data loading...\n"); - AudioEngine engine; - engine.init(); + AudioTestFixture fixture; // Load global music data - engine.load_music_data(&g_tracker_score, g_tracker_samples, - g_tracker_sample_assets, g_tracker_samples_count); + fixture.load_music(&g_tracker_score, g_tracker_samples, + g_tracker_sample_assets, g_tracker_samples_count); // Verify resource manager was initialized (samples registered but not loaded // yet) - SpectrogramResourceManager* res_mgr = engine.get_resource_manager(); + SpectrogramResourceManager* res_mgr = fixture.engine().get_resource_manager(); assert(res_mgr != nullptr); // Initially, no samples should be loaded (lazy loading) @@ -51,8 +45,6 @@ void test_audio_engine_music_loading() { printf(" ✓ Music data loaded: %u samples registered\n", g_tracker_samples_count); - engine.shutdown(); - printf(" ✓ AudioEngine music loading test passed\n"); } @@ -60,14 +52,13 @@ void test_audio_engine_music_loading() { void test_audio_engine_manual_resource_loading() { printf("Test: AudioEngine manual resource loading...\n"); - AudioEngine engine; - engine.init(); + AudioTestFixture fixture; // Load music data - engine.load_music_data(&g_tracker_score, g_tracker_samples, - g_tracker_sample_assets, g_tracker_samples_count); + fixture.load_music(&g_tracker_score, g_tracker_samples, + g_tracker_sample_assets, g_tracker_samples_count); - SpectrogramResourceManager* res_mgr = engine.get_resource_manager(); + SpectrogramResourceManager* res_mgr = fixture.engine().get_resource_manager(); const int initial_loaded = res_mgr->get_loaded_count(); assert(initial_loaded == 0); // No samples loaded yet @@ -89,8 +80,6 @@ void test_audio_engine_manual_resource_loading() { assert(spec1 != nullptr); assert(spec2 != nullptr); - engine.shutdown(); - printf(" ✓ AudioEngine manual resource loading test passed\n"); } @@ -98,13 +87,12 @@ void test_audio_engine_manual_resource_loading() { void test_audio_engine_reset() { printf("Test: AudioEngine reset...\n"); - AudioEngine engine; - engine.init(); + AudioTestFixture fixture; - engine.load_music_data(&g_tracker_score, g_tracker_samples, - g_tracker_sample_assets, g_tracker_samples_count); + fixture.load_music(&g_tracker_score, g_tracker_samples, + g_tracker_sample_assets, g_tracker_samples_count); - SpectrogramResourceManager* res_mgr = engine.get_resource_manager(); + SpectrogramResourceManager* res_mgr = fixture.engine().get_resource_manager(); // Manually load some samples res_mgr->preload(0); @@ -115,10 +103,10 @@ void test_audio_engine_reset() { assert(loaded_before_reset == 3); // Reset engine - engine.reset(); + fixture.engine().reset(); // After reset, state should be cleared - assert(engine.get_active_voice_count() == 0); + assert(fixture.engine().get_active_voice_count() == 0); // Resources should be marked as unloaded (but memory not freed) const int loaded_after_reset = res_mgr->get_loaded_count(); @@ -126,8 +114,6 @@ void test_audio_engine_reset() { loaded_before_reset, loaded_after_reset); assert(loaded_after_reset == 0); - engine.shutdown(); - printf(" ✓ AudioEngine reset test passed\n"); } @@ -136,25 +122,22 @@ void test_audio_engine_reset() { void test_audio_engine_seeking() { printf("Test: AudioEngine seeking...\n"); - AudioEngine engine; - engine.init(); + AudioTestFixture fixture; - engine.load_music_data(&g_tracker_score, g_tracker_samples, - g_tracker_sample_assets, g_tracker_samples_count); + fixture.load_music(&g_tracker_score, g_tracker_samples, + g_tracker_sample_assets, g_tracker_samples_count); // Seek to t=5.0s - engine.seek(5.0f); - assert(engine.get_time() == 5.0f); + fixture.engine().seek(5.0f); + assert(fixture.engine().get_time() == 5.0f); // Seek backward to t=2.0s - engine.seek(2.0f); - assert(engine.get_time() == 2.0f); + fixture.engine().seek(2.0f); + assert(fixture.engine().get_time() == 2.0f); // Seek to beginning - engine.seek(0.0f); - assert(engine.get_time() == 0.0f); - - engine.shutdown(); + fixture.engine().seek(0.0f); + assert(fixture.engine().get_time() == 0.0f); printf(" ✓ AudioEngine seeking test passed\n"); } -- cgit v1.2.3