diff options
Diffstat (limited to 'vendor/tabled/tests/settings/highlingt_test.rs')
-rw-r--r-- | vendor/tabled/tests/settings/highlingt_test.rs | 419 |
1 files changed, 419 insertions, 0 deletions
diff --git a/vendor/tabled/tests/settings/highlingt_test.rs b/vendor/tabled/tests/settings/highlingt_test.rs new file mode 100644 index 000000000..cb5ce75f3 --- /dev/null +++ b/vendor/tabled/tests/settings/highlingt_test.rs @@ -0,0 +1,419 @@ +#![cfg(feature = "std")] + +use tabled::{ + builder::Builder, + settings::{ + highlight::Highlight, + object::{Cell, Columns, Frame, Object, Rows, Segment}, + style::{Border, Style}, + }, +}; + +use crate::matrix::Matrix; +use testing_table::{static_table, test_table}; + +test_table!( + highlingt_object_exceeds_boundaries, + Matrix::new(3, 3).with(Style::modern()).with(Highlight::new(Cell::new(1000, 0), Border::filled('+'))), + "┌───┬──────────┬──────────┬──────────┐" + "│ 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!( + highlingt_empty_table, + Builder::default() + .build() + .with(Highlight::new(Segment::all(), Border::filled('+'))), + "" +); + +test_table!( + highlingt_cell, + Matrix::new(3, 3) + .with(Style::modern()) + .with(Highlight::new(Cell::new(0, 0), Border::filled('+'))) + .with(Highlight::new(Cell::new(1, 1), Border::filled('*'))), + "+++++──────────┬──────────┬──────────┐" + "+ 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!( + highlingt_row, + Matrix::new(3, 3) + .with(Style::modern()) + .with(Highlight::new(Rows::single(0), Border::filled('+'))) + .with(Highlight::new(Rows::single(3), Border::filled('*'))), + "++++++++++++++++++++++++++++++++++++++" + "+ 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!( + highlingt_column, + Matrix::new(3, 3) + .with(Style::modern()) + .with(Highlight::new(Columns::single(0), Border::filled('+'))) + .with(Highlight::new(Columns::single(2), Border::filled('*'))), + "+++++──────────************──────────┐" + "+ 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!( + highlingt_row_range, + Matrix::new(3, 3) + .with(Style::modern()) + .with(Highlight::new(Rows::new(1..3), Border::filled('+'))), + "┌───┬──────────┬──────────┬──────────┐" + "│ 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!( + highlingt_column_range, + Matrix::new(3, 3) + .with(Style::modern()) + .with(Highlight::new(Columns::new(..2), Border::filled('+'))), + "++++++++++++++++──────────┬──────────┐" + "+ 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!( + highlingt_frame, + Matrix::new(3, 3) + .with(Style::modern()) + .with(Highlight::new( + Frame, + Border::filled('+') + .corner_top_left('*') + .corner_top_right('#') + .corner_bottom_left('@') + .corner_bottom_right('.'), + )), + "*++++++++++++++++++++++++++++++++++++#" + "+ 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!( + highlingt_full, + Matrix::new(3, 3) + .with(Style::modern()) + .with(Highlight::new( + Segment::all(), + Border::filled('+') + .corner_top_left('*') + .corner_top_right('#') + .corner_bottom_left('@') + .corner_bottom_right('.'), + )), + "*++++++++++++++++++++++++++++++++++++#" + "+ 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!( + highlingt_single_column, + Matrix::table(3, 0) + .with(Style::modern()) + .with(Highlight::new(Cell::new(0, 0), Border::default().left('*').top('x'))) + .with(Highlight::new(Rows::new(1..3), Border::default().left('n'))), + "┌xxx┐" + "* N │" + "├───┤" + "n 0 │" + "n───┤" + "n 1 │" + "├───┤" + "│ 2 │" + "└───┘" +); + +test_table!( + highlingt_several_times, + Matrix::new(3, 3) + .with(Style::modern()) + .with(Highlight::new(Frame, Border::filled('*'))) + .with(Highlight::new(Cell::new(1, 1), Border::filled('#'))) + .with(Highlight::new(Columns::single(3), Border::filled('x'))), + "**************************xxxxxxxxxxxx" + "* N │ column 0 │ column 1 x column 2 x" + "*───############──────────x──────────x" + "* 0 # 0-0 # 0-1 x 0-2 x" + "*───############──────────x──────────x" + "* 1 │ 1-0 │ 1-1 x 1-2 x" + "*───┼──────────┼──────────x──────────x" + "* 2 │ 2-0 │ 2-1 x 2-2 x" + "**************************xxxxxxxxxxxx" +); + +// @todo +// +// #[test] +// fn highlingt_empty_border() { +// let data = create_vector::<3, 3>(); +// let table = Table::new(&data) +// .with(Style::modern()) +// .with(Highlight::new(Frame, Border::empty())) +// .to_string(); + +// let expected = static_table!( +// " 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 " +// ); + +// assert_eq!(table, expected); +// } + +#[test] +fn highlingt_complex_figures() { + macro_rules! test_highlight { + ($object:expr, $expected:expr,) => { + let border = Border::filled('+') + .corner_top_left('*') + .corner_top_right('#') + .corner_bottom_left('@') + .corner_bottom_right('.'); + + let table = Matrix::new(3, 3) + .with(Style::modern()) + .with(Highlight::new($object, border)) + .to_string(); + + assert_eq!(table, $expected); + }; + } + + test_highlight!( + Segment::all().not(Segment::new(2.., 1..3)), + static_table!( + "*++++++++++++++++++++++++++++++++++++#" + "+ 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_highlight!( + Segment::all() + .not(Segment::new(0..1, 1..3)) + .not(Columns::single(0)), + static_table!( + "┌───┬──────────┬──────────*++++++++++#" + "│ 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_highlight!( + Segment::all().not(Segment::new(0..1, 1..3)), + static_table!( + "*+++#──────────┬──────────*++++++++++#" + "+ 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_highlight!( + Segment::all().not(Segment::new(1..2, 1..3)), + static_table!( + "*++++++++++++++++++++++++++++++++++++#" + "+ 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_highlight!( + Cell::new(0, 0) + .and(Cell::new(3, 3)) + .and(Cell::new(0, 3)) + .and(Cell::new(3, 0)), + static_table!( + "*+++#──────────┬──────────*++++++++++#" + "+ 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_highlight!( + Rows::single(0).and(Rows::single(3)), + static_table!( + "*++++++++++++++++++++++++++++++++++++#" + "+ 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_highlight!( + Columns::single(0).and(Columns::single(3)), + static_table!( + "*+++#──────────┬──────────*++++++++++#" + "+ 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_highlight!( + Segment::all().not(Cell::new(3, 1).and(Cell::new(3, 2))), + static_table!( + "*++++++++++++++++++++++++++++++++++++#" + "+ 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_highlight!( + Rows::single(0) + .and(Cell::new(1, 1).and(Cell::new(1, 2))) + .and(Cell::new(2, 3)), + static_table!( + "*++++++++++++++++++++++++++++++++++++#" + "+ 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_highlight!( + Segment::all() + .not(Segment::new(2.., 0..3)) + .not(Cell::new(1, 0)), + static_table!( + "*++++++++++++++++++++++++++++++++++++#" + "+ 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_highlight!( + Segment::all() + .not(Segment::new(..1, 1..)) + .not(Segment::new(1..2, 2..)) + .not(Cell::new(2, 3)), + static_table!( + "*+++#──────────┬──────────┬──────────┐" + "+ 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 +" + "@++++++++++++++++++++++++++++++++++++." + ), + ); +} |