use bbml::render; use pretty_assertions::assert_eq; use ratatui::{ prelude::*, widgets::{Paragraph, Wrap}, }; #[test] fn test_table_small() { assert_eq!( dbg!(render("
123
456
789
").0), Paragraph::new(vec![ vec![Span::raw("┌─┬─┬─┐")].into(), vec![Span::raw("│"), Span::raw("1"), Span::raw("│"), Span::raw("2"), Span::raw("│"), Span::raw("3"), Span::raw("│")].into(), vec![Span::raw("├─┼─┼─┤")].into(), vec![Span::raw("│"), Span::raw("4"), Span::raw("│"), Span::raw("5"), Span::raw("│"), Span::raw("6"), Span::raw("│")].into(), vec![Span::raw("├─┼─┼─┤")].into(), vec![Span::raw("│"), Span::raw("7"), Span::raw("│"), Span::raw("8"), Span::raw("│"), Span::raw("9"), Span::raw("│")].into(), vec![Span::raw("└─┴─┴─┘")].into(), ]) .wrap(Wrap { trim: false }) ); } #[test] fn test_table_var_col_widths() { assert_eq!( dbg!( render( "
aaaaa
bbbbb
ccccc
" ) .0 ), Paragraph::new(vec![ vec![Span::raw("┌───┬───┬───┐")].into(), vec![ Span::raw("│"), Span::raw("aaa"), Span::raw("│"), Span::raw("a"), Span::raw(" "), Span::raw("│"), Span::raw("a"), Span::raw(" "), Span::raw("│") ] .into(), vec![Span::raw("├───┼───┼───┤")].into(), vec![ Span::raw("│"), Span::raw("b"), Span::raw(" "), Span::raw("│"), Span::raw("bbb"), Span::raw("│"), Span::raw("b"), Span::raw(" "), Span::raw("│") ] .into(), vec![Span::raw("├───┼───┼───┤")].into(), vec![ Span::raw("│"), Span::raw("c"), Span::raw(" "), Span::raw("│"), Span::raw("c"), Span::raw(" "), Span::raw("│"), Span::raw("ccc"), Span::raw("│") ] .into(), vec![Span::raw("└───┴───┴───┘")].into(), ]) .wrap(Wrap { trim: false }) ); } #[test] fn test_table_descends_thead_tbody() { assert_eq!( dbg!(render("
123
456
789
").0), Paragraph::new(vec![ vec![Span::raw("┌─┬─┬─┐")].into(), vec![Span::raw("│"), Span::raw("1"), Span::raw("│"), Span::raw("2"), Span::raw("│"), Span::raw("3"), Span::raw("│")].into(), vec![Span::raw("├─┼─┼─┤")].into(), vec![Span::raw("│"), Span::raw("4"), Span::raw("│"), Span::raw("5"), Span::raw("│"), Span::raw("6"), Span::raw("│")].into(), vec![Span::raw("├─┼─┼─┤")].into(), vec![Span::raw("│"), Span::raw("7"), Span::raw("│"), Span::raw("8"), Span::raw("│"), Span::raw("9"), Span::raw("│")].into(), vec![Span::raw("└─┴─┴─┘")].into(), ]) .wrap(Wrap { trim: false }) ); } #[test] fn test_table_imitate_margin_collapse() { assert_eq!( dbg!(render("

1

2

3

4

5

6

7

8

9

").0), Paragraph::new(vec![ vec![Span::raw("┌─┬─┬─┐")].into(), vec![Span::raw("│"), Span::raw("1"), Span::raw("│"), Span::raw("2"), Span::raw("│"), Span::raw("3"), Span::raw("│")].into(), vec![Span::raw("├─┼─┼─┤")].into(), vec![Span::raw("│"), Span::raw("4"), Span::raw("│"), Span::raw("5"), Span::raw("│"), Span::raw("6"), Span::raw("│")].into(), vec![Span::raw("├─┼─┼─┤")].into(), vec![Span::raw("│"), Span::raw("7"), Span::raw("│"), Span::raw("8"), Span::raw("│"), Span::raw("9"), Span::raw("│")].into(), vec![Span::raw("└─┴─┴─┘")].into(), ]) .wrap(Wrap { trim: false }) ); } #[test] fn test_table_width_wraps_properly() { assert_eq!( dbg!(render("
11111111111111111111111111111111111111111111111111111111111111111111111
").0), Paragraph::new(vec![ vec![Span::raw("┌────────────────────────────────────────────────────────────────────┐")].into(), vec![Span::raw("│"), Span::raw("11111111111111111111111111111111111111111111111111111111111111111111"), Span::raw("│")].into(), vec![Span::raw("│"), Span::raw("111"), Span::raw(" "), Span::raw("│")].into(), vec![Span::raw("└────────────────────────────────────────────────────────────────────┘")].into(), ]) .wrap(Wrap { trim: false }) ); }