|
| 1 | +#[cfg(test)] |
| 2 | +mod tests { |
| 3 | + use termal::formatc; |
| 4 | + use termint::{ |
| 5 | + buffer::Buffer, |
| 6 | + enums::Color, |
| 7 | + geometry::{Constraint, Rect}, |
| 8 | + widgets::{cache::Cache, Layout, Widget}, |
| 9 | + }; |
| 10 | + |
| 11 | + #[test] |
| 12 | + fn background_render() { |
| 13 | + let rect = Rect::new(1, 1, 10, 5); |
| 14 | + let mut buffer = Buffer::empty(rect); |
| 15 | + let mut cache = Cache::new(); |
| 16 | + |
| 17 | + let layout = Layout::vertical().bg(Color::Red).into(); |
| 18 | + cache.diff(&layout); |
| 19 | + layout.render(&mut buffer, Rect::new(3, 2, 6, 3), &mut cache); |
| 20 | + |
| 21 | + let bg = |
| 22 | + format!("{} {}", Color::Red.to_bg(), Color::Default.to_bg()); |
| 23 | + let expected = formatc!( |
| 24 | + " \n {bg} \n {bg} \n {bg} \n {'_}" |
| 25 | + ); |
| 26 | + assert_eq!(buffer.to_string(), expected); |
| 27 | + } |
| 28 | + |
| 29 | + #[test] |
| 30 | + fn padding_render() { |
| 31 | + let rect = Rect::new(1, 1, 10, 5); |
| 32 | + let mut buffer = Buffer::empty(rect); |
| 33 | + let mut cache = Cache::new(); |
| 34 | + |
| 35 | + let mut layout = Layout::vertical().padding((1, 2, 2, 3)); |
| 36 | + layout.push(Layout::vertical().bg(Color::Red), Constraint::Fill(1)); |
| 37 | + let layout = layout.into(); |
| 38 | + |
| 39 | + cache.diff(&layout); |
| 40 | + layout.render(&mut buffer, rect, &mut cache); |
| 41 | + |
| 42 | + let bg = |
| 43 | + format!("{} {}", Color::Red.to_bg(), Color::Default.to_bg()); |
| 44 | + let expected = formatc!( |
| 45 | + " \n {bg} \n {bg} \n \n {'_}" |
| 46 | + ); |
| 47 | + assert_eq!(buffer.to_string(), expected); |
| 48 | + } |
| 49 | + |
| 50 | + #[test] |
| 51 | + fn center_render() { |
| 52 | + let rect = Rect::new(1, 1, 10, 5); |
| 53 | + let mut buffer = Buffer::empty(rect); |
| 54 | + let mut cache = Cache::new(); |
| 55 | + |
| 56 | + let mut layout = Layout::horizontal().center(); |
| 57 | + let mut inner = Layout::vertical().center(); |
| 58 | + inner.push(Layout::vertical().bg(Color::Red), Constraint::Length(3)); |
| 59 | + layout.push(inner, Constraint::Length(2)); |
| 60 | + |
| 61 | + let layout = layout.into(); |
| 62 | + cache.diff(&layout); |
| 63 | + layout.render(&mut buffer, rect, &mut cache); |
| 64 | + |
| 65 | + let bg = format!("{} {}", Color::Red.to_bg(), Color::Default.to_bg()); |
| 66 | + let expected = formatc!( |
| 67 | + " \n {bg} \n {bg} \n {bg} \ |
| 68 | + \n {'_}" |
| 69 | + ); |
| 70 | + assert_eq!(buffer.to_string(), expected); |
| 71 | + } |
| 72 | +} |
0 commit comments