From 118b601d0e386ac588b0d0fc5949282c17e5f181 Mon Sep 17 00:00:00 2001 From: Khoa Vo Date: Fri, 26 Jun 2026 16:55:57 +0700 Subject: [PATCH] fix: update test helper for flush-forward behavior, 67 tests pass - Engine no longer includes flush char in Replace insert - Daemon forwards raw flush key after Replace injection - Test helper simulates this by adding Insert event after Replace --- engine/src/tests.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/engine/src/tests.rs b/engine/src/tests.rs index ba4e234..309def1 100644 --- a/engine/src/tests.rs +++ b/engine/src/tests.rs @@ -6,16 +6,23 @@ mod tests { let mut events = Vec::new(); for ch in input.chars() { if let Some(event) = engine.process_key(ch) { + let is_replace = matches!(&event, EngineEvent::Replace { .. }); + let fl = is_flush_char(ch); events.push(event); + if is_replace && fl { + events.push(EngineEvent::Insert(ch.to_string())); + } } else if engine.is_enabled() { - // Engine didn't produce an event — the daemon would forward the raw key. - // Track this as an Insert for display reconstruction. events.push(EngineEvent::Insert(ch.to_string())); } } events } + fn is_flush_char(ch: char) -> bool { + matches!(ch, ' ' | '\t' | '.' | ',' | '!' | '?' | ';' | ':' | '\n') + } + fn get_display(events: &[EngineEvent]) -> String { let mut display = String::new(); for ev in events {