diff options
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"); |
