fix: process commands in tests after engine API calls

Co-authored-by: aider (deepseek/deepseek-coder) <aider@aider.chat>
This commit is contained in:
Loic Coenen
2026-05-01 15:06:49 +00:00
parent 32270aaddb
commit e405518942
2 changed files with 39 additions and 0 deletions

View File

@@ -86,6 +86,7 @@ void test_trigger_empty_starts_recording(void) {
Engine *engine = create_test_engine();
engine_trigger_clip(engine, 0);
engine_process_commands(engine);
assert(engine->clips[0].state == CLIP_RECORDING);
assert(engine->clips[0].write_position == 0);
@@ -100,6 +101,7 @@ void test_trigger_recording_starts_looping(void) {
// Start recording
engine_trigger_clip(engine, 0);
engine_process_commands(engine);
assert(engine->clips[0].state == CLIP_RECORDING);
// Simulate some recording
@@ -107,6 +109,7 @@ void test_trigger_recording_starts_looping(void) {
// Trigger again to stop recording and start looping
engine_trigger_clip(engine, 0);
engine_process_commands(engine);
assert(engine->clips[0].state == CLIP_LOOPING);
assert(engine->clips[0].buffer_size == 100);
assert(engine->clips[0].read_position == 0);
@@ -126,6 +129,7 @@ void test_trigger_looping_stops(void) {
engine->clips[0].read_position = 50;
engine_trigger_clip(engine, 0);
engine_process_commands(engine);
assert(engine->clips[0].state == CLIP_STOPPED);
assert(engine->clips[0].read_position == 0);
@@ -143,6 +147,7 @@ void test_trigger_stopped_resumes_looping(void) {
engine->clips[0].buffer_size = 100;
engine_trigger_clip(engine, 0);
engine_process_commands(engine);
assert(engine->clips[0].state == CLIP_LOOPING);
assert(engine->clips[0].read_position == 0);
@@ -157,20 +162,24 @@ void test_full_cycle(void) {
// Empty -> Recording
engine_trigger_clip(engine, 0);
engine_process_commands(engine);
assert(engine->clips[0].state == CLIP_RECORDING);
// Recording -> Looping
engine->clips[0].write_position = 200;
engine_trigger_clip(engine, 0);
engine_process_commands(engine);
assert(engine->clips[0].state == CLIP_LOOPING);
assert(engine->clips[0].buffer_size == 200);
// Looping -> Stopped
engine_trigger_clip(engine, 0);
engine_process_commands(engine);
assert(engine->clips[0].state == CLIP_STOPPED);
// Stopped -> Looping
engine_trigger_clip(engine, 0);
engine_process_commands(engine);
assert(engine->clips[0].state == CLIP_LOOPING);
destroy_test_engine(engine);
@@ -184,20 +193,24 @@ void test_multiple_clips(void) {
// Clip 0: Empty -> Recording
engine_trigger_clip(engine, 0);
engine_process_commands(engine);
assert(engine->clips[0].state == CLIP_RECORDING);
// Clip 1: Empty -> Recording
engine_trigger_clip(engine, 1);
engine_process_commands(engine);
assert(engine->clips[1].state == CLIP_RECORDING);
// Clip 0: Recording -> Looping
engine->clips[0].write_position = 100;
engine_trigger_clip(engine, 0);
engine_process_commands(engine);
assert(engine->clips[0].state == CLIP_LOOPING);
assert(engine->clips[1].state == CLIP_RECORDING); // Clip 1 unaffected
// Clip 2: Empty -> Recording
engine_trigger_clip(engine, 2);
engine_process_commands(engine);
assert(engine->clips[2].state == CLIP_RECORDING);
destroy_test_engine(engine);
@@ -216,6 +229,7 @@ void test_reset_clip(void) {
engine->clips[0].read_position = 50;
engine_reset_clip(engine, 0);
engine_process_commands(engine);
assert(engine->clips[0].state == CLIP_EMPTY);
assert(engine->clips[0].buffer_size == 0);
assert(engine->clips[0].write_position == 0);
@@ -274,6 +288,7 @@ void test_buffer_overflow(void) {
// Start recording
engine_trigger_clip(engine, 0);
engine_process_commands(engine);
assert(engine->clips[0].state == CLIP_RECORDING);
// Fill buffer to max
@@ -281,6 +296,7 @@ void test_buffer_overflow(void) {
// Trigger should stop recording and start looping
engine_trigger_clip(engine, 0);
engine_process_commands(engine);
assert(engine->clips[0].state == CLIP_LOOPING);
assert(engine->clips[0].buffer_size == MAX_BUFFER_SIZE);
@@ -316,6 +332,7 @@ void test_transport_reset(void) {
engine->transport.sample_position = 10000;
engine_reset_transport(engine);
engine_process_commands(engine);
assert(engine->transport.rolling == false);
assert(engine->transport.clock_count == 0);
@@ -335,12 +352,15 @@ void test_quantize_mode_setting(void) {
assert(engine->quantize_mode == QUANTIZE_OFF);
engine_set_quantize_mode(engine, QUANTIZE_BEAT);
engine_process_commands(engine);
assert(engine->quantize_mode == QUANTIZE_BEAT);
engine_set_quantize_mode(engine, QUANTIZE_BAR);
engine_process_commands(engine);
assert(engine->quantize_mode == QUANTIZE_BAR);
engine_set_quantize_mode(engine, QUANTIZE_OFF);
engine_process_commands(engine);
assert(engine->quantize_mode == QUANTIZE_OFF);
destroy_test_engine(engine);
@@ -366,9 +386,11 @@ void test_quantize_threshold_setting(void) {
assert(engine->quantize_threshold == 0);
engine_set_quantize_threshold(engine, 1000);
engine_process_commands(engine);
assert(engine->quantize_threshold == 1000);
engine_set_quantize_threshold(engine, 0);
engine_process_commands(engine);
assert(engine->quantize_threshold == 0);
destroy_test_engine(engine);

View File

@@ -86,6 +86,7 @@ void test_trigger_via_grid(void) {
// Simulate pressing 't' on grid position (3, 4) = clip 28
int clip_idx = 3 * 8 + 4;
engine_trigger_clip(engine, clip_idx);
engine_process_commands(engine);
assert(engine->clips[clip_idx].state == CLIP_RECORDING);
destroy_test_engine(engine);
@@ -104,6 +105,7 @@ void test_reset_via_grid(void) {
// Simulate pressing 'r'
engine_reset_clip(engine, clip_idx);
engine_process_commands(engine);
assert(engine->clips[clip_idx].state == CLIP_EMPTY);
assert(engine->clips[clip_idx].buffer_size == 0);
@@ -119,6 +121,7 @@ void test_scene_via_grid(void) {
// Simulate pressing 's' on row 3
int scene_index = 3;
engine_trigger_scene(engine, scene_index);
engine_process_commands(engine);
// All clips in scene 3 should be recording
for (int ch = 0; ch < MAX_CHANNELS; ch++) {
@@ -140,14 +143,17 @@ void test_quantize_cycling(void) {
// Cycle: OFF -> BEAT
engine_set_quantize_mode(engine, QUANTIZE_BEAT);
engine_process_commands(engine);
assert(engine->quantize_mode == QUANTIZE_BEAT);
// Cycle: BEAT -> BAR
engine_set_quantize_mode(engine, QUANTIZE_BAR);
engine_process_commands(engine);
assert(engine->quantize_mode == QUANTIZE_BAR);
// Cycle: BAR -> OFF
engine_set_quantize_mode(engine, QUANTIZE_OFF);
engine_process_commands(engine);
assert(engine->quantize_mode == QUANTIZE_OFF);
destroy_test_engine(engine);
@@ -164,10 +170,12 @@ void test_threshold_toggle(void) {
// Toggle to 1000
engine_set_quantize_threshold(engine, 1000);
engine_process_commands(engine);
assert(engine->quantize_threshold == 1000);
// Toggle back to 0
engine_set_quantize_threshold(engine, 0);
engine_process_commands(engine);
assert(engine->quantize_threshold == 0);
destroy_test_engine(engine);
@@ -188,6 +196,7 @@ void test_transport_reset_via_tui(void) {
// Simulate pressing 'x'
engine_reset_transport(engine);
engine_process_commands(engine);
assert(engine->transport.rolling == false);
assert(engine->transport.clock_count == 0);
@@ -332,6 +341,7 @@ void test_full_grid_coverage(void) {
for (int col = 0; col < 8; col++) {
int clip_idx = row * 8 + col;
engine_trigger_clip(engine, clip_idx);
engine_process_commands(engine);
assert(engine->clips[clip_idx].state == CLIP_RECORDING);
}
}
@@ -353,6 +363,7 @@ void test_scene_from_each_row(void) {
// Trigger scene from each row
for (int row = 0; row < 8; row++) {
engine_trigger_scene(engine, row);
engine_process_commands(engine);
// Verify all clips in this scene are recording
for (int ch = 0; ch < MAX_CHANNELS; ch++) {
@@ -373,12 +384,15 @@ void test_quantize_full_cycle(void) {
// Cycle through all modes twice
for (int cycle = 0; cycle < 2; cycle++) {
engine_set_quantize_mode(engine, QUANTIZE_OFF);
engine_process_commands(engine);
assert(engine->quantize_mode == QUANTIZE_OFF);
engine_set_quantize_mode(engine, QUANTIZE_BEAT);
engine_process_commands(engine);
assert(engine->quantize_mode == QUANTIZE_BEAT);
engine_set_quantize_mode(engine, QUANTIZE_BAR);
engine_process_commands(engine);
assert(engine->quantize_mode == QUANTIZE_BAR);
}
@@ -395,9 +409,11 @@ void test_multiple_threshold_toggles(void) {
for (int i = 0; i < 5; i++) {
if (engine->quantize_threshold == 0) {
engine_set_quantize_threshold(engine, 1000);
engine_process_commands(engine);
assert(engine->quantize_threshold == 1000);
} else {
engine_set_quantize_threshold(engine, 0);
engine_process_commands(engine);
assert(engine->quantize_threshold == 0);
}
}
@@ -420,6 +436,7 @@ void test_multiple_transport_resets(void) {
engine->transport.sample_position = 10000 * i;
engine_reset_transport(engine);
engine_process_commands(engine);
assert(engine->transport.rolling == false);
assert(engine->transport.clock_count == 0);