Files
codex/codex-rs/tui/src/footer_hint_tests.rs
T
Eric Traut e2a9ee05f4 Extract shared footer hint wrapping in the TUI (#44354)
## What changed

Replace duplicated footer wrapping in the MCP elicitation and request-user-input overlays with `wrap_hint_rows`. Preserve whole-hint grouping, display-width and separator accounting, oversized hints, and the single empty row for empty input.

## Testing

Add unit tests for Unicode display widths, whole-hint wrapping, oversized hints at zero width, and empty input.

GitOrigin-RevId: 4d8ead0acbfa3bf9241baedb86d2476566d26ebc
2026-09-10 00:57:33 +00:00

40 lines
974 B
Rust

use super::wrap_hint_rows;
use pretty_assertions::assert_eq;
use unicode_width::UnicodeWidthStr;
#[test]
fn wraps_whole_hints_using_display_width() {
let hints = ["↑ 上", "↓ 下", "enter select"];
assert_eq!(
wrap_hint_rows(
hints,
/*width*/ 9,
/*separator_width*/ 1,
|hint| { UnicodeWidthStr::width(*hint) }
),
vec![vec!["↑ 上", "↓ 下"], vec!["enter select"]]
);
}
#[test]
fn retains_oversized_hints_and_an_empty_row() {
assert_eq!(
wrap_hint_rows(
["ctrl+x stop", "esc back"],
/*width*/ 0,
/*separator_width*/ 3,
|hint| hint.len()
),
vec![vec!["ctrl+x stop"], vec!["esc back"]]
);
assert_eq!(
wrap_hint_rows(
Vec::<String>::new(),
/*width*/ 40,
/*separator_width*/ 3,
String::len
),
vec![Vec::<String>::new()]
);
}