diff --git a/test_tui.c b/test_tui.c index 5e04eb3..119fc50 100644 --- a/test_tui.c +++ b/test_tui.c @@ -1570,12 +1570,30 @@ void test_undo_paste(void) { engine_process_commands(engine); assert(engine->clips[clip_idx].state == CLIP_STOPPED); - // Undo: should go back to empty + // Undo: should go back to looping (undo last trigger: stopped -> looping) + engine_undo_action(engine); + engine_process_commands(engine); + assert(engine->clips[clip_idx].state == CLIP_LOOPING); + + // Undo again: should go back to recording + engine_undo_action(engine); + engine_process_commands(engine); + assert(engine->clips[clip_idx].state == CLIP_RECORDING); + + // Undo again: should go back to empty engine_undo_action(engine); engine_process_commands(engine); assert(engine->clips[clip_idx].state == CLIP_EMPTY); - // Redo: should go back to stopped + // Redo three times: should go back to stopped + engine_redo_action(engine); + engine_process_commands(engine); + assert(engine->clips[clip_idx].state == CLIP_RECORDING); + + engine_redo_action(engine); + engine_process_commands(engine); + assert(engine->clips[clip_idx].state == CLIP_LOOPING); + engine_redo_action(engine); engine_process_commands(engine); assert(engine->clips[clip_idx].state == CLIP_STOPPED);