1#![doc = include_str!("../README.md")]
2#![warn(missing_docs)]
3
4pub mod element;
5mod render;
6mod style;
7
8pub use render::Renderer;
9pub use style::*;
10
11#[cfg(test)]
12mod tests {
13 use std::io;
14
15 use crate::element::IntoElement;
16
17 use super::*;
18
19 #[test]
20 fn with_style() -> io::Result<()> {
21 let mut r = Renderer::new(vec![]);
22 r.reset()?
23 .render((
24 "one".into_element(),
25 "two".with_style(Style::fg(4).with(Style::bg(5))),
26 "three".into_element(),
27 ))?
28 .finish()?;
29 assert_eq!(
30 r.writer,
31 b"\rone\x1b[m\x1b[38;5;4m\x1b[48;5;5mtwo\x1b[mthree\x1b[m\x1b[K\x1b[?25l",
32 );
33 Ok(())
34 }
35
36 #[test]
37 fn with_styled_fixed_width() -> io::Result<()> {
38 let mut r = Renderer::new(vec![]);
39 r.reset()?
40 .render(
41 "test"
42 .fixed_width(10)
43 .with_style(Style::fg(42).with(Style::bg(43))),
44 )?
45 .finish()?;
46 assert_eq!(
47 r.writer,
48 b"\r\x1b[38;5;42m\x1b[48;5;43mtest\x1b[m\x1b[38;5;42m\x1b[48;5;43m \x1b[m\x1b[K\x1b[?25l",
49 );
50 Ok(())
51 }
52}