buoyant 0.4.4

SwiftUI-like UIs in Rust for embedded devices
Documentation
use buoyant::{
    font::CharacterBufferFont,
    primitives::Point,
    render::{CharacterRender as _, CharacterRenderTarget as _},
    render_target::FixedTextBuffer,
    view::{
        make_render_tree, padding::Edges, shape::Rectangle, HorizontalTextAlignment,
        LayoutExtensions as _, RenderExtensions as _, Text,
    },
};

#[test]
fn background_inherits_foreground_size() {
    let font = CharacterBufferFont {};
    let view = Text::new("This is on\ntop", &font)
        .multiline_text_alignment(HorizontalTextAlignment::Center)
        .padding(Edges::All, 1)
        .background(|| Rectangle)
        .flex_frame()
        .with_infinite_max_width()
        .with_infinite_max_height()
        .foreground_color('-');

    let mut buffer = FixedTextBuffer::<14, 7>::default();

    let tree = make_render_tree(&view, buffer.size());

    tree.render(&mut buffer, &' ', Point::zero());
    assert_eq!(buffer.text[0].iter().collect::<String>(), "              ");
    assert_eq!(buffer.text[1].iter().collect::<String>(), " ------------ ");
    assert_eq!(buffer.text[2].iter().collect::<String>(), " -This is on- ");
    assert_eq!(buffer.text[3].iter().collect::<String>(), " ----top----- ");
    assert_eq!(buffer.text[4].iter().collect::<String>(), " ------------ ");
    assert_eq!(buffer.text[5].iter().collect::<String>(), "              ");
}