diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-14 02:39:49 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-14 02:39:49 +0100 |
| commit | 8dd77545b5ec2f45ce46b98dd7d94a3c4a13e290 (patch) | |
| tree | a338b9c1356da64a609621155c81d8d96f7ca7fe /src/tests/audio/test_tracker_timing.cc | |
| parent | c007d7fa6ddb1936108aeca156b2a4bda425ca84 (diff) | |
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 <noreply@anthropic.com>
Diffstat (limited to 'src/tests/audio/test_tracker_timing.cc')
| -rw-r--r-- | src/tests/audio/test_tracker_timing.cc | 60 |
1 files changed, 26 insertions, 34 deletions
diff --git a/src/tests/audio/test_tracker_timing.cc b/src/tests/audio/test_tracker_timing.cc index 9f15197..7295de3 100644 --- a/src/tests/audio/test_tracker_timing.cc +++ b/src/tests/audio/test_tracker_timing.cc @@ -7,6 +7,7 @@ #include "audio/backend/mock_audio_backend.h" #include "audio/synth.h" #include "audio/tracker.h" +#include "../common/audio_test_fixture.h" #include <assert.h> #include <cmath> #include <stdio.h> @@ -14,9 +15,10 @@ #if !defined(STRIP_ALL) // Helper: Setup audio engine for testing -static void setup_audio_test(MockAudioBackend& backend, AudioEngine& engine) { +static AudioTestFixture* +setup_audio_test(MockAudioBackend& backend) { audio_set_backend(&backend); - engine.init(); + return new AudioTestFixture(); } // Helper: Check if a timestamp exists in events within tolerance @@ -66,10 +68,9 @@ void test_basic_event_recording() { printf("Test: Basic event recording with mock backend...\n"); MockAudioBackend backend; - AudioEngine engine; - setup_audio_test(backend, engine); + AudioTestFixture* fixture = setup_audio_test(backend); - engine.update(0.0f, 0.0f); + fixture->engine().update(0.0f, 0.0f); const auto& events = backend.get_events(); printf(" Events triggered at t=0.0: %zu\n", events.size()); @@ -78,7 +79,7 @@ void test_basic_event_recording() { assert(evt.timestamp_sec < 0.1f); } - engine.shutdown(); + delete fixture; printf(" ✓ Basic event recording works\n"); } @@ -86,25 +87,24 @@ void test_progressive_triggering() { printf("Test: Progressive pattern triggering...\n"); MockAudioBackend backend; - AudioEngine engine; - setup_audio_test(backend, engine); + AudioTestFixture* fixture = setup_audio_test(backend); - engine.update(0.0f, 0.0f); + fixture->engine().update(0.0f, 0.0f); const size_t events_at_0 = backend.get_events().size(); printf(" Events at t=0.0: %zu\n", events_at_0); - engine.update(1.0f, 0.0f); + fixture->engine().update(1.0f, 0.0f); const size_t events_at_1 = backend.get_events().size(); printf(" Events at t=1.0: %zu\n", events_at_1); - engine.update(2.0f, 0.0f); + fixture->engine().update(2.0f, 0.0f); const size_t events_at_2 = backend.get_events().size(); printf(" Events at t=2.0: %zu\n", events_at_2); assert(events_at_1 >= events_at_0); assert(events_at_2 >= events_at_1); - engine.shutdown(); + delete fixture; printf(" ✓ Events accumulate over time\n"); } @@ -112,11 +112,10 @@ void test_simultaneous_triggers() { printf("Test: SIMULTANEOUS pattern triggers at same time...\n"); MockAudioBackend backend; - AudioEngine engine; - setup_audio_test(backend, engine); + AudioTestFixture* fixture = setup_audio_test(backend); backend.clear_events(); - engine.update(0.0f, 0.0f); + fixture->engine().update(0.0f, 0.0f); const auto& events = backend.get_events(); if (events.size() == 0) { @@ -150,18 +149,17 @@ void test_simultaneous_triggers() { printf(" ℹ Only one event at t=0.0, cannot verify simultaneity\n"); } - engine.shutdown(); + delete fixture; } void test_timing_monotonicity() { printf("Test: Event timestamps are monotonically increasing...\n"); MockAudioBackend backend; - AudioEngine engine; - setup_audio_test(backend, engine); + AudioTestFixture* fixture = setup_audio_test(backend); for (float t = 0.0f; t <= 5.0f; t += 0.5f) { - engine.update(t, 0.5f); + fixture->engine().update(t, 0.5f); } const auto& events = backend.get_events(); @@ -172,7 +170,7 @@ void test_timing_monotonicity() { assert(events[i].timestamp_sec >= events[i - 1].timestamp_sec); } - engine.shutdown(); + delete fixture; printf(" ✓ All timestamps monotonically increasing\n"); } @@ -183,8 +181,7 @@ void test_seek_simulation() { audio_set_backend(&backend); audio_init(); - AudioEngine engine; - engine.init(); + AudioTestFixture fixture; // Simulate seeking to t=3.0s by rendering silent audio // This should trigger all patterns in range [0, 3.0] @@ -194,10 +191,10 @@ void test_seek_simulation() { float t = 0.0f; const float step = 0.1f; while (t <= seek_target) { - engine.update(t, step); + fixture.engine().update(t, step); // Simulate audio rendering float dummy_buffer[512 * 2]; - engine.render(dummy_buffer, 512); + fixture.engine().render(dummy_buffer, 512); t += step; } @@ -214,7 +211,6 @@ void test_seek_simulation() { assert(evt.timestamp_sec <= seek_target + 0.5f); } - engine.shutdown(); audio_shutdown(); printf(" ✓ Seek simulation works correctly\n"); @@ -226,12 +222,11 @@ void test_timestamp_clustering() { MockAudioBackend backend; audio_set_backend(&backend); - AudioEngine engine; - engine.init(); + AudioTestFixture fixture; // Update through the first 4 seconds for (float t = 0.0f; t <= 4.0f; t += 0.1f) { - engine.update(t, 0.1f); + fixture.engine().update(t, 0.1f); } const auto& events = backend.get_events(); @@ -249,7 +244,6 @@ void test_timestamp_clustering() { } } - engine.shutdown(); printf(" ✓ Timestamp clustering analyzed\n"); } @@ -260,11 +254,10 @@ void test_render_integration() { audio_set_backend(&backend); audio_init(); - AudioEngine engine; - engine.init(); + AudioTestFixture fixture; // Trigger some patterns - engine.update(0.0f, 0.0f); + fixture.engine().update(0.0f, 0.0f); const size_t events_before = backend.get_events().size(); // Render 1 second of silent audio @@ -276,13 +269,12 @@ void test_render_integration() { assert(backend_time >= 0.9f && backend_time <= 1.1f); // Trigger more patterns after time advance - engine.update(1.0f, 0.0f); + fixture.engine().update(1.0f, 0.0f); const size_t events_after = backend.get_events().size(); printf(" Events before: %zu, after: %zu\n", events_before, events_after); assert(events_after >= events_before); - engine.shutdown(); audio_shutdown(); printf(" ✓ audio_render_silent integration works\n"); |
