photon_ui/components/
spacer.rs1use crate::{
2 Component,
3 RenderError,
4 Rendered,
5};
6
7pub struct Spacer {
9 lines: usize,
10}
11
12impl Spacer {
13 pub fn new(lines: usize) -> Self {
15 Self { lines }
16 }
17}
18
19impl Component for Spacer {
20 fn render(&self, _width: u16) -> Result<Rendered, RenderError> {
21 Ok(Rendered {
22 lines: vec!["".to_string(); self.lines],
23 cursor: None,
24 images: Vec::new(),
25 })
26 }
27}
28
29#[cfg(test)]
30mod tests {
31 use super::*;
32
33 #[test]
34 fn spacer_renders_requested_lines() {
35 let spacer = Spacer::new(3);
36 let rendered = spacer.render(80).unwrap();
37 assert_eq!(rendered.lines.len(), 3);
38 assert!(rendered.lines.iter().all(|line| line.is_empty()));
39 }
40
41 #[test]
42 fn spacer_zero_lines() {
43 let spacer = Spacer::new(0);
44 let rendered = spacer.render(80).unwrap();
45 assert!(rendered.lines.is_empty());
46 }
47}