in src/components/bordering.rs [190:227]
fn test_complex() -> anyhow::Result<()> {
let component = Bordered::new(
Box::new(Echo::<Msg>::new(true)),
BorderedSpec {
top: Some("@@@".try_into()?),
left: None,
bottom: Some("@".try_into()?),
..Default::default()
},
);
let msg = Msg(vec![
vec!["Test"].try_into()?, // 4 chars
vec!["Longer"].try_into()?, // 6 chars
vec!["Even Longer", "ok"].try_into()?, // 13 chars
Line::default(),
]);
let output = component.draw(
&crate::state![&msg],
Dimensions::new(13, 7),
DrawMode::Normal,
)?;
// A single character on the right side of the message gets truncated to make way for side padding
let expected = vec![
vec!["@".repeat(13)].try_into()?,
vec!["@".repeat(13)].try_into()?,
vec!["@".repeat(13)].try_into()?,
vec!["Test", &" ".repeat(12 - 4), "|"].try_into()?,
vec!["Longer", &" ".repeat(12 - 6), "|"].try_into()?,
vec!["Even Longer", "o", "|"].try_into()?,
vec!["@".repeat(13)].try_into()?,
];
assert_eq!(output, expected);
Ok(())
}