summaryrefslogtreecommitdiff
path: root/src/tests/test_tracker_timing.cc
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-08 13:44:43 +0100
committerskal <pascal.massimino@gmail.com>2026-02-08 13:44:43 +0100
commitef457271e2d05b7459c06e12b03765dfef9ed791 (patch)
treebe22bc37e4553339f26282e33b1ea4d49136ab4a /src/tests/test_tracker_timing.cc
parentc0680b7cca988400838ba4eac3d5f17f8ab45d22 (diff)
refactor(tests): Factor common patterns in tempo tests
Reduced test code duplication by adding helpers within each file: - setup_audio_test(): eliminates 6-line init boilerplate - simulate_tempo(): replaces repeated tempo simulation loops - simulate_tempo_fn(): supports variable tempo with lambda Results: - test_variable_tempo.cc: 394→296 lines (-25%) - test_tracker_timing.cc: 322→309 lines (-4%) - Total: -111 lines, all 31 tests passing Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Diffstat (limited to 'src/tests/test_tracker_timing.cc')
-rw-r--r--src/tests/test_tracker_timing.cc35
1 files changed, 11 insertions, 24 deletions
diff --git a/src/tests/test_tracker_timing.cc b/src/tests/test_tracker_timing.cc
index a279c8e..9f15197 100644
--- a/src/tests/test_tracker_timing.cc
+++ b/src/tests/test_tracker_timing.cc
@@ -13,6 +13,12 @@
#if !defined(STRIP_ALL)
+// Helper: Setup audio engine for testing
+static void setup_audio_test(MockAudioBackend& backend, AudioEngine& engine) {
+ audio_set_backend(&backend);
+ engine.init();
+}
+
// Helper: Check if a timestamp exists in events within tolerance
static bool has_event_at_time(const std::vector<VoiceTriggerEvent>& events,
float expected_time, float tolerance = 0.001f) {
@@ -60,23 +66,16 @@ void test_basic_event_recording() {
printf("Test: Basic event recording with mock backend...\n");
MockAudioBackend backend;
- audio_set_backend(&backend);
-
AudioEngine engine;
- engine.init();
+ setup_audio_test(backend, engine);
- // Trigger at t=0.0 (should trigger initial patterns)
engine.update(0.0f, 0.0f);
-
const auto& events = backend.get_events();
printf(" Events triggered at t=0.0: %zu\n", events.size());
- // Verify we got some events
assert(events.size() > 0);
-
- // All events at t=0 should have timestamp near 0
for (const auto& evt : events) {
- assert(evt.timestamp_sec < 0.1f); // Within 100ms of start
+ assert(evt.timestamp_sec < 0.1f);
}
engine.shutdown();
@@ -87,27 +86,21 @@ void test_progressive_triggering() {
printf("Test: Progressive pattern triggering...\n");
MockAudioBackend backend;
- audio_set_backend(&backend);
-
AudioEngine engine;
- engine.init();
+ setup_audio_test(backend, engine);
- // Update at t=0
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);
- // Update at t=1.0
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);
- // Update at t=2.0
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);
- // Events should accumulate (or at least not decrease)
assert(events_at_1 >= events_at_0);
assert(events_at_2 >= events_at_1);
@@ -119,12 +112,9 @@ void test_simultaneous_triggers() {
printf("Test: SIMULTANEOUS pattern triggers at same time...\n");
MockAudioBackend backend;
- audio_set_backend(&backend);
-
AudioEngine engine;
- engine.init();
+ setup_audio_test(backend, engine);
- // Clear and update to first trigger point
backend.clear_events();
engine.update(0.0f, 0.0f);
@@ -167,12 +157,9 @@ void test_timing_monotonicity() {
printf("Test: Event timestamps are monotonically increasing...\n");
MockAudioBackend backend;
- audio_set_backend(&backend);
-
AudioEngine engine;
- engine.init();
+ setup_audio_test(backend, engine);
- // Update through several time points
for (float t = 0.0f; t <= 5.0f; t += 0.5f) {
engine.update(t, 0.5f);
}