termint 0.8.1

Library for colored printing and Terminal User Interfaces
Documentation
#[cfg(test)]
mod tests {
    use termal::formatc;
    use termint::{
        buffer::Buffer,
        enums::Color,
        geometry::{Constraint, Rect},
        widgets::{Element, Layout, LayoutNode, Widget},
    };

    #[test]
    fn background_render() {
        let rect = Rect::new(1, 1, 10, 5);
        let mut buffer = Buffer::empty(rect);

        let layout: Element<()> = Layout::vertical().bg(Color::Red).into();
        let mut node = LayoutNode::new(&layout);
        node.layout(&layout, Rect::new(3, 2, 6, 3));
        layout.render(&mut buffer, &node);

        let bg =
            format!("{}      {}", Color::Red.to_bg(), Color::Default.to_bg());
        let expected = formatc!(
            "          \n  {bg}  \n  {bg}  \n  {bg}  \n          {'_}"
        );
        assert_eq!(buffer.to_string(), expected);
    }

    #[test]
    fn padding_render() {
        let rect = Rect::new(1, 1, 10, 5);
        let mut buffer = Buffer::empty(rect);

        let mut layout = Layout::vertical().padding((1, 2, 2, 3));
        layout.push(Layout::vertical().bg(Color::Red), Constraint::Fill(1));
        let layout: Element<()> = layout.into();

        let mut node = LayoutNode::new(&layout);
        node.layout(&layout, rect);
        layout.render(&mut buffer, &node);

        let bg =
            format!("{}     {}", Color::Red.to_bg(), Color::Default.to_bg());
        let expected = formatc!(
            "          \n   {bg}  \n   {bg}  \n          \n          {'_}"
        );
        assert_eq!(buffer.to_string(), expected);
    }

    #[test]
    fn center_render() {
        let rect = Rect::new(1, 1, 10, 5);
        let mut buffer = Buffer::empty(rect);

        let mut layout = Layout::horizontal().center();
        let mut inner = Layout::vertical().center();
        inner.push(Layout::vertical().bg(Color::Red), Constraint::Length(3));
        layout.push(inner, Constraint::Length(2));

        let layout: Element<()> = layout.into();
        let mut node = LayoutNode::new(&layout);
        node.layout(&layout, rect);
        layout.render(&mut buffer, &node);

        let bg = format!("{}  {}", Color::Red.to_bg(), Color::Default.to_bg());
        let expected = formatc!(
            "          \n    {bg}    \n    {bg}    \n    {bg}    \
            \n          {'_}"
        );
        assert_eq!(buffer.to_string(), expected);
    }
}