| #![cfg(feature = "std")] |
| |
| use papergrid::color::AnsiColor; |
| use papergrid::config::{AlignmentHorizontal, Border, Borders, Entity, Indent, Sides}; |
| |
| use crate::util::grid; |
| use testing_table::test_table; |
| |
| test_table!( |
| override_by_global_alignment_0, |
| grid(2, 2) |
| .data([["xxxxx", "xx"], ["y", "yyyyyyyyyy"]]) |
| .config(|cfg| cfg.set_alignment_horizontal(Entity::Cell(0, 1), AlignmentHorizontal::Right)) |
| .build(), |
| "+-----+----------+" |
| "|xxxxx| xx|" |
| "+-----+----------+" |
| "|y |yyyyyyyyyy|" |
| "+-----+----------+" |
| ); |
| |
| test_table!( |
| override_by_global_alignment_1, |
| grid(2, 2) |
| .data([["xxxxx", "xx"], ["y", "yyyyyyyyyy"]]) |
| .config(|cfg| cfg.set_alignment_horizontal(Entity::Global, AlignmentHorizontal::Center)) |
| .build(), |
| "+-----+----------+" |
| "|xxxxx| xx |" |
| "+-----+----------+" |
| "| y |yyyyyyyyyy|" |
| "+-----+----------+" |
| ); |
| |
| test_table!( |
| remove_border_test, |
| grid(2, 2) |
| .config(|cfg| { |
| cfg.set_borders(Borders::default()); |
| cfg.set_border( |
| (0, 0), |
| Border { |
| top: Some('x'), |
| bottom: Some('o'), |
| left: Some('q'), |
| ..Default::default() |
| }, |
| ); |
| |
| cfg.remove_border((0, 0), (2, 2)); |
| }) |
| .build(), |
| "0-00-1\n1-01-1" |
| ); |
| |
| test_table!( |
| entity_row_overrides_column_intersection_0, |
| grid(2, 2) |
| .config(|cfg| { |
| cfg.set_borders(Borders::default()); |
| cfg.set_padding( |
| Entity::Column(0), |
| Sides { |
| bottom: Indent::new(3, '$'), |
| ..Default::default() |
| }, |
| ); |
| }) |
| .build(), |
| "0-00-1" |
| "$$$ " |
| "$$$ " |
| "$$$ " |
| "1-01-1" |
| "$$$ " |
| "$$$ " |
| "$$$ " |
| ); |
| |
| test_table!( |
| entity_row_overrides_column_intersection_1, |
| grid(2, 2) |
| .config(|cfg| { |
| cfg.set_borders(Borders::default()); |
| cfg.set_padding( |
| Entity::Column(0), |
| Sides { |
| bottom: Indent::new(3, '$'), |
| ..Default::default() |
| }, |
| ); |
| cfg.set_padding( |
| Entity::Row(1), |
| Sides { |
| bottom: Indent::new(2, '#'), |
| ..Default::default() |
| }, |
| ); |
| }) |
| .build(), |
| "0-00-1" |
| "$$$ " |
| "$$$ " |
| "$$$ " |
| "1-01-1" |
| "######" |
| "######" |
| ); |
| |
| test_table!( |
| entity_column_overrides_row_intersection_0, |
| grid(2, 2) |
| .config(|cfg| { |
| cfg.set_borders(Borders::default()); |
| cfg.set_padding( |
| Entity::Row(0), |
| Sides { |
| bottom: Indent::new(3, '$'), |
| ..Default::default() |
| }, |
| ); |
| }) |
| .build(), |
| "0-00-1\n$$$$$$\n$$$$$$\n$$$$$$\n1-01-1" |
| ); |
| |
| test_table!( |
| entity_column_overrides_row_intersection_1, |
| grid(2, 2) |
| .config(|cfg| { |
| cfg.set_borders(Borders::default()); |
| cfg.set_padding( |
| Entity::Row(0), |
| Sides::new( |
| Indent::default(), |
| Indent::default(), |
| Indent::default(), |
| Indent::new(3, '$'), |
| ), |
| ); |
| cfg.set_padding( |
| Entity::Column(1), |
| Sides::new( |
| Indent::default(), |
| Indent::default(), |
| Indent::default(), |
| Indent::new(2, '#'), |
| ), |
| ); |
| }) |
| .build(), |
| "0-00-1\n$$$###\n$$$###\n$$$###\n1-01-1\n ###\n ###" |
| ); |
| |
| test_table!( |
| test_justification_char_left_alignment, |
| grid(2, 2) |
| .data([["Hello", "World"], ["", "Hello Hello Hello Hello Hello"]]) |
| .config(|cfg| cfg.set_justification(Entity::Global, '$')) |
| .build(), |
| "+-----+-----------------------------+" |
| "|Hello|World$$$$$$$$$$$$$$$$$$$$$$$$|" |
| "+-----+-----------------------------+" |
| "|$$$$$|Hello Hello Hello Hello Hello|" |
| "+-----+-----------------------------+" |
| ); |
| |
| test_table!( |
| test_justification_char_right_alignment, |
| grid(2, 2) |
| .data([["Hello", "World"], ["", "Hello Hello Hello Hello Hello"]]) |
| .config(|cfg| { |
| cfg.set_justification(Entity::Global, '$'); |
| cfg.set_alignment_horizontal(Entity::Global, AlignmentHorizontal::Right); |
| }) |
| .build(), |
| "+-----+-----------------------------+" |
| "|Hello|$$$$$$$$$$$$$$$$$$$$$$$$World|" |
| "+-----+-----------------------------+" |
| "|$$$$$|Hello Hello Hello Hello Hello|" |
| "+-----+-----------------------------+" |
| ); |
| |
| test_table!( |
| test_justification_char_center_alignment, |
| grid(2, 2) |
| .data([["Hello", "World"], ["", "Hello Hello Hello Hello Hello"]]) |
| .config(|cfg| { |
| cfg.set_justification(Entity::Global, '$'); |
| cfg.set_alignment_horizontal(Entity::Global, AlignmentHorizontal::Center); |
| }) |
| .build(), |
| "+-----+-----------------------------+" |
| "|Hello|$$$$$$$$$$$$World$$$$$$$$$$$$|" |
| "+-----+-----------------------------+" |
| "|$$$$$|Hello Hello Hello Hello Hello|" |
| "+-----+-----------------------------+" |
| ); |
| |
| test_table!( |
| test_justification_color_left_alignment, |
| grid(2, 2) |
| .data([["Hello", "World"], ["", "Hello Hello Hello Hello Hello"]]) |
| .config(|cfg| { |
| cfg.set_justification(Entity::Global, '$'); |
| cfg.set_justification_color(Entity::Global, Some(AnsiColor::new("\u{1b}[34m".into(), "\u{1b}[39m".into()))); |
| }) |
| .build(), |
| "+-----+-----------------------------+" |
| "|Hello|World\u{1b}[34m$$$$$$$$$$$$$$$$$$$$$$$$\u{1b}[39m|" |
| "+-----+-----------------------------+" |
| "|\u{1b}[34m$$$$$\u{1b}[39m|Hello Hello Hello Hello Hello|" |
| "+-----+-----------------------------+" |
| ); |
| |
| test_table!( |
| test_justification_color_right_alignment, |
| grid(2, 2) |
| .data([["Hello", "World"], ["", "Hello Hello Hello Hello Hello"]]) |
| .config(|cfg| { |
| cfg.set_justification(Entity::Global, '$'); |
| cfg.set_justification_color(Entity::Global, Some(AnsiColor::new("\u{1b}[34m".into(), "\u{1b}[39m".into()))); |
| cfg.set_alignment_horizontal(Entity::Global, AlignmentHorizontal::Right); |
| }) |
| .build(), |
| "+-----+-----------------------------+" |
| "|Hello|\u{1b}[34m$$$$$$$$$$$$$$$$$$$$$$$$\u{1b}[39mWorld|" |
| "+-----+-----------------------------+" |
| "|\u{1b}[34m$$$$$\u{1b}[39m|Hello Hello Hello Hello Hello|" |
| "+-----+-----------------------------+" |
| ); |
| |
| test_table!( |
| test_justification_color_center_alignment, |
| grid(2, 2) |
| .data([["Hello", "World"], ["", "Hello Hello Hello Hello Hello"]]) |
| .config(|cfg| { |
| cfg.set_justification(Entity::Global, '$'); |
| cfg.set_justification_color(Entity::Global, Some(AnsiColor::new("\u{1b}[34m".into(), "\u{1b}[39m".into()))); |
| cfg.set_alignment_horizontal(Entity::Global, AlignmentHorizontal::Center); |
| }) |
| .build(), |
| "+-----+-----------------------------+" |
| "|Hello|\u{1b}[34m$$$$$$$$$$$$\u{1b}[39mWorld\u{1b}[34m$$$$$$$$$$$$\u{1b}[39m|" |
| "+-----+-----------------------------+" |
| "|\u{1b}[34m$$\u{1b}[39m\u{1b}[34m$$$\u{1b}[39m|Hello Hello Hello Hello Hello|" |
| "+-----+-----------------------------+" |
| ); |
| |
| test_table!( |
| test_justification_color_center_alignment_entity, |
| grid(2, 2) |
| .data([["Hello", "World"], ["", "Hello Hello Hello Hello Hello"]]) |
| .config(|cfg| { |
| cfg.set_justification(Entity::Cell(0, 0), '$'); |
| cfg.set_justification_color(Entity::Column(1), Some(AnsiColor::new("\u{1b}[34m".into(), "\u{1b}[39m".into()))); |
| cfg.set_alignment_horizontal(Entity::Row(2), AlignmentHorizontal::Center); |
| }) |
| .build(), |
| "+-----+-----------------------------+" |
| "|Hello|World\u{1b}[34m \u{1b}[39m|" |
| "+-----+-----------------------------+" |
| "| |Hello Hello Hello Hello Hello|" |
| "+-----+-----------------------------+" |
| ); |