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_tracker.cc | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) (limited to 'src/tests/audio/test_tracker.cc') diff --git a/src/tests/audio/test_tracker.cc b/src/tests/audio/test_tracker.cc index 6be2a8d..1112e91 100644 --- a/src/tests/audio/test_tracker.cc +++ b/src/tests/audio/test_tracker.cc @@ -5,6 +5,7 @@ #include "audio/gen.h" #include "audio/synth.h" #include "audio/tracker.h" +#include "../common/audio_test_fixture.h" // #include "generated/music_data.h" // Will be generated by tracker_compiler #include #include @@ -17,15 +18,12 @@ extern const uint32_t g_tracker_patterns_count; extern const TrackerScore g_tracker_score; void test_tracker_init() { - AudioEngine engine; - engine.init(); + AudioTestFixture fixture; printf("Tracker init test PASSED\n"); - engine.shutdown(); } void test_tracker_pattern_triggering() { - AudioEngine engine; - engine.init(); + AudioTestFixture fixture; // At time 0.0f, 3 patterns are triggered: // - crash (1 event at beat 0.0) @@ -37,31 +35,30 @@ void test_tracker_pattern_triggering() { // drums_basic: // 0.00, ASSET_KICK_1 // 0.00, NOTE_A4 - engine.update(0.0f, 0.0f); + fixture.engine().update(0.0f, 0.0f); // Expect 2 voices: kick + note - assert(engine.get_active_voice_count() == 2); + assert(fixture.engine().get_active_voice_count() == 2); // Test 2: At music_time = 0.25f (beat 0.5 @ 120 BPM), snare event triggers // 0.25, ASSET_SNARE_1 - engine.update(0.25f, 0.0f); + fixture.engine().update(0.25f, 0.0f); // Expect at least 2 voices (snare + maybe others) // Exact count depends on sample duration (kick/note might have finished) - int voices = engine.get_active_voice_count(); + int voices = fixture.engine().get_active_voice_count(); assert(voices >= 2); // Test 3: At music_time = 0.5f (beat 1.0), kick event triggers // 0.50, ASSET_KICK_1 - engine.update(0.5f, 0.0f); + fixture.engine().update(0.5f, 0.0f); // Expect at least 3 voices (new kick + others) - assert(engine.get_active_voice_count() >= 3); + assert(fixture.engine().get_active_voice_count() >= 3); // Test 4: Advance to 2.0f - new patterns trigger at time 2.0f - engine.update(2.0f, 0.0f); + fixture.engine().update(2.0f, 0.0f); // Many events have triggered by now - assert(engine.get_active_voice_count() > 5); + assert(fixture.engine().get_active_voice_count() > 5); printf("Tracker pattern triggering test PASSED\n"); - engine.shutdown(); } int main() { -- cgit v1.2.3