tui/src/render/renderable_tests.rs
72 lines
use super::*;use pretty_assertions::assert_eq;struct HeightRenderable(u16);impl HeightRenderable { fn with_height(height: u16) -> Self { Self(height) }}impl Renderable for HeightRenderable { fn render(&self, _area: Rect, _buf: &mut Buffer) {} fn desired_height(&self, _width: u16) -> u16 { self.0 }}#[test]fn flex_redistributes_space_unused_by_short_children() { let mut flex = FlexRenderable::new(); flex.push( /*flex*/ 1, RenderableItem::Owned(Box::new(HeightRenderable::with_height(/*height*/ 20))), ); flex.push( /*flex*/ 1, RenderableItem::Owned(Box::new(HeightRenderable::with_height(/*height*/ 2))), ); let allocated = flex.allocate(Rect::new( /*x*/ 0, /*y*/ 0, /*width*/ 80, /*height*/ 10, )); assert_eq!( allocated .into_iter() .map(|area| area.height) .collect::<Vec<_>>(), vec![8, 2], );}#[test]fn flex_reserves_non_flex_space_before_flexible_children() { let mut flex = FlexRenderable::new(); flex.push( /*flex*/ 1, RenderableItem::Owned(Box::new(HeightRenderable::with_height(/*height*/ 20))), ); flex.push( /*flex*/ 0, RenderableItem::Owned(Box::new(HeightRenderable::with_height(/*height*/ 2))), ); flex.push( /*flex*/ 1, RenderableItem::Owned(Box::new(HeightRenderable::with_height(/*height*/ 20))), ); let allocated = flex.allocate(Rect::new( /*x*/ 0, /*y*/ 0, /*width*/ 80, /*height*/ 10, )); assert_eq!( allocated .into_iter() .map(|area| area.height) .collect::<Vec<_>>(), vec![4, 2, 4], );}