use bbml::render;
use pretty_assertions::assert_eq;
use ratatui::{
prelude::*,
widgets::{Paragraph, Wrap},
};
#[test]
fn test_table_small() {
assert_eq!(
dbg!(render("
").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(
""
)
.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("").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("").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 })
);
}