fn test_complex()

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(())
    }