/// Auto-generated from gen_tests example /// Generated: 2026-06-24T19:55:36.520158 /// Total cases: 1000 use vietc_engine::{Engine, EngineEvent, InputMethod}; fn get_display(events: &[EngineEvent]) -> String { let mut display = String::new(); for ev in events { match ev { EngineEvent::Flush(text) => { if !display.ends_with(text) { display.push_str(text); } } EngineEvent::Insert(text) => display.push_str(text), EngineEvent::Replace { backspaces, insert } => { for _ in 0..*backspaces { display.pop(); } display.push_str(insert); } EngineEvent::AutoRestore(word) => { for _ in 0..word.len() { display.pop(); } display.push_str(word); } EngineEvent::UndoTones { backspaces, restored } => { for _ in 0..*backspaces { display.pop(); } display.push_str(restored); } EngineEvent::Paste(text) => { display.push_str(text); } } } display } fn process_input(e: &mut Engine, input: &str) -> Vec { let mut events = Vec::new(); for ch in input.chars() { if let Some(ev) = e.process_key(ch) { events.push(ev); } } events } const TEST_CASES: &[(&str, &str, &str)] = &[ ("aaf", "ầ", "telex"), ("aas", "ấ", "telex"), ("aaj", "ậ", "telex"), ("aar", "ẩ", "telex"), ("aax", "ẫ", "telex"), ("aaw", "ă", "telex"), ("aaa", "â", "telex"), ("eee", "ê", "telex"), ("ooo", "ô", "telex"), ("oow", "ơ", "telex"), ("uuw", "uư", "telex"), ("acaf", "ầc", "telex"), ("acas", "ấc", "telex"), ("acaj", "ậc", "telex"), ("acar", "ẩc", "telex"), ("acax", "ẫc", "telex"), ("acaw", "ăc", "telex"), ("acaa", "âc", "telex"), ("ecee", "êc", "telex"), ("ocoo", "ôc", "telex"), ("ocow", "ơc", "telex"), ("ucuw", "ucư", "telex"), ("amaf", "ầm", "telex"), ("amas", "ấm", "telex"), ("amaj", "ậm", "telex"), ("amar", "ẩm", "telex"), ("amax", "ẫm", "telex"), ("amaw", "ăm", "telex"), ("amaa", "âm", "telex"), ("emee", "êm", "telex"), ("omoo", "ôm", "telex"), ("omow", "ơm", "telex"), ("umuw", "umư", "telex"), ("anaf", "ần", "telex"), ("anas", "ấn", "telex"), ("anaj", "ận", "telex"), ("anar", "ẩn", "telex"), ("anax", "ẫn", "telex"), ("anaw", "ăn", "telex"), ("anaa", "ân", "telex"), ("enee", "ên", "telex"), ("onoo", "ôn", "telex"), ("onow", "ơn", "telex"), ("unuw", "unư", "telex"), ("angaf", "ầng", "telex"), ("angas", "ấng", "telex"), ("angaj", "ậng", "telex"), ("angar", "ẩng", "telex"), ("angax", "ẫng", "telex"), ("angaw", "ăng", "telex"), ("angaa", "âng", "telex"), ("engee", "êng", "telex"), ("ongoo", "ông", "telex"), ("ongow", "ơng", "telex"), ("unguw", "ungư", "telex"), ("apaf", "ầp", "telex"), ("apas", "ấp", "telex"), ("apaj", "ập", "telex"), ("apar", "ẩp", "telex"), ("apax", "ẫp", "telex"), ("apaw", "ăp", "telex"), ("apaa", "âp", "telex"), ("epee", "êp", "telex"), ("opoo", "ôp", "telex"), ("opow", "ơp", "telex"), ("upuw", "upư", "telex"), ("ataf", "ầt", "telex"), ("atas", "ất", "telex"), ("ataj", "ật", "telex"), ("atar", "ẩt", "telex"), ("atax", "ẫt", "telex"), ("ataw", "ăt", "telex"), ("ataa", "ât", "telex"), ("etee", "êt", "telex"), ("otoo", "ôt", "telex"), ("otow", "ơt", "telex"), ("utuw", "utư", "telex"), ("baaf", "bầ", "telex"), ("baas", "bấ", "telex"), ("baaj", "bậ", "telex"), ("baar", "bẩ", "telex"), ("baax", "bẫ", "telex"), ("baaw", "bă", "telex"), ("baaa", "bâ", "telex"), ("beee", "bê", "telex"), ("booo", "bô", "telex"), ("boow", "bơ", "telex"), ("buuw", "buư", "telex"), ("bacaf", "bầc", "telex"), ("bacas", "bấc", "telex"), ("bacaj", "bậc", "telex"), ("bacar", "bẩc", "telex"), ("bacax", "bẫc", "telex"), ("bacaw", "băc", "telex"), ("bacaa", "bâc", "telex"), ("becee", "bêc", "telex"), ("bocoo", "bôc", "telex"), ("bocow", "bơc", "telex"), ("bucuw", "bucư", "telex"), ("bachaf", "bầch", "telex"), ("bachas", "bấch", "telex"), ("bachaj", "bậch", "telex"), ("bachar", "bẩch", "telex"), ("bachax", "bẫch", "telex"), ("bachaw", "băch", "telex"), ("bachaa", "bâch", "telex"), ("bechee", "bêch", "telex"), ("bochoo", "bôch", "telex"), ("bochow", "bơch", "telex"), ("buchuw", "buchư", "telex"), ("bamaf", "bầm", "telex"), ("bamas", "bấm", "telex"), ("bamaj", "bậm", "telex"), ("bamar", "bẩm", "telex"), ("bamax", "bẫm", "telex"), ("bamaw", "băm", "telex"), ("bamaa", "bâm", "telex"), ("bemee", "bêm", "telex"), ("bomoo", "bôm", "telex"), ("bomow", "bơm", "telex"), ("bumuw", "bumư", "telex"), ("banaf", "bần", "telex"), ("banas", "bấn", "telex"), ("banaj", "bận", "telex"), ("banar", "bẩn", "telex"), ("banax", "bẫn", "telex"), ("banaw", "băn", "telex"), ("banaa", "bân", "telex"), ("benee", "bên", "telex"), ("bonoo", "bôn", "telex"), ("bonow", "bơn", "telex"), ("bunuw", "bunư", "telex"), ("bangaf", "bầng", "telex"), ("bangas", "bấng", "telex"), ("bangaj", "bậng", "telex"), ("bangar", "bẩng", "telex"), ("bangax", "bẫng", "telex"), ("bangaw", "băng", "telex"), ("bangaa", "bâng", "telex"), ("bengee", "bêng", "telex"), ("bongoo", "bông", "telex"), ("bongow", "bơng", "telex"), ("bunguw", "bungư", "telex"), ("banhaf", "bầnh", "telex"), ("banhas", "bấnh", "telex"), ("banhaj", "bậnh", "telex"), ("banhar", "bẩnh", "telex"), ("banhax", "bẫnh", "telex"), ("banhaw", "bănh", "telex"), ("banhaa", "bânh", "telex"), ("benhee", "bênh", "telex"), ("bonhoo", "bônh", "telex"), ("bonhow", "bơnh", "telex"), ("bunhuw", "bunhư", "telex"), ("bapaf", "bầp", "telex"), ("bapas", "bấp", "telex"), ("bapaj", "bập", "telex"), ("bapar", "bẩp", "telex"), ("bapax", "bẫp", "telex"), ("bapaw", "băp", "telex"), ("bapaa", "bâp", "telex"), ("bepee", "bêp", "telex"), ("bopoo", "bôp", "telex"), ("bopow", "bơp", "telex"), ("bupuw", "bupư", "telex"), ("bataf", "bầt", "telex"), ("batas", "bất", "telex"), ("bataj", "bật", "telex"), ("batar", "bẩt", "telex"), ("batax", "bẫt", "telex"), ("bataw", "băt", "telex"), ("bataa", "bât", "telex"), ("betee", "bêt", "telex"), ("botoo", "bôt", "telex"), ("botow", "bơt", "telex"), ("butuw", "butư", "telex"), ("caaf", "cầ", "telex"), ("caas", "cấ", "telex"), ("caaj", "cậ", "telex"), ("caar", "cẩ", "telex"), ("caax", "cẫ", "telex"), ("caaw", "că", "telex"), ("caaa", "câ", "telex"), ("ceee", "cê", "telex"), ("cooo", "cô", "telex"), ("coow", "cơ", "telex"), ("cuuw", "cuư", "telex"), ("cacaf", "cầc", "telex"), ("cacas", "cấc", "telex"), ("cacaj", "cậc", "telex"), ("cacar", "cẩc", "telex"), ("cacax", "cẫc", "telex"), ("cacaw", "căc", "telex"), ("cacaa", "câc", "telex"), ("cecee", "cêc", "telex"), ("cocoo", "côc", "telex"), ("cocow", "cơc", "telex"), ("cucuw", "cucư", "telex"), ("cachaf", "cầch", "telex"), ("cachas", "cấch", "telex"), ("cachaj", "cậch", "telex"), ("cachar", "cẩch", "telex"), ("cachax", "cẫch", "telex"), ("cachaw", "căch", "telex"), ("cachaa", "câch", "telex"), ("cechee", "cêch", "telex"), ("cochoo", "côch", "telex"), ("cochow", "cơch", "telex"), ("cuchuw", "cuchư", "telex"), ("camaf", "cầm", "telex"), ("camas", "cấm", "telex"), ("camaj", "cậm", "telex"), ("camar", "cẩm", "telex"), ("camax", "cẫm", "telex"), ("camaw", "căm", "telex"), ("camaa", "câm", "telex"), ("cemee", "cêm", "telex"), ("comoo", "côm", "telex"), ("comow", "cơm", "telex"), ("cumuw", "cumư", "telex"), ("canaf", "cần", "telex"), ("canas", "cấn", "telex"), ("canaj", "cận", "telex"), ("canar", "cẩn", "telex"), ("canax", "cẫn", "telex"), ("canaw", "căn", "telex"), ("canaa", "cân", "telex"), ("cenee", "cên", "telex"), ("conoo", "côn", "telex"), ("conow", "cơn", "telex"), ("cunuw", "cunư", "telex"), ("cangaf", "cầng", "telex"), ("cangas", "cấng", "telex"), ("cangaj", "cậng", "telex"), ("cangar", "cẩng", "telex"), ("cangax", "cẫng", "telex"), ("cangaw", "căng", "telex"), ("cangaa", "câng", "telex"), ("cengee", "cêng", "telex"), ("congoo", "công", "telex"), ("congow", "cơng", "telex"), ("cunguw", "cungư", "telex"), ("canhaf", "cầnh", "telex"), ("canhas", "cấnh", "telex"), ("canhaj", "cậnh", "telex"), ("canhar", "cẩnh", "telex"), ("canhax", "cẫnh", "telex"), ("canhaw", "cănh", "telex"), ("canhaa", "cânh", "telex"), ("cenhee", "cênh", "telex"), ("conhoo", "cônh", "telex"), ("conhow", "cơnh", "telex"), ("cunhuw", "cunhư", "telex"), ("capaf", "cầp", "telex"), ("capas", "cấp", "telex"), ("capaj", "cập", "telex"), ("capar", "cẩp", "telex"), ("capax", "cẫp", "telex"), ("capaw", "căp", "telex"), ("capaa", "câp", "telex"), ("cepee", "cêp", "telex"), ("copoo", "côp", "telex"), ("copow", "cơp", "telex"), ("cupuw", "cupư", "telex"), ("cataf", "cầt", "telex"), ("catas", "cất", "telex"), ("cataj", "cật", "telex"), ("catar", "cẩt", "telex"), ("catax", "cẫt", "telex"), ("cataw", "căt", "telex"), ("cataa", "cât", "telex"), ("cetee", "cêt", "telex"), ("cotoo", "côt", "telex"), ("cotow", "cơt", "telex"), ("cutuw", "cutư", "telex"), ("chaaf", "chầ", "telex"), ("chaas", "chấ", "telex"), ("chaaj", "chậ", "telex"), ("chaar", "chẩ", "telex"), ("chaax", "chẫ", "telex"), ("chaaw", "chă", "telex"), ("chaaa", "châ", "telex"), ("cheee", "chê", "telex"), ("chooo", "chô", "telex"), ("choow", "chơ", "telex"), ("chuuw", "chuư", "telex"), ("chacaf", "chầc", "telex"), ("chacas", "chấc", "telex"), ("chacaj", "chậc", "telex"), ("chacar", "chẩc", "telex"), ("chacax", "chẫc", "telex"), ("chacaw", "chăc", "telex"), ("chacaa", "châc", "telex"), ("checee", "chêc", "telex"), ("chocoo", "chôc", "telex"), ("chocow", "chơc", "telex"), ("chucuw", "chucư", "telex"), ("chachaf", "chầch", "telex"), ("chachas", "chấch", "telex"), ("chachaj", "chậch", "telex"), ("chachar", "chẩch", "telex"), ("chachax", "chẫch", "telex"), ("chachaw", "chăch", "telex"), ("chachaa", "châch", "telex"), ("chechee", "chêch", "telex"), ("chochoo", "chôch", "telex"), ("chochow", "chơch", "telex"), ("chuchuw", "chuchư", "telex"), ("chamaf", "chầm", "telex"), ("chamas", "chấm", "telex"), ("chamaj", "chậm", "telex"), ("chamar", "chẩm", "telex"), ("chamax", "chẫm", "telex"), ("chamaw", "chăm", "telex"), ("chamaa", "châm", "telex"), ("chemee", "chêm", "telex"), ("chomoo", "chôm", "telex"), ("chomow", "chơm", "telex"), ("chumuw", "chumư", "telex"), ("chanaf", "chần", "telex"), ("chanas", "chấn", "telex"), ("chanaj", "chận", "telex"), ("chanar", "chẩn", "telex"), ("chanax", "chẫn", "telex"), ("chanaw", "chăn", "telex"), ("chanaa", "chân", "telex"), ("chenee", "chên", "telex"), ("chonoo", "chôn", "telex"), ("chonow", "chơn", "telex"), ("chunuw", "chunư", "telex"), ("changaf", "chầng", "telex"), ("changas", "chấng", "telex"), ("changaj", "chậng", "telex"), ("changar", "chẩng", "telex"), ("changax", "chẫng", "telex"), ("changaw", "chăng", "telex"), ("changaa", "châng", "telex"), ("chengee", "chêng", "telex"), ("chongoo", "chông", "telex"), ("chongow", "chơng", "telex"), ("chunguw", "chungư", "telex"), ("chanhaf", "chầnh", "telex"), ("chanhas", "chấnh", "telex"), ("chanhaj", "chậnh", "telex"), ("chanhar", "chẩnh", "telex"), ("chanhax", "chẫnh", "telex"), ("chanhaw", "chănh", "telex"), ("chanhaa", "chânh", "telex"), ("chenhee", "chênh", "telex"), ("chonhoo", "chônh", "telex"), ("chonhow", "chơnh", "telex"), ("chunhuw", "chunhư", "telex"), ("chapaf", "chầp", "telex"), ("chapas", "chấp", "telex"), ("chapaj", "chập", "telex"), ("chapar", "chẩp", "telex"), ("chapax", "chẫp", "telex"), ("chapaw", "chăp", "telex"), ("chapaa", "châp", "telex"), ("chepee", "chêp", "telex"), ("chopoo", "chôp", "telex"), ("chopow", "chơp", "telex"), ("chupuw", "chupư", "telex"), ("chataf", "chầt", "telex"), ("chatas", "chất", "telex"), ("chataj", "chật", "telex"), ("chatar", "chẩt", "telex"), ("chatax", "chẫt", "telex"), ("chataw", "chăt", "telex"), ("chataa", "chât", "telex"), ("chetee", "chêt", "telex"), ("chotoo", "chôt", "telex"), ("chotow", "chơt", "telex"), ("chutuw", "chutư", "telex"), ("daaf", "dầ", "telex"), ("daas", "dấ", "telex"), ("daaj", "dậ", "telex"), ("daar", "dẩ", "telex"), ("daax", "dẫ", "telex"), ("daaw", "dă", "telex"), ("daaa", "dâ", "telex"), ("deee", "dê", "telex"), ("dooo", "dô", "telex"), ("doow", "dơ", "telex"), ("duuw", "duư", "telex"), ("dacaf", "dầc", "telex"), ("dacas", "dấc", "telex"), ("dacaj", "dậc", "telex"), ("dacar", "dẩc", "telex"), ("dacax", "dẫc", "telex"), ("dacaw", "dăc", "telex"), ("dacaa", "dâc", "telex"), ("decee", "dêc", "telex"), ("docoo", "dôc", "telex"), ("docow", "dơc", "telex"), ("ducuw", "ducư", "telex"), ("dachaf", "dầch", "telex"), ("dachas", "dấch", "telex"), ("dachaj", "dậch", "telex"), ("dachar", "dẩch", "telex"), ("dachax", "dẫch", "telex"), ("dachaw", "dăch", "telex"), ("dachaa", "dâch", "telex"), ("dechee", "dêch", "telex"), ("dochoo", "dôch", "telex"), ("dochow", "dơch", "telex"), ("duchuw", "duchư", "telex"), ("damaf", "dầm", "telex"), ("damas", "dấm", "telex"), ("damaj", "dậm", "telex"), ("damar", "dẩm", "telex"), ("damax", "dẫm", "telex"), ("damaw", "dăm", "telex"), ("damaa", "dâm", "telex"), ("demee", "dêm", "telex"), ("domoo", "dôm", "telex"), ("domow", "dơm", "telex"), ("dumuw", "dumư", "telex"), ("danaf", "dần", "telex"), ("danas", "dấn", "telex"), ("danaj", "dận", "telex"), ("danar", "dẩn", "telex"), ("danax", "dẫn", "telex"), ("danaw", "dăn", "telex"), ("danaa", "dân", "telex"), ("denee", "dên", "telex"), ("donoo", "dôn", "telex"), ("donow", "dơn", "telex"), ("dunuw", "dunư", "telex"), ("dangaf", "dầng", "telex"), ("dangas", "dấng", "telex"), ("dangaj", "dậng", "telex"), ("dangar", "dẩng", "telex"), ("dangax", "dẫng", "telex"), ("dangaw", "dăng", "telex"), ("dangaa", "dâng", "telex"), ("dengee", "dêng", "telex"), ("dongoo", "dông", "telex"), ("dongow", "dơng", "telex"), ("dunguw", "dungư", "telex"), ("danhaf", "dầnh", "telex"), ("danhas", "dấnh", "telex"), ("danhaj", "dậnh", "telex"), ("danhar", "dẩnh", "telex"), ("danhax", "dẫnh", "telex"), ("danhaw", "dănh", "telex"), ("danhaa", "dânh", "telex"), ("denhee", "dênh", "telex"), ("donhoo", "dônh", "telex"), ("donhow", "dơnh", "telex"), ("dunhuw", "dunhư", "telex"), ("dapaf", "dầp", "telex"), ("dapas", "dấp", "telex"), ("dapaj", "dập", "telex"), ("dapar", "dẩp", "telex"), ("dapax", "dẫp", "telex"), ("dapaw", "dăp", "telex"), ("dapaa", "dâp", "telex"), ("depee", "dêp", "telex"), ("dopoo", "dôp", "telex"), ("dopow", "dơp", "telex"), ("dupuw", "dupư", "telex"), ("dataf", "dầt", "telex"), ("datas", "dất", "telex"), ("dataj", "dật", "telex"), ("datar", "dẩt", "telex"), ("datax", "dẫt", "telex"), ("dataw", "dăt", "telex"), ("dataa", "dât", "telex"), ("detee", "dêt", "telex"), ("dotoo", "dôt", "telex"), ("dotow", "dơt", "telex"), ("dutuw", "dutư", "telex"), ("gaaf", "gầ", "telex"), ("gaas", "gấ", "telex"), ("gaaj", "gậ", "telex"), ("gaar", "gẩ", "telex"), ("gaax", "gẫ", "telex"), ("gaaw", "gă", "telex"), ("gaaa", "gâ", "telex"), ("geee", "gê", "telex"), ("gooo", "gô", "telex"), ("goow", "gơ", "telex"), ("guuw", "guư", "telex"), ("ganaf", "gần", "telex"), ("ganas", "gấn", "telex"), ("ganaj", "gận", "telex"), ("ganar", "gẩn", "telex"), ("ganax", "gẫn", "telex"), ("ganaw", "găn", "telex"), ("ganaa", "gân", "telex"), ("genee", "gên", "telex"), ("gonoo", "gôn", "telex"), ("gonow", "gơn", "telex"), ("gunuw", "gunư", "telex"), ("gangaf", "gầng", "telex"), ("gangas", "gấng", "telex"), ("gangaj", "gậng", "telex"), ("gangar", "gẩng", "telex"), ("gangax", "gẫng", "telex"), ("gangaw", "găng", "telex"), ("gangaa", "gâng", "telex"), ("gengee", "gêng", "telex"), ("gongoo", "gông", "telex"), ("gongow", "gơng", "telex"), ("gunguw", "gungư", "telex"), ("ghaaf", "ghầ", "telex"), ("ghaas", "ghấ", "telex"), ("ghaaj", "ghậ", "telex"), ("ghaar", "ghẩ", "telex"), ("ghaax", "ghẫ", "telex"), ("ghaaw", "ghă", "telex"), ("ghaaa", "ghâ", "telex"), ("gheee", "ghê", "telex"), ("ghooo", "ghô", "telex"), ("ghoow", "ghơ", "telex"), ("ghuuw", "ghuư", "telex"), ("haaf", "hầ", "telex"), ("haas", "hấ", "telex"), ("haaj", "hậ", "telex"), ("haar", "hẩ", "telex"), ("haax", "hẫ", "telex"), ("haaw", "hă", "telex"), ("haaa", "hâ", "telex"), ("heee", "hê", "telex"), ("hooo", "hô", "telex"), ("hoow", "hơ", "telex"), ("huuw", "huư", "telex"), ("hacaf", "hầc", "telex"), ("hacas", "hấc", "telex"), ("hacaj", "hậc", "telex"), ("hacar", "hẩc", "telex"), ("hacax", "hẫc", "telex"), ("hacaw", "hăc", "telex"), ("hacaa", "hâc", "telex"), ("hecee", "hêc", "telex"), ("hocoo", "hôc", "telex"), ("hocow", "hơc", "telex"), ("hucuw", "hucư", "telex"), ("hachaf", "hầch", "telex"), ("hachas", "hấch", "telex"), ("hachaj", "hậch", "telex"), ("hachar", "hẩch", "telex"), ("hachax", "hẫch", "telex"), ("hachaw", "hăch", "telex"), ("hachaa", "hâch", "telex"), ("hechee", "hêch", "telex"), ("hochoo", "hôch", "telex"), ("hochow", "hơch", "telex"), ("huchuw", "huchư", "telex"), ("hamaf", "hầm", "telex"), ("hamas", "hấm", "telex"), ("hamaj", "hậm", "telex"), ("hamar", "hẩm", "telex"), ("hamax", "hẫm", "telex"), ("hamaw", "hăm", "telex"), ("hamaa", "hâm", "telex"), ("hemee", "hêm", "telex"), ("homoo", "hôm", "telex"), ("homow", "hơm", "telex"), ("humuw", "humư", "telex"), ("hanaf", "hần", "telex"), ("hanas", "hấn", "telex"), ("hanaj", "hận", "telex"), ("hanar", "hẩn", "telex"), ("hanax", "hẫn", "telex"), ("hanaw", "hăn", "telex"), ("hanaa", "hân", "telex"), ("henee", "hên", "telex"), ("honoo", "hôn", "telex"), ("honow", "hơn", "telex"), ("hunuw", "hunư", "telex"), ("hangaf", "hầng", "telex"), ("hangas", "hấng", "telex"), ("hangaj", "hậng", "telex"), ("hangar", "hẩng", "telex"), ("hangax", "hẫng", "telex"), ("hangaw", "hăng", "telex"), ("hangaa", "hâng", "telex"), ("hengee", "hêng", "telex"), ("hongoo", "hông", "telex"), ("hongow", "hơng", "telex"), ("hunguw", "hungư", "telex"), ("hanhaf", "hầnh", "telex"), ("hanhas", "hấnh", "telex"), ("hanhaj", "hậnh", "telex"), ("hanhar", "hẩnh", "telex"), ("hanhax", "hẫnh", "telex"), ("hanhaw", "hănh", "telex"), ("hanhaa", "hânh", "telex"), ("henhee", "hênh", "telex"), ("honhoo", "hônh", "telex"), ("honhow", "hơnh", "telex"), ("hunhuw", "hunhư", "telex"), ("hapaf", "hầp", "telex"), ("hapas", "hấp", "telex"), ("hapaj", "hập", "telex"), ("hapar", "hẩp", "telex"), ("hapax", "hẫp", "telex"), ("hapaw", "hăp", "telex"), ("hapaa", "hâp", "telex"), ("hepee", "hêp", "telex"), ("hopoo", "hôp", "telex"), ("hopow", "hơp", "telex"), ("hupuw", "hupư", "telex"), ("hataf", "hầt", "telex"), ("hatas", "hất", "telex"), ("hataj", "hật", "telex"), ("hatar", "hẩt", "telex"), ("hatax", "hẫt", "telex"), ("hataw", "hăt", "telex"), ("hataa", "hât", "telex"), ("hetee", "hêt", "telex"), ("hotoo", "hôt", "telex"), ("hotow", "hơt", "telex"), ("hutuw", "hutư", "telex"), ("kaaf", "kầ", "telex"), ("kaas", "kấ", "telex"), ("kaaj", "kậ", "telex"), ("kaar", "kẩ", "telex"), ("kaax", "kẫ", "telex"), ("kaaw", "kă", "telex"), ("kaaa", "kâ", "telex"), ("keee", "kê", "telex"), ("kooo", "kô", "telex"), ("koow", "kơ", "telex"), ("kuuw", "kuư", "telex"), ("kacaf", "kầc", "telex"), ("kacas", "kấc", "telex"), ("kacaj", "kậc", "telex"), ("kacar", "kẩc", "telex"), ("kacax", "kẫc", "telex"), ("kacaw", "kăc", "telex"), ("kacaa", "kâc", "telex"), ("kecee", "kêc", "telex"), ("kocoo", "kôc", "telex"), ("kocow", "kơc", "telex"), ("kucuw", "kucư", "telex"), ("kachaf", "kầch", "telex"), ("kachas", "kấch", "telex"), ("kachaj", "kậch", "telex"), ("kachar", "kẩch", "telex"), ("kachax", "kẫch", "telex"), ("kachaw", "kăch", "telex"), ("kachaa", "kâch", "telex"), ("kechee", "kêch", "telex"), ("kochoo", "kôch", "telex"), ("kochow", "kơch", "telex"), ("kuchuw", "kuchư", "telex"), ("kamaf", "kầm", "telex"), ("kamas", "kấm", "telex"), ("kamaj", "kậm", "telex"), ("kamar", "kẩm", "telex"), ("kamax", "kẫm", "telex"), ("kamaw", "kăm", "telex"), ("kamaa", "kâm", "telex"), ("kemee", "kêm", "telex"), ("komoo", "kôm", "telex"), ("komow", "kơm", "telex"), ("kumuw", "kumư", "telex"), ("kanaf", "kần", "telex"), ("kanas", "kấn", "telex"), ("kanaj", "kận", "telex"), ("kanar", "kẩn", "telex"), ("kanax", "kẫn", "telex"), ("kanaw", "kăn", "telex"), ("kanaa", "kân", "telex"), ("kenee", "kên", "telex"), ("konoo", "kôn", "telex"), ("konow", "kơn", "telex"), ("kunuw", "kunư", "telex"), ("kangaf", "kầng", "telex"), ("kangas", "kấng", "telex"), ("kangaj", "kậng", "telex"), ("kangar", "kẩng", "telex"), ("kangax", "kẫng", "telex"), ("kangaw", "kăng", "telex"), ("kangaa", "kâng", "telex"), ("kengee", "kêng", "telex"), ("kongoo", "kông", "telex"), ("kongow", "kơng", "telex"), ("kunguw", "kungư", "telex"), ("kanhaf", "kầnh", "telex"), ("kanhas", "kấnh", "telex"), ("kanhaj", "kậnh", "telex"), ("kanhar", "kẩnh", "telex"), ("kanhax", "kẫnh", "telex"), ("kanhaw", "kănh", "telex"), ("kanhaa", "kânh", "telex"), ("kenhee", "kênh", "telex"), ("konhoo", "kônh", "telex"), ("konhow", "kơnh", "telex"), ("kunhuw", "kunhư", "telex"), ("kapaf", "kầp", "telex"), ("kapas", "kấp", "telex"), ("kapaj", "kập", "telex"), ("kapar", "kẩp", "telex"), ("kapax", "kẫp", "telex"), ("kapaw", "kăp", "telex"), ("kapaa", "kâp", "telex"), ("kepee", "kêp", "telex"), ("kopoo", "kôp", "telex"), ("kopow", "kơp", "telex"), ("kupuw", "kupư", "telex"), ("kataf", "kầt", "telex"), ("katas", "kất", "telex"), ("kataj", "kật", "telex"), ("katar", "kẩt", "telex"), ("katax", "kẫt", "telex"), ("kataw", "kăt", "telex"), ("kataa", "kât", "telex"), ("ketee", "kêt", "telex"), ("kotoo", "kôt", "telex"), ("kotow", "kơt", "telex"), ("kutuw", "kutư", "telex"), ("khaaf", "khầ", "telex"), ("khaas", "khấ", "telex"), ("khaaj", "khậ", "telex"), ("khaar", "khẩ", "telex"), ("khaax", "khẫ", "telex"), ("khaaw", "khă", "telex"), ("khaaa", "khâ", "telex"), ("kheee", "khê", "telex"), ("khooo", "khô", "telex"), ("khoow", "khơ", "telex"), ("khuuw", "khuư", "telex"), ("khacaf", "khầc", "telex"), ("khacas", "khấc", "telex"), ("khacaj", "khậc", "telex"), ("khacar", "khẩc", "telex"), ("khacax", "khẫc", "telex"), ("khacaw", "khăc", "telex"), ("khacaa", "khâc", "telex"), ("khecee", "khêc", "telex"), ("khocoo", "khôc", "telex"), ("khocow", "khơc", "telex"), ("khucuw", "khucư", "telex"), ("khachaf", "khầch", "telex"), ("khachas", "khấch", "telex"), ("khachaj", "khậch", "telex"), ("khachar", "khẩch", "telex"), ("khachax", "khẫch", "telex"), ("khachaw", "khăch", "telex"), ("khachaa", "khâch", "telex"), ("khechee", "khêch", "telex"), ("khochoo", "khôch", "telex"), ("khochow", "khơch", "telex"), ("khuchuw", "khuchư", "telex"), ("khamaf", "khầm", "telex"), ("khamas", "khấm", "telex"), ("khamaj", "khậm", "telex"), ("khamar", "khẩm", "telex"), ("khamax", "khẫm", "telex"), ("khamaw", "khăm", "telex"), ("khamaa", "khâm", "telex"), ("khemee", "khêm", "telex"), ("khomoo", "khôm", "telex"), ("khomow", "khơm", "telex"), ("khumuw", "khumư", "telex"), ("khanaf", "khần", "telex"), ("khanas", "khấn", "telex"), ("khanaj", "khận", "telex"), ("khanar", "khẩn", "telex"), ("khanax", "khẫn", "telex"), ("khanaw", "khăn", "telex"), ("khanaa", "khân", "telex"), ("khenee", "khên", "telex"), ("khonoo", "khôn", "telex"), ("khonow", "khơn", "telex"), ("khunuw", "khunư", "telex"), ("khangaf", "khầng", "telex"), ("khangas", "khấng", "telex"), ("khangaj", "khậng", "telex"), ("khangar", "khẩng", "telex"), ("khangax", "khẫng", "telex"), ("khangaw", "khăng", "telex"), ("khangaa", "khâng", "telex"), ("khengee", "khêng", "telex"), ("khongoo", "không", "telex"), ("khongow", "khơng", "telex"), ("khunguw", "khungư", "telex"), ("khanhaf", "khầnh", "telex"), ("khanhas", "khấnh", "telex"), ("khanhaj", "khậnh", "telex"), ("khanhar", "khẩnh", "telex"), ("khanhax", "khẫnh", "telex"), ("khanhaw", "khănh", "telex"), ("khanhaa", "khânh", "telex"), ("khenhee", "khênh", "telex"), ("khonhoo", "khônh", "telex"), ("khonhow", "khơnh", "telex"), ("khunhuw", "khunhư", "telex"), ("khapaf", "khầp", "telex"), ("khapas", "khấp", "telex"), ("khapaj", "khập", "telex"), ("khapar", "khẩp", "telex"), ("khapax", "khẫp", "telex"), ("khapaw", "khăp", "telex"), ("khapaa", "khâp", "telex"), ("khepee", "khêp", "telex"), ("khopoo", "khôp", "telex"), ("khopow", "khơp", "telex"), ("khupuw", "khupư", "telex"), ("khataf", "khầt", "telex"), ("khatas", "khất", "telex"), ("khataj", "khật", "telex"), ("khatar", "khẩt", "telex"), ("khatax", "khẫt", "telex"), ("khataw", "khăt", "telex"), ("khataa", "khât", "telex"), ("khetee", "khêt", "telex"), ("khotoo", "khôt", "telex"), ("khotow", "khơt", "telex"), ("khutuw", "khutư", "telex"), ("laaf", "lầ", "telex"), ("laas", "lấ", "telex"), ("laaj", "lậ", "telex"), ("laar", "lẩ", "telex"), ("laax", "lẫ", "telex"), ("laaw", "lă", "telex"), ("laaa", "lâ", "telex"), ("leee", "lê", "telex"), ("looo", "lô", "telex"), ("loow", "lơ", "telex"), ("luuw", "luư", "telex"), ("lacaf", "lầc", "telex"), ("lacas", "lấc", "telex"), ("lacaj", "lậc", "telex"), ("lacar", "lẩc", "telex"), ("lacax", "lẫc", "telex"), ("lacaw", "lăc", "telex"), ("lacaa", "lâc", "telex"), ("lecee", "lêc", "telex"), ("locoo", "lôc", "telex"), ("locow", "lơc", "telex"), ("lucuw", "lucư", "telex"), ("lachaf", "lầch", "telex"), ("lachas", "lấch", "telex"), ("lachaj", "lậch", "telex"), ("lachar", "lẩch", "telex"), ("lachax", "lẫch", "telex"), ("lachaw", "lăch", "telex"), ("lachaa", "lâch", "telex"), ("lechee", "lêch", "telex"), ("lochoo", "lôch", "telex"), ("lochow", "lơch", "telex"), ("luchuw", "luchư", "telex"), ("lamaf", "lầm", "telex"), ("lamas", "lấm", "telex"), ("lamaj", "lậm", "telex"), ("lamar", "lẩm", "telex"), ("lamax", "lẫm", "telex"), ("lamaw", "lăm", "telex"), ("lamaa", "lâm", "telex"), ("lemee", "lêm", "telex"), ("lomoo", "lôm", "telex"), ("lomow", "lơm", "telex"), ("lumuw", "lumư", "telex"), ("lanaf", "lần", "telex"), ("lanas", "lấn", "telex"), ("lanaj", "lận", "telex"), ("lanar", "lẩn", "telex"), ("lanax", "lẫn", "telex"), ("lanaw", "lăn", "telex"), ("lanaa", "lân", "telex"), ("lenee", "lên", "telex"), ("lonoo", "lôn", "telex"), ("lonow", "lơn", "telex"), ("lunuw", "lunư", "telex"), ("langaf", "lầng", "telex"), ("langas", "lấng", "telex"), ("langaj", "lậng", "telex"), ("langar", "lẩng", "telex"), ("langax", "lẫng", "telex"), ("langaw", "lăng", "telex"), ("langaa", "lâng", "telex"), ("lengee", "lêng", "telex"), ("longoo", "lông", "telex"), ("longow", "lơng", "telex"), ("lunguw", "lungư", "telex"), ("lanhaf", "lầnh", "telex"), ("lanhas", "lấnh", "telex"), ("lanhaj", "lậnh", "telex"), ("lanhar", "lẩnh", "telex"), ("lanhax", "lẫnh", "telex"), ("lanhaw", "lănh", "telex"), ("lanhaa", "lânh", "telex"), ("lenhee", "lênh", "telex"), ("lonhoo", "lônh", "telex"), ("lonhow", "lơnh", "telex"), ("lunhuw", "lunhư", "telex"), ("lapaf", "lầp", "telex"), ("lapas", "lấp", "telex"), ("lapaj", "lập", "telex"), ("lapar", "lẩp", "telex"), ("lapax", "lẫp", "telex"), ("lapaw", "lăp", "telex"), ("lapaa", "lâp", "telex"), ("lepee", "lêp", "telex"), ("lopoo", "lôp", "telex"), ("lopow", "lơp", "telex"), ("lupuw", "lupư", "telex"), ("lataf", "lầt", "telex"), ("latas", "lất", "telex"), ("lataj", "lật", "telex"), ("latar", "lẩt", "telex"), ("latax", "lẫt", "telex"), ("lataw", "lăt", "telex"), ("lataa", "lât", "telex"), ("letee", "lêt", "telex"), ("lotoo", "lôt", "telex"), ("lotow", "lơt", "telex"), ("lutuw", "lutư", "telex"), ("maaf", "mầ", "telex"), ("maas", "mấ", "telex"), ("maaj", "mậ", "telex"), ("maar", "mẩ", "telex"), ("maax", "mẫ", "telex"), ("maaw", "mă", "telex"), ("maaa", "mâ", "telex"), ("meee", "mê", "telex"), ("mooo", "mô", "telex"), ("moow", "mơ", "telex"), ("muuw", "muư", "telex"), ("macaf", "mầc", "telex"), ("macas", "mấc", "telex"), ("macaj", "mậc", "telex"), ("macar", "mẩc", "telex"), ("macax", "mẫc", "telex"), ("macaw", "măc", "telex"), ("macaa", "mâc", "telex"), ("mecee", "mêc", "telex"), ("mocoo", "môc", "telex"), ("mocow", "mơc", "telex"), ("mucuw", "mucư", "telex"), ("machaf", "mầch", "telex"), ("machas", "mấch", "telex"), ("machaj", "mậch", "telex"), ("machar", "mẩch", "telex"), ("machax", "mẫch", "telex"), ("machaw", "măch", "telex"), ("machaa", "mâch", "telex"), ("mechee", "mêch", "telex"), ("mochoo", "môch", "telex"), ("mochow", "mơch", "telex"), ("muchuw", "muchư", "telex"), ("mamaf", "mầm", "telex"), ("mamas", "mấm", "telex"), ("mamaj", "mậm", "telex"), ("mamar", "mẩm", "telex"), ("mamax", "mẫm", "telex"), ("mamaw", "măm", "telex"), ("mamaa", "mâm", "telex"), ("memee", "mêm", "telex"), ("momoo", "môm", "telex"), ("momow", "mơm", "telex"), ("mumuw", "mumư", "telex"), ("manaf", "mần", "telex"), ("manas", "mấn", "telex"), ("manaj", "mận", "telex"), ("manar", "mẩn", "telex"), ("manax", "mẫn", "telex"), ("manaw", "măn", "telex"), ("manaa", "mân", "telex"), ("menee", "mên", "telex"), ("monoo", "môn", "telex"), ("monow", "mơn", "telex"), ("munuw", "munư", "telex"), ("mangaf", "mầng", "telex"), ("mangas", "mấng", "telex"), ("mangaj", "mậng", "telex"), ("mangar", "mẩng", "telex"), ("mangax", "mẫng", "telex"), ("mangaw", "măng", "telex"), ("mangaa", "mâng", "telex"), ("mengee", "mêng", "telex"), ("mongoo", "mông", "telex"), ("mongow", "mơng", "telex"), ("munguw", "mungư", "telex"), ("manhaf", "mầnh", "telex"), ("manhas", "mấnh", "telex"), ("manhaj", "mậnh", "telex"), ("manhar", "mẩnh", "telex"), ("manhax", "mẫnh", "telex"), ("manhaw", "mănh", "telex"), ("manhaa", "mânh", "telex"), ("menhee", "mênh", "telex"), ("monhoo", "mônh", "telex"), ("monhow", "mơnh", "telex"), ("munhuw", "munhư", "telex"), ("mapaf", "mầp", "telex"), ("mapas", "mấp", "telex"), ("mapaj", "mập", "telex"), ("mapar", "mẩp", "telex"), ("mapax", "mẫp", "telex"), ("mapaw", "măp", "telex"), ("mapaa", "mâp", "telex"), ("mepee", "mêp", "telex"), ("mopoo", "môp", "telex"), ("mopow", "mơp", "telex"), ]; #[test] fn test_generated_bulk() { let mut failures = Vec::new(); for (i, &(input, expected, mode)) in TEST_CASES.iter().enumerate() { let im = match mode { "telex" => InputMethod::Telex, "vni" => InputMethod::Vni, _ => unreachable!(), }; let mut e = Engine::new(im); let actual = get_display(&process_input(&mut e, input)); if actual != expected { failures.push(format!("[{}] '{}' -> '{}' (expected '{}')", i, input, actual, expected)); } } if !failures.is_empty() { for f in &failures[..10.min(failures.len())] { eprintln!("{}", f); } panic!("{}/{} tests FAILED", failures.len(), TEST_CASES.len()); } eprintln!("All {} generated tests PASSED", TEST_CASES.len()); }