summaryrefslogtreecommitdiffstats
path: root/vendor/papergrid/tests/grid/row_span.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/papergrid/tests/grid/row_span.rs')
-rw-r--r--vendor/papergrid/tests/grid/row_span.rs1062
1 files changed, 1062 insertions, 0 deletions
diff --git a/vendor/papergrid/tests/grid/row_span.rs b/vendor/papergrid/tests/grid/row_span.rs
new file mode 100644
index 000000000..054ee2af3
--- /dev/null
+++ b/vendor/papergrid/tests/grid/row_span.rs
@@ -0,0 +1,1062 @@
+#![cfg(feature = "std")]
+
+use papergrid::config::{
+ AlignmentHorizontal, AlignmentVertical, Borders,
+ Entity::{self, *},
+ Indent, Sides,
+};
+
+use crate::util::grid;
+use testing_table::test_table;
+
+test_table!(
+ _2x2_vertical_alignment_center,
+ grid(2, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_alignment_vertical(Cell(0, 0), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+"
+ "| |0-1|"
+ "+0-0+---+"
+ "| |1-1|"
+ "+---+---+"
+);
+
+test_table!(
+ _2x2_vertical_alignment_bottom,
+ grid(2, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_alignment_vertical(Cell(0, 0), AlignmentVertical::Bottom);
+ })
+ .build(),
+ "+---+---+"
+ "| |0-1|"
+ "+ +---+"
+ "|0-0|1-1|"
+ "+---+---+"
+);
+
+test_table!(
+ _2x2_multiline,
+ grid(2, 2)
+ .change_cell((0, 0), "0-0\n0-1xxx")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_alignment_vertical(Cell(0, 0), AlignmentVertical::Center);
+ })
+ .build(),
+ "+------+---+"
+ "|0-0 |0-1|"
+ "+0-1xxx+---+"
+ "| |1-1|"
+ "+------+---+"
+);
+
+test_table!(
+ _2x2_multiline_vertical_alignment_bottom,
+ grid(2, 2)
+ .change_cell((0, 0), "0-0\n0-1xxx")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_alignment_vertical(Cell(0, 0), AlignmentVertical::Bottom);
+ })
+ .build(),
+ "+------+---+"
+ "| |0-1|"
+ "+0-0 +---+"
+ "|0-1xxx|1-1|"
+ "+------+---+"
+);
+
+test_table!(
+ _4x3_multiline_0,
+ grid(4, 3)
+ .data([
+ ["first line", "0-1", "full last line"],
+ ["", "1", ""],
+ ["0", "1", ""],
+ ["3-0", "3-1", ""],
+ ])
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 2), 4);
+ })
+ .build(),
+ "+----------+---+--------------+"
+ "|first line|0-1|full last line|"
+ "+ +---+ +"
+ "| |1 | |"
+ "+----------+---+ +"
+ "|0 |1 | |"
+ "+----------+---+ +"
+ "|3-0 |3-1| |"
+ "+----------+---+--------------+"
+);
+
+test_table!(
+ _3x2_with_horizontal_ident_on_spanned_cell,
+ grid(3, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_padding(Cell(1, 0), Sides::new(Indent::spaced(4), Indent::spaced(4), Indent::default(), Indent::default()));
+ })
+ .build(),
+ "+---+---+"
+ "|0-0|0-1|"
+ "+ +---+"
+ "| |1-1|"
+ "+---+---+"
+ "|2-0|2-1|"
+ "+---+---+"
+);
+
+test_table!(
+ _3x2_with_horizontal_ident,
+ grid(3, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_padding(Cell(0, 0), Sides::new(Indent::spaced(4), Indent::spaced(4), Indent::default(), Indent::default()));
+ })
+ .build(),
+ "+-----------+---+"
+ "| 0-0 |0-1|"
+ "+ +---+"
+ "| |1-1|"
+ "+-----------+---+"
+ "|2-0 |2-1|"
+ "+-----------+---+"
+);
+
+test_table!(
+ _3x2_with_vertical_ident,
+ grid(3, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_padding(Cell(0, 0), Sides::new(Indent::default(), Indent::default(), Indent::spaced(4), Indent::spaced(4)));
+ })
+ .build(),
+ "+---+---+"
+ "| |0-1|"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+0-0+---+"
+ "| |1-1|"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+---+---+"
+ "|2-0|2-1|"
+ "+---+---+"
+);
+
+test_table!(
+ _3x3_render_0,
+ grid(3, 3)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 3);
+ cfg.set_row_span((0, 1), 2);
+ cfg.set_row_span((0, 2), 2);
+ })
+ .build(),
+ "+---+---+---+"
+ "+0-0+0-1+0-2+"
+ "+ +---+---+"
+ "| |2-1|2-2|"
+ "+---+---+---+"
+);
+
+test_table!(
+ _3x3_render_1,
+ grid(3, 3)
+ .change_cell((0, 1), "t\ne\nx\nt")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 3);
+ cfg.set_row_span((0, 1), 2);
+ cfg.set_row_span((0, 2), 2);
+ })
+ .build(),
+ "+---+---+---+"
+ "|0-0|t |0-2|"
+ "| |e | |"
+ "+ +x + +"
+ "| |t | |"
+ "+ +---+---+"
+ "| |2-1|2-2|"
+ "+---+---+---+"
+);
+
+test_table!(
+ _3x3_coliison_0,
+ grid(3, 3)
+ .change_cell((0, 0), "0-0xxxxxxx")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((1, 1), 2);
+ })
+ .build(),
+ "+----------+---+---+"
+ "|0-0xxxxxxx|0-1|0-2|"
+ "+ +---+---+"
+ "| |1-1|1-2|"
+ "+----------+ +---+"
+ "|2-0 | |2-2|"
+ "+----------+---+---+"
+);
+
+test_table!(
+ _3x3_coliison_1,
+ grid(3, 3)
+ .change_cell((1, 1), "1-1xxxxxxx")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((1, 1), 2);
+ })
+ .build(),
+ "+---+----------+---+"
+ "|0-0|0-1 |0-2|"
+ "+ +----------+---+"
+ "| |1-1xxxxxxx|1-2|"
+ "+---+ +---+"
+ "|2-0| |2-2|"
+ "+---+----------+---+"
+);
+
+test_table!(
+ _3x3_coliison_2,
+ grid(3, 3)
+ .change_cell((1, 1), "1-1\nx\nx\nxxxxx")
+ .change_cell((0, 2), "2-0x\nxxx\nxx\nxxxxxxx")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((1, 1), 2);
+ })
+ .build(),
+ "+---+-----+-------+"
+ "|0-0|0-1 |2-0x |"
+ "| | |xxx |"
+ "| | |xx |"
+ "| | |xxxxxxx|"
+ "+ +-----+-------+"
+ "| |1-1 |1-2 |"
+ "| |x | |"
+ "+---+x +-------+"
+ "|2-0|xxxxx|2-2 |"
+ "+---+-----+-------+"
+);
+
+test_table!(
+ _3x3_coliison_3,
+ grid(3, 3)
+ .change_cell((1, 2), "2-1\nxx\nxx\nxx\nxxxxxx\nx")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((1, 1), 2);
+ })
+ .build(),
+ "+---+---+------+"
+ "|0-0|0-1|0-2 |"
+ "+ +---+------+"
+ "| |1-1|2-1 |"
+ "| | |xx |"
+ "| | |xx |"
+ "| | |xx |"
+ "| | |xxxxxx|"
+ "| | |x |"
+ "+---+ +------+"
+ "|2-0| |2-2 |"
+ "+---+---+------+"
+);
+
+test_table!(
+ _3x3_coliison_4,
+ grid(3, 3)
+ .change_cell((2, 1), "0-2\nx\nx\nx\nx\nxxxxxxx\nx\nx")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((1, 2), 2);
+ })
+ .build(),
+ "+---+-------+---+"
+ "|0-0|0-1 |0-2|"
+ "+ +-------+---+"
+ "| |1-1 |1-2|"
+ "+---+-------+ +"
+ "|2-0|0-2 | |"
+ "| |x | |"
+ "| |x | |"
+ "| |x | |"
+ "| |x | |"
+ "| |xxxxxxx| |"
+ "| |x | |"
+ "| |x | |"
+ "+---+-------+---+"
+);
+
+test_table!(
+ _3x3_first_row,
+ grid(3, 3)
+ .change_cell((0, 0), "0-0\nxx\nx\nx\nx\nx\nx")
+ .config(|cfg|{ cfg.set_row_span((0, 0), 2); })
+ .build(),
+ "+---+---+---+"
+ "|0-0|0-1|0-2|"
+ "|xx | | |"
+ "|x | | |"
+ "+x +---+---+"
+ "|x |1-1|1-2|"
+ "|x | | |"
+ "|x | | |"
+ "+---+---+---+"
+ "|2-0|2-1|2-2|"
+ "+---+---+---+"
+);
+
+test_table!(
+ _2x3_with_different_length,
+ grid(2, 3)
+ .change_cell((0, 0), "f\nir\nst\n ro\nw")
+ .change_cell((0, 2), "a\n \nlonger\n \nsecond\n \nrow")
+ .change_cell((1, 0), "0")
+ .change_cell((1, 1), "1")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 2), 2);
+ })
+ .build(),
+ "+---+---+------+"
+ "|f |0-1|a |"
+ "|ir | | |"
+ "|st | |longer|"
+ "+ ro+---+ +"
+ "|w |1 |second|"
+ "| | | |"
+ "| | |row |"
+ "+---+---+------+"
+);
+
+test_table!(
+ _2x2_with_odd_length,
+ grid(2, 2)
+ .change_cell((0, 0), "3\n \n \n ")
+ .change_cell((0, 1), "2")
+ .change_cell((1, 1), "4")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ })
+ .build(),
+ "+-+-+"
+ "|3|2|"
+ "| | |"
+ "+ +-+"
+ "| |4|"
+ "+-+-+"
+);
+
+test_table!(
+ _2x3_only_col_spaned,
+ grid(2, 3)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ cfg.set_row_span((0, 2), 2);
+ })
+ .build(),
+ "+---+---+---+"
+ "+0-0+0-1+0-2+"
+ "+---+---+---+"
+);
+
+test_table!(
+ _2x2_render_0,
+ grid(2, 2)
+ .change_cell((0, 0), "1\n\n\n\n\n\n\n23")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ })
+ .build(),
+ "+--+---+"
+ "|1 |0-1|"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+ +---+"
+ "| |1-1|"
+ "| | |"
+ "|23| |"
+ "+--+---+"
+);
+
+test_table!(
+ _2x2_render_1,
+ grid(2, 2)
+ .data([["12\n3\n4", "a\ns\ndw"], ["asd", "asd"]])
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ })
+ .build(),
+ "+--+--+"
+ "|12|a |"
+ "+3 +s +"
+ "|4 |dw|"
+ "+--+--+"
+);
+
+test_table!(
+ _2x2_render_2,
+ grid(2, 2)
+ .data([["1", "a"], ["asd", "asd"]])
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ })
+ .build(),
+ "+-+-+"
+ "+1+a+"
+ "+-+-+"
+);
+
+test_table!(
+ _2x2_render_3,
+ grid(2, 2)
+ .data([["1as\nd\n", "a"], ["as\ndasdds\na", "asd"]])
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ })
+ .build(),
+ "+---+-+"
+ "|1as|a|"
+ "+d + +"
+ "| | |"
+ "+---+-+"
+);
+
+test_table!(
+ _2x2_render_4,
+ grid(2, 2)
+ .data([["1as\nd\n", "a"], ["as\ndasdds\na", "asd"]])
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ cfg.set_alignment_vertical(Entity::Global, AlignmentVertical::Center)
+ })
+ .build(),
+ "+---+-+"
+ "|1as| |"
+ "+d +a+"
+ "| | |"
+ "+---+-+"
+);
+
+test_table!(
+ _2x2_render_5,
+ grid(2, 2)
+ .data([["1a\ns\nd\n", "a"], ["as\ndasdds\na", "asd"]])
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ cfg.set_alignment_vertical(Entity::Global, AlignmentVertical::Center)
+ })
+ .build(),
+ "+--+-+"
+ "|1a| |"
+ "|s |a|"
+ "+d + +"
+ "| | |"
+ "+--+-+"
+);
+
+test_table!(
+ _2x2_render_6,
+ grid(2, 2)
+ .data([["1a\ns\nd", "a"], ["as\ndasdds\na", "asd"]])
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ cfg.set_alignment_vertical(Entity::Global, AlignmentVertical::Bottom)
+ })
+ .build(),
+ "+--+-+"
+ "|1a| |"
+ "+s + +"
+ "|d |a|"
+ "+--+-+"
+);
+
+test_table!(
+ _2x2_with_no_split_style,
+ grid(2, 2)
+ .change_cell((0, 0), "1\n2\n3")
+ .config(|cfg|{
+ cfg.set_borders(Borders::default());
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_alignment_vertical(Cell(0, 0), AlignmentVertical::Center);
+ })
+ .build(),
+ "10-1"
+ "2 "
+ "31-1"
+);
+
+test_table!(
+ _3x2_with_zero_row_span_0,
+ grid(3, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ })
+ .build(),
+ "+---+---+"
+ "|0-0|0-1|"
+ "+ +---+"
+ "| |1-1|"
+ "+---+---+"
+ "|2-0|2-1|"
+ "+---+---+"
+);
+
+test_table!(
+ _3x2_with_zero_row_span_1,
+ grid(3, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ })
+ .build(),
+ "+---+---+"
+ "+0-0+0-1+"
+ "+---+---+"
+ "|2-0|2-1|"
+ "+---+---+"
+);
+
+test_table!(
+ _3x2_with_zero_row_span_2,
+ grid(3, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 1), 3);
+ })
+ .build(),
+ "+---+---+"
+ "|0-0|0-1|"
+ "+---+ +"
+ "|1-0| |"
+ "+---+ +"
+ "|2-0| |"
+ "+---+---+"
+);
+
+test_table!(
+ _3x2_with_zero_row_span_3,
+ grid(3, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 1), 3);
+ cfg.set_row_span((0, 0), 3);
+ })
+ .build(),
+ "+---+---+"
+ "+0-0+0-1+"
+ "+ + +"
+ "+---+---+"
+);
+
+test_table!(
+ _2x2_with_zero_row_span_4,
+ grid(2, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ })
+ .build(),
+ "+---+---+"
+ "+0-0+0-1+"
+ "+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_0,
+ grid(4, 4)
+ .change_cell((1, 1), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((1, 1), 2);
+ cfg.set_column_span((1, 1), 2);
+ cfg.set_alignment_horizontal(Cell(1, 1), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(1, 1), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "|0-0|0-1|0-2|0-3|"
+ "+---+---+---+---+"
+ "|1-0| 123 |1-3|"
+ "| | 345 | |"
+ "+---+ 555 +---+"
+ "|2-0| 333 |2-3|"
+ "+---+---+---+---+"
+ "|3-0|3-1|3-2|3-3|"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_1,
+ grid(4, 4)
+ .change_cell((0, 0), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_alignment_horizontal(Cell(0, 0), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(0, 0), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "| 123 |0-2|0-3|"
+ "| 345 | | |"
+ "+ 555 +---+---+"
+ "| 333 |1-2|1-3|"
+ "+---+---+---+---+"
+ "|2-0|2-1|2-2|2-3|"
+ "+---+---+---+---+"
+ "|3-0|3-1|3-2|3-3|"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_2,
+ grid(4, 4)
+ .change_cell((2, 0), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((2, 0), 2);
+ cfg.set_column_span((2, 0), 2);
+ cfg.set_alignment_horizontal(Cell(2, 0), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(2, 0), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "|0-0|0-1|0-2|0-3|"
+ "+---+---+---+---+"
+ "|1-0|1-1|1-2|1-3|"
+ "+---+---+---+---+"
+ "| 123 |2-2|2-3|"
+ "| 345 | | |"
+ "+ 555 +---+---+"
+ "| 333 |3-2|3-3|"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_3,
+ grid(4, 4)
+ .change_cell((2, 2), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((2, 2), 2);
+ cfg.set_column_span((2, 2), 2);
+ cfg.set_alignment_horizontal(Cell(2, 2), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(2, 2), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "|0-0|0-1|0-2|0-3|"
+ "+---+---+---+---+"
+ "|1-0|1-1|1-2|1-3|"
+ "+---+---+---+---+"
+ "|2-0|2-1| 123 |"
+ "| | | 345 |"
+ "+---+---+ 555 +"
+ "|3-0|3-1| 333 |"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_4,
+ grid(4, 4)
+ .change_cell((0, 2), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((0, 2), 2);
+ cfg.set_column_span((0, 2), 2);
+ cfg.set_alignment_horizontal(Cell(0, 2), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(0, 2), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "|0-0|0-1| 123 |"
+ "| | | 345 |"
+ "+---+---+ 555 +"
+ "|1-0|1-1| 333 |"
+ "+---+---+---+---+"
+ "|2-0|2-1|2-2|2-3|"
+ "+---+---+---+---+"
+ "|3-0|3-1|3-2|3-3|"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_5,
+ grid(4, 4)
+ .change_cell((0, 1), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((0, 1), 2);
+ cfg.set_column_span((0, 1), 2);
+ cfg.set_alignment_horizontal(Cell(0, 1), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(0, 1), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "|0-0| 123 |0-3|"
+ "| | 345 | |"
+ "+---+ 555 +---+"
+ "|1-0| 333 |1-3|"
+ "+---+---+---+---+"
+ "|2-0|2-1|2-2|2-3|"
+ "+---+---+---+---+"
+ "|3-0|3-1|3-2|3-3|"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_6,
+ grid(4, 4)
+ .change_cell((1, 1), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((1, 1), 3);
+ cfg.set_column_span((1, 1), 3);
+ cfg.set_alignment_horizontal(Cell(1, 1), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(1, 1), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "|0-0|0-1|0-2|0-3|"
+ "+---+---+---+---+"
+ "|1-0| 123 |"
+ "+---+ 345 +"
+ "|2-0| 555 |"
+ "+---+ 333 +"
+ "|3-0| |"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_7,
+ grid(4, 4)
+ .change_cell((0, 0), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 3);
+ cfg.set_column_span((0, 0), 3);
+ cfg.set_alignment_horizontal(Cell(0, 0), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(0, 0), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "| 123 |0-3|"
+ "+ 345 +---+"
+ "| 555 |1-3|"
+ "+ 333 +---+"
+ "| |2-3|"
+ "+---+---+---+---+"
+ "|3-0|3-1|3-2|3-3|"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_8,
+ grid(4, 4)
+ .change_cell((0, 1), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((0, 1), 3);
+ cfg.set_column_span((0, 1), 3);
+ cfg.set_alignment_horizontal(Cell(0, 1), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(0, 1), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "|0-0| 123 |"
+ "+---+ 345 +"
+ "|1-0| 555 |"
+ "+---+ 333 +"
+ "|2-0| |"
+ "+---+---+---+---+"
+ "|3-0|3-1|3-2|3-3|"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_9,
+ grid(4, 4)
+ .change_cell((1, 0), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((1, 0), 3);
+ cfg.set_column_span((1, 0), 3);
+ cfg.set_alignment_horizontal(Cell(1, 0), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(1, 0), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "|0-0|0-1|0-2|0-3|"
+ "+---+---+---+---+"
+ "| 123 |1-3|"
+ "+ 345 +---+"
+ "| 555 |2-3|"
+ "+ 333 +---+"
+ "| |3-3|"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_10,
+ grid(4, 4)
+ .change_cell((0, 0), "hello\nworld\n!\n!\n!\n!")
+ .config(|cfg|{
+ cfg.set_column_span((1, 1), 2);
+ cfg.set_column_span((3, 0), 3);
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 3), 3);
+ })
+ .build(),
+ "+-----+---+---+---+"
+ "|hello|0-1|0-2|0-3|"
+ "|world| | | |"
+ "|! | | | |"
+ "+! +---+---+ +"
+ "|! |1-1 | |"
+ "|! | | |"
+ "+-----+---+---+ +"
+ "|2-0 |2-1|2-2| |"
+ "+-----+---+---+---+"
+ "|3-0 |3-3|"
+ "+-----+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_11,
+ grid(4, 4)
+ .change_cell((0, 2), "q\nw\ne\nr\nt")
+ .change_cell((0, 3), "q1\nw1\ne1\nr1\nt1")
+ .config(|cfg|{
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_row_span((0, 2), 2);
+ cfg.set_row_span((0, 3), 3);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "|0-0 |q |q1 |"
+ "| |w |w1 |"
+ "+---+---+e +e1 +"
+ "|1-0|1-1|r |r1 |"
+ "| | |t |t1 |"
+ "+---+---+---+ +"
+ "|2-0|2-1|2-2| |"
+ "+---+---+---+---+"
+ "|3-0|3-1|3-2|3-3|"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _3x5_with_row_span_and_col_span_12,
+ grid(3, 5)
+ .change_cell((0, 3), "q\nw\ne\nr\nt")
+ .change_cell((0, 4), "q1\nw1\ne1\nr1\nt1")
+ .config(|cfg|{
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_row_span((0, 3), 2);
+ cfg.set_row_span((0, 4), 3);
+ })
+ .build(),
+ "+---+---+---+---+--+"
+ "|0-0 |0-2|q |q1|"
+ "| | |w |w1|"
+ "+---+---+---+e +e1+"
+ "|1-0|1-1|1-2|r |r1|"
+ "| | | |t |t1|"
+ "+---+---+---+---+ +"
+ "|2-0|2-1|2-2|2-3| |"
+ "+---+---+---+---+--+"
+);
+
+test_table!(
+ _3x5_with_row_span_and_col_span_13,
+ grid(3, 5)
+ .change_cell((0, 3), "q\nw\ne\nr\nt\n")
+ .change_cell((0, 4), "q1\nw1\ne1\nr1\nt1\n")
+ .config(|cfg|{
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_row_span((0, 3), 2);
+ cfg.set_row_span((0, 4), 3);
+ })
+ .build(),
+ "+---+---+---+---+--+"
+ "|0-0 |0-2|q |q1|"
+ "| | |w |w1|"
+ "| | |e |e1|"
+ "+---+---+---+r +r1+"
+ "|1-0|1-1|1-2|t |t1|"
+ "| | | | | |"
+ "+---+---+---+---+ +"
+ "|2-0|2-1|2-2|2-3| |"
+ "+---+---+---+---+--+"
+);
+
+test_table!(
+ _3x5_with_row_span_and_col_span_14,
+ grid(3, 5)
+ .change_cell((0, 3), "q\nw\ne\nr\nt\n")
+ .change_cell((0, 4), "q1\nw1\ne1\nr1\nt1\n")
+ .config(|cfg|{
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_row_span((0, 3), 2);
+ cfg.set_row_span((0, 4), 3);
+ cfg.set_padding(
+ Cell(0, 0),
+ Sides::new(Indent::new(2, ' '), Indent::new(2, ' '), Indent::new(2, ' '), Indent::new(2, ' '))
+ );
+ cfg.set_padding(
+ Cell(0, 3),
+ Sides::new(Indent::new(2, ' '), Indent::new(2, ' '), Indent::new(2, ' '), Indent::new(2, ' '))
+ );
+ cfg.set_padding(
+ Cell(1, 2),
+ Sides::new(Indent::new(2, ' '), Indent::new(2, ' '), Indent::new(4, ' '), Indent::new(2, ' '))
+ );
+ })
+ .build(),
+ "+---+---+-------+-----+--+"
+ "| |0-2 | |q1|"
+ "| | | |w1|"
+ "| 0-0 | | q |e1|"
+ "| | | w |r1|"
+ "| | | e |t1|"
+ "+---+---+-------+ r + +"
+ "|1-0|1-1| | t | |"
+ "| | | | | |"
+ "| | | | | |"
+ "| | | | | |"
+ "| | | 1-2 | | |"
+ "| | | | | |"
+ "| | | | | |"
+ "+---+---+-------+-----+ +"
+ "|2-0|2-1|2-2 |2-3 | |"
+ "+---+---+-------+-----+--+"
+);
+
+// is this correct?
+test_table!(
+ _3x4_with_row_span_and_col_span_13,
+ grid(3, 5)
+ .config(|cfg|{
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_column_span((1, 0), 2);
+ cfg.set_row_span((1, 0), 2);
+ })
+ .build(),
+ "+-+-+---+---+---+"
+ "|0-0|0-2|0-3|0-4|"
+ "+-+-+---+---+---+"
+ "|1-0|1-2|1-3|1-4|"
+ "+ +---+---+---+"
+ "| |2-2|2-3|2-4|"
+ "+-+-+---+---+---+"
+);
+
+test_table!(
+ _5x2_render_0,
+ grid(5, 2)
+ .change_cell((1, 1), "1\n2\n3\n4")
+ .config(|cfg|{
+ cfg.set_row_span((1, 1), 4);
+ })
+ .build(),
+ "+---+---+"
+ "|0-0|0-1|"
+ "+---+---+"
+ "|1-0|1 |"
+ "+---+2 +"
+ "|2-0|3 |"
+ "+---+4 +"
+ "|3-0| |"
+ "+---+ +"
+ "|4-0| |"
+ "+---+---+"
+);
+
+test_table!(
+ _3x4_column_span_0,
+ grid(3, 4)
+ .config(|cfg|{
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_column_span((1, 0), 2);
+ cfg.set_column_span((2, 0), 2);
+ })
+ .build(),
+ "+-+-+---+---+"
+ "|0-0|0-2|0-3|"
+ "+-+-+---+---+"
+ "|1-0|1-2|1-3|"
+ "+-+-+---+---+"
+ "|2-0|2-2|2-3|"
+ "+-+-+---+---+"
+);
+
+test_table!(
+ _3x4_column_span_1,
+ grid(3, 4)
+ .config(|cfg|{
+ cfg.set_column_span((0, 0), 3);
+ cfg.set_column_span((1, 0), 3);
+ cfg.set_column_span((2, 0), 3);
+ })
+ .build(),
+ "+-+++---+"
+ "|0-0|0-3|"
+ "+-+++---+"
+ "|1-0|1-3|"
+ "+-+++---+"
+ "|2-0|2-3|"
+ "+-+++---+"
+);
+
+test_table!(
+ _3x4_column_span_2,
+ grid(3, 4)
+ .change_cell((0, 0), "")
+ .change_cell((1, 0), "")
+ .change_cell((2, 0), "")
+ .config(|cfg|{
+ cfg.set_column_span((0, 0), 3);
+ cfg.set_column_span((1, 0), 3);
+ cfg.set_column_span((2, 0), 3);
+ })
+ .build(),
+ "++++---+"
+ "| |0-3|"
+ "++++---+"
+ "| |1-3|"
+ "++++---+"
+ "| |2-3|"
+ "++++---+"
+);
+
+// #[test]
+// #[ignore = "todo; create some logic of combining spans? or somehow resolving to not get the following"]
+// fn render_grid_with_row_3() {
+// let mut grid = util::new_grid::<3, 5>();
+
+// grid.set(Entity::Cell(0, 0), Settings::new().span(2));
+// grid.set(Entity::Cell(0, 1), Settings::new().span(2));
+// grid.set(Entity::Cell(0, 2), Settings::new().span(2));
+
+// assert_eq!(
+// grid.to_string(),
+// concat!(
+// "+---+---+---+---+--+\n",
+// "|0-0 |0-2|q |q1|\n",
+// "| | |w |w1|\n",
+// "+---+---+---+e +e1+\n",
+// "|1-0|1-1|1-2|r |r1|\n",
+// "| | | |t |t1|\n",
+// "+---+---+---+---+ +\n",
+// "|2-0|2-1|2-2|2-3| |\n",
+// "+---+---+---+---+--+\n",
+// )
+// );
+// }