From ef24de24a82fe681581cc130f342363c47c0969a Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 7 Jun 2024 07:48:48 +0200 Subject: Merging upstream version 1.75.0+dfsg1. Signed-off-by: Daniel Baumann --- vendor/tabled/tests/settings/panel_test.rs | 337 +++++++++++++++++++++++++++++ 1 file changed, 337 insertions(+) create mode 100644 vendor/tabled/tests/settings/panel_test.rs (limited to 'vendor/tabled/tests/settings/panel_test.rs') diff --git a/vendor/tabled/tests/settings/panel_test.rs b/vendor/tabled/tests/settings/panel_test.rs new file mode 100644 index 000000000..613fe1d0e --- /dev/null +++ b/vendor/tabled/tests/settings/panel_test.rs @@ -0,0 +1,337 @@ +#![cfg(feature = "std")] + +use tabled::settings::{ + object::{Cell, Object, Rows, Segment}, + style::{BorderSpanCorrection, HorizontalLine}, + Alignment, Border, Highlight, Modify, Panel, Span, Style, Width, +}; + +use crate::matrix::Matrix; +use testing_table::test_table; + +test_table!( + panel_has_no_style_by_default, + Matrix::new(3, 3).with(Style::psql()).with(Panel::horizontal(0,"Linux Distributions")), + " Linux Distributions " + "---+----------+----------+----------" + " N | column 0 | column 1 | column 2 " + " 0 | 0-0 | 0-1 | 0-2 " + " 1 | 1-0 | 1-1 | 1-2 " + " 2 | 2-0 | 2-1 | 2-2 " +); + +test_table!( + highlight_panel_0, + Matrix::new(3, 3) + .with(Panel::horizontal(0,"Linux Distributions")) + .with(Style::psql()) + .with(Highlight::new(Cell::new(0, 0), Border::filled('#'))), + "##### " + "# Linux Distributions " + "#####----------+----------+----------" + " N | column 0 | column 1 | column 2 " + " 0 | 0-0 | 0-1 | 0-2 " + " 1 | 1-0 | 1-1 | 1-2 " + " 2 | 2-0 | 2-1 | 2-2 " +); + +test_table!( + highlight_panel_1, + Matrix::new(3, 3) + .with(Panel::horizontal(0,"Linux Distributions")) + .with(Style::psql()) + .with(Highlight::new(Cell::new(0, 0), Border::filled('#'))) + .with(Highlight::new(Cell::new(0, 1), Border::filled('#'))) + .with(Highlight::new(Cell::new(0, 2), Border::filled('#'))) + .with(Highlight::new(Cell::new(0, 3), Border::filled('#'))), + "######################################" + "# Linux Distributions #" + "######################################" + " N | column 0 | column 1 | column 2 " + " 0 | 0-0 | 0-1 | 0-2 " + " 1 | 1-0 | 1-1 | 1-2 " + " 2 | 2-0 | 2-1 | 2-2 " +); + +test_table!( + top_panel, + Matrix::new(3, 3) + .with(Panel::horizontal(0,"Linux Distributions")) + .with(Modify::new(Segment::all()).with(Alignment::center())) + .with(Style::psql()), + " Linux Distributions " + "---+----------+----------+----------" + " N | column 0 | column 1 | column 2 " + " 0 | 0-0 | 0-1 | 0-2 " + " 1 | 1-0 | 1-1 | 1-2 " + " 2 | 2-0 | 2-1 | 2-2 " +); + +test_table!( + bottom_panel, + Matrix::new(3, 3) + .with(Panel::horizontal(4,"Linux Distributions")) + .with(Modify::new(Segment::all()).with(Alignment::center())) + .with(Style::psql()), + " N | column 0 | column 1 | column 2 " + "---+----------+----------+----------" + " 0 | 0-0 | 0-1 | 0-2 " + " 1 | 1-0 | 1-1 | 1-2 " + " 2 | 2-0 | 2-1 | 2-2 " + " Linux Distributions " +); + +test_table!( + inner_panel, + Matrix::new(3, 3) + .with(Panel::horizontal(2,"Linux Distributions")) + .with(Modify::new(Rows::new(2..)).with(Alignment::center())) + .with(Style::psql()), + " N | column 0 | column 1 | column 2 " + "---+----------+----------+----------" + " 0 | 0-0 | 0-1 | 0-2 " + " Linux Distributions " + " 1 | 1-0 | 1-1 | 1-2 " + " 2 | 2-0 | 2-1 | 2-2 " +); + +test_table!( + header, + Matrix::new(3, 3) + .with(Panel::header("Linux Distributions")) + .with(Style::psql()) + .with(Modify::new(Rows::new(0..1)).with(Alignment::center())), + " Linux Distributions " + "---+----------+----------+----------" + " N | column 0 | column 1 | column 2 " + " 0 | 0-0 | 0-1 | 0-2 " + " 1 | 1-0 | 1-1 | 1-2 " + " 2 | 2-0 | 2-1 | 2-2 " +); + +test_table!( + footer, + Matrix::new(3, 3) + .with(Panel::header("Linux Distributions")) + .with(Panel::footer("The end")) + .with(Style::psql()) + .with(Modify::new(Rows::first().and(Rows::last())).with(Alignment::center())), + " Linux Distributions " + "---+----------+----------+----------" + " N | column 0 | column 1 | column 2 " + " 0 | 0-0 | 0-1 | 0-2 " + " 1 | 1-0 | 1-1 | 1-2 " + " 2 | 2-0 | 2-1 | 2-2 " + " The end " +); + +test_table!( + panel_style_uses_most_left_and_right_cell_styles, + Matrix::iter([(0, 1)]).with(Panel::horizontal(0,"Numbers")).with(Style::modern()), + "┌─────┬─────┐" + "│ Numbers │" + "├─────┼─────┤" + "│ i32 │ i32 │" + "├─────┼─────┤" + "│ 0 │ 1 │" + "└─────┴─────┘" +); + +test_table!( + panel_style_change, + Matrix::iter([(0, 1)]) + .with(Panel::horizontal(0,"Numbers")) + .with(Style::modern().intersection_top('─').horizontals([HorizontalLine::new(1, Style::modern().get_horizontal()).intersection(Some('┬'))])) + .with(Modify::new(Cell::new(0, 0)).with(Alignment::center())), + "┌───────────┐" + "│ Numbers │" + "├─────┬─────┤" + "│ i32 │ i32 │" + "├─────┼─────┤" + "│ 0 │ 1 │" + "└─────┴─────┘" +); + +test_table!( + panel_style_uses_most_left_and_right_cell_styles_correct, + Matrix::iter([(0, 1)]) + .with(Panel::horizontal(0,"Numbers")) + .with(Style::modern()) + .with(BorderSpanCorrection), + "┌───────────┐" + "│ Numbers │" + "├─────┬─────┤" + "│ i32 │ i32 │" + "├─────┼─────┤" + "│ 0 │ 1 │" + "└─────┴─────┘" +); + +test_table!( + panel_style_change_correct, + Matrix::iter([(0, 1)]) + .with(Panel::horizontal(0,"Numbers")) + .with(Style::modern().intersection_top('─').horizontals([HorizontalLine::new(1, Style::modern().get_horizontal()).intersection(Some('┬'))])) + .with(BorderSpanCorrection) + .with(Modify::new(Cell::new(0, 0)).with(Alignment::center())), + "┌───────────┐" + "│ Numbers │" + "├───────────┤" // it's different because we use a top_intersection char by default when making style for `Panel`s. + "│ i32 │ i32 │" + "├─────┼─────┤" + "│ 0 │ 1 │" + "└─────┴─────┘" +); + +test_table!( + panel_in_single_column, + #[allow(clippy::needless_borrow)] + Matrix::iter(&[(0)]).with(Panel::horizontal(0,"Numbers")).with(Style::modern()), + "┌─────────┐" + "│ Numbers │" + "├─────────┤" + "│ i32 │" + "├─────────┤" + "│ 0 │" + "└─────────┘" +); + +test_table!( + panel_vertical_0, + Matrix::new(3, 3).with(Style::psql()).with(Panel::vertical(0,"Linux Distributions")), + " Linux Distributions | N | column 0 | column 1 | column 2 " + " +---+----------+----------+----------" + " | 0 | 0-0 | 0-1 | 0-2 " + " | 1 | 1-0 | 1-1 | 1-2 " + " | 2 | 2-0 | 2-1 | 2-2 " +); + +test_table!( + panel_vertical_1, + Matrix::new(3, 3).with(Style::psql()).with(Panel::vertical(1,"Linux Distributions")), + " N | Linux Distributions | column 0 | column 1 | column 2 " + "---+ +----------+----------+----------" + " 0 | | 0-0 | 0-1 | 0-2 " + " 1 | | 1-0 | 1-1 | 1-2 " + " 2 | | 2-0 | 2-1 | 2-2 " +); + +test_table!( + panel_vertical_2, + Matrix::new(3, 3).with(Style::psql()).with(Panel::vertical(4,"Linux Distributions")), + " N | column 0 | column 1 | column 2 | Linux Distributions " + "---+----------+----------+----------+ " + " 0 | 0-0 | 0-1 | 0-2 | " + " 1 | 1-0 | 1-1 | 1-2 | " + " 2 | 2-0 | 2-1 | 2-2 | " +); + +test_table!( + panel_vertical_0_wrap, + Matrix::new(3, 3).with(Style::psql()).with(Panel::vertical(0,"Linux Distributions")).with(Modify::new(Cell::new(0, 0)).with(Width::wrap(3))), + " Lin | N | column 0 | column 1 | column 2 " + " ux | | | | " + " Dis | | | | " + " tri +---+----------+----------+----------" + " but | 0 | 0-0 | 0-1 | 0-2 " + " ion | 1 | 1-0 | 1-1 | 1-2 " + " s | 2 | 2-0 | 2-1 | 2-2 " +); + +test_table!( + panel_vertical_0_wrap_0, + Matrix::new(3, 3).with(Style::psql()).with(Panel::vertical(0,"Linux Distributions")).with(Modify::new(Cell::new(0, 0)).with(Width::wrap(0))), + " | N | column 0 | column 1 | column 2 " + " +---+----------+----------+----------" + " | 0 | 0-0 | 0-1 | 0-2 " + " | 1 | 1-0 | 1-1 | 1-2 " + " | 2 | 2-0 | 2-1 | 2-2 " +); + +test_table!( + panel_vertical_0_wrap_100, + Matrix::new(3, 3).with(Style::psql()).with(Panel::vertical(0,"Linux Distributions")).with(Modify::new(Cell::new(0, 0)).with(Width::wrap(100))), + " Linux Distributions | N | column 0 | column 1 | column 2 " + " +---+----------+----------+----------" + " | 0 | 0-0 | 0-1 | 0-2 " + " | 1 | 1-0 | 1-1 | 1-2 " + " | 2 | 2-0 | 2-1 | 2-2 " +); + +test_table!( + panel_horizontal_set_0, + Matrix::new(3, 3) + .with(Style::psql()) + .with(Panel::horizontal(0,"Linux Distributions")) + .with(Panel::vertical(0,"asd")), + " asd | Linux Distributions " + " +---+----------+----------+----------" + " | N | column 0 | column 1 | column 2 " + " | 0 | 0-0 | 0-1 | 0-2 " + " | 1 | 1-0 | 1-1 | 1-2 " + " | 2 | 2-0 | 2-1 | 2-2 " +); + +test_table!( + panel_horizontal_set_1, + Matrix::new(3, 3) + .with(Style::psql()) + .with(Panel::horizontal(0,"Linux Distributions")) + .with(Panel::vertical(0,"asd")) + .with(Panel::vertical(5,"asd")) + , + " asd | Linux Distributions | asd " + " +---+----------+----------+----------+ " + " | N | column 0 | column 1 | column 2 | " + " | 0 | 0-0 | 0-1 | 0-2 | " + " | 1 | 1-0 | 1-1 | 1-2 | " + " | 2 | 2-0 | 2-1 | 2-2 | " +); + +test_table!( + ignore_col_span_intersect_with_other_span, + Matrix::new(3, 3) + .with(Style::psql()) + .with(Panel::horizontal(0,"Linux Distributions")) + .with(Panel::vertical(0,"asd")) + .with(Panel::vertical(5,"zxc")) + .with(Modify::new((1, 3)).with(Span::column(3)).with("wwwww")), + " asd | Linux Distributions | zxc " + " +---+----------+-------+----------+ " + " | N | column 0 | wwwww | column 2 | " + " | 0 | 0-0 | 0-1 | 0-2 | " + " | 1 | 1-0 | 1-1 | 1-2 | " + " | 2 | 2-0 | 2-1 | 2-2 | " +); + +test_table!( + panel_horizontal_x_2, + Matrix::new(3, 3) + .with(Style::psql()) + .with(Panel::horizontal(0,"Linux Distributions")) + .with(Panel::vertical(0,"asd")) + .with(Panel::vertical(5,"zxc")) + .with(Modify::new((1, 3)).with(Span::column(2)).with("wwwww")), + " asd | Linux Distributions | zxc " + " +---+----------+-----+-----+ " + " | N | column 0 | wwwww | " + " | 0 | 0-0 | 0-1 | 0-2 | " + " | 1 | 1-0 | 1-1 | 1-2 | " + " | 2 | 2-0 | 2-1 | 2-2 | " +); + +test_table!( + ignore_row_span_intersect_with_other_span, + Matrix::new(3, 3) + .with(Style::psql()) + .with(Panel::horizontal(2,"Linux Distributions")) + .with(Panel::vertical(0,"asd")) + .with(Panel::vertical(5,"zxc")) + .with(Modify::new((0, 3)).with(Span::row(4)).with("xxxxx")), + " asd | N | column 0 | xxxxx | column 2 | zxc " + " +---+----------+-------+----------+ " + " | 0 | 0-0 | 0-1 | 0-2 | " + " | Linux Distributions | " + " | 1 | 1-0 | 1-1 | 1-2 | " + " | 2 | 2-0 | 2-1 | 2-2 | " +); -- cgit v1.2.3