blob: 3ea8f8546c7d25c3e79e221a0d52db19a08100db [file] [log] [blame]
#![cfg(feature = "std")]
use papergrid::config::{AlignmentHorizontal, Borders, Entity, Indent, Sides};
use crate::util::grid;
use testing_table::test_table;
test_table!(
row_span,
grid(2, 2)
.config(|cfg|{
cfg.set_column_span((0, 0), 2);
cfg.set_alignment_horizontal(Entity::Cell(0, 0), AlignmentHorizontal::Center);
})
.build(),
"+---+---+"
"| 0-0 |"
"+---+---+"
"|1-0|1-1|"
"+---+---+"
);
test_table!(
miltiline_span,
grid(2, 2)
.change_cell((0, 0), "0-0\n0-1")
.config(|cfg|{
cfg.set_column_span((0, 0), 2);
cfg.set_alignment_horizontal(Entity::Cell(0, 0), AlignmentHorizontal::Center);
})
.build(),
"+---+---+"
"| 0-0 |"
"| 0-1 |"
"+---+---+"
"|1-0|1-1|"
"+---+---+"
);
test_table!(
row_span_multilane,
grid(4, 3)
.data([
["first line", "", "e.g."],
["0", "1", "2"],
["0", "1", "2"],
["full last line", "", ""],
])
.config(|cfg|{
cfg.set_column_span((0, 0), 2);
cfg.set_column_span((3, 0), 3);
})
.build(),
"+-----+----+----+"
"|first line|e.g.|"
"+-----+----+----+"
"|0 |1 |2 |"
"+-----+----+----+"
"|0 |1 |2 |"
"+-----+----+----+"
"|full last line |"
"+-----+----+----+"
);
test_table!(
row_span_with_horizontal_ident,
grid(3, 2)
.config(|cfg| {
cfg.set_column_span((0, 0), 2);
cfg.set_padding(
Entity::Cell(1, 0),
Sides::new(
Indent::spaced(4),
Indent::spaced(4),
Indent::zero(),
Indent::zero(),
),
);
})
.build(),
"+-----------+---+"
"|0-0 |"
"+-----------+---+"
"| 1-0 |1-1|"
"+-----------+---+"
"|2-0 |2-1|"
"+-----------+---+"
);
test_table!(
_row_span_3x3_with_horizontal_ident,
grid(3, 3)
.config(|cfg| {
cfg.set_column_span((0, 0), 3);
cfg.set_column_span((1, 0), 2);
cfg.set_column_span((2, 0), 2);
})
.build(),
"+-+-+---+"
"|0-0 |"
"+-+-+---+"
"|1-0|1-2|"
"+-+-+---+"
"|2-0|2-2|"
"+-+-+---+"
);
test_table!(
_3x3_with_2_colided_row_span_0,
grid(3, 3)
.change_cell((0, 0), "0-0xxxxxxx")
.config(|cfg| {
cfg.set_column_span((0, 0), 2);
cfg.set_column_span((1, 1), 2);
})
.build(),
"+-----+----+---+"
"|0-0xxxxxxx|0-2|"
"+-----+----+---+"
"|1-0 |1-1 |"
"+-----+----+---+"
"|2-0 |2-1 |2-2|"
"+-----+----+---+"
);
test_table!(
_3x3_with_2_colided_row_span_1,
grid(3, 3)
.change_cell((1, 1), "1-1xxxxxxx")
.config(|cfg| {
cfg.set_column_span((0, 0), 2);
cfg.set_column_span((1, 1), 2);
})
.build(),
"+---+-----+----+"
"|0-0 |0-2 |"
"+---+-----+----+"
"|1-0|1-1xxxxxxx|"
"+---+-----+----+"
"|2-0|2-1 |2-2 |"
"+---+-----+----+"
);
test_table!(
_3x3_with_2_colided_row_span_2,
grid(3, 3)
.change_cell((1, 1), "1-1xxxxxxx")
.change_cell((2, 0), "2-0xxxxxxxxxxxxx")
.config(|cfg| {
cfg.set_column_span((0, 0), 2);
cfg.set_column_span((1, 1), 2);
})
.build(),
"+----------------+-----+----+"
"|0-0 |0-2 |"
"+----------------+-----+----+"
"|1-0 |1-1xxxxxxx|"
"+----------------+-----+----+"
"|2-0xxxxxxxxxxxxx|2-1 |2-2 |"
"+----------------+-----+----+"
);
test_table!(
_3x3_with_2_colided_row_span_3,
grid(3, 3)
.change_cell((2, 1), "2-1xxxxxxxxxxxxx")
.config(|cfg| {
cfg.set_column_span((0, 0), 2);
cfg.set_column_span((1, 1), 2);
})
.build(),
"+---+----------------+---+"
"|0-0 |0-2|"
"+---+----------------+---+"
"|1-0|1-1 |"
"+---+----------------+---+"
"|2-0|2-1xxxxxxxxxxxxx|2-2|"
"+---+----------------+---+"
);
test_table!(
_3x3_with_2_colided_row_span_4,
grid(3, 3)
.change_cell((0, 2), "0-2xxxxxxxxxxxxx")
.config(|cfg| {
cfg.set_column_span((0, 0), 2);
cfg.set_column_span((1, 1), 2);
})
.build(),
"+---+---+----------------+"
"|0-0 |0-2xxxxxxxxxxxxx|"
"+---+---+----------------+"
"|1-0|1-1 |"
"+---+---+----------------+"
"|2-0|2-1|2-2 |"
"+---+---+----------------+"
);
test_table!(
spaned_column_in_first_cell_3x3,
grid(3, 3)
.change_cell((0, 0), "0-0xxxxxxx")
.config(|cfg| cfg.set_column_span((0, 0), 2))
.build(),
"+-----+----+---+"
"|0-0xxxxxxx|0-2|"
"+-----+----+---+"
"|1-0 |1-1 |1-2|"
"+-----+----+---+"
"|2-0 |2-1 |2-2|"
"+-----+----+---+"
);
test_table!(
row_span_with_different_length,
grid(3, 2)
.data([["first row", ""], ["0", "1"], ["a longer second row", ""]])
.config(|cfg| {
cfg.set_column_span((0, 0), 2);
cfg.set_column_span((2, 0), 2);
})
.build(),
"+---------+---------+"
"|first row |"
"+---------+---------+"
"|0 |1 |"
"+---------+---------+"
"|a longer second row|"
"+---------+---------+"
);
test_table!(
row_span_with_odd_length,
grid(2, 2)
.data([["3 ", ""], ["2", "4"]])
.config(|cfg| cfg.set_column_span((0, 0), 2))
.build(),
"+--+-+"
"|3 |"
"+--+-+"
"|2 |4|"
"+--+-+"
);
test_table!(
only_row_spaned,
grid(3, 2)
.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|"
"+-+-+"
"|1-0|"
"+-+-+"
"|2-0|"
"+-+-+"
);
test_table!(
grid_2x2_span_test,
grid(2, 2)
.data([["123", ""], ["asd", "asd"]])
.config(|cfg| cfg.set_column_span((0, 0), 2))
.build(),
"+---+---+"
"|123 |"
"+---+---+"
"|asd|asd|"
"+---+---+"
);
test_table!(
grid_2x2_span_2_test_0,
grid(2, 2)
.data([["1234", ""], ["asdw", ""]])
.config(|cfg| {
cfg.set_column_span((0, 0), 2);
cfg.set_column_span((1, 0), 2);
})
.build(),
"+--+-+"
"|1234|"
"+--+-+"
"|asdw|"
"+--+-+"
);
test_table!(
grid_2x2_span_2_test_1,
grid(2, 2)
.data([["1", ""], ["a", ""]])
.config(|cfg| {
cfg.set_column_span((0, 0), 2);
cfg.set_column_span((1, 0), 2);
})
.build(),
"+++"
"|1|"
"+++"
"|a|"
"+++"
);
test_table!(
row_span_with_no_split_style,
grid(2, 2)
.config(|cfg| {
cfg.set_borders(Borders::default());
cfg.set_column_span((0, 0), 2);
cfg.set_alignment_horizontal(Entity::Cell(0, 0), AlignmentHorizontal::Center);
})
.build(),
" 0-0 "
"1-01-1"
);
test_table!(
_2x3_zero_span_between_cells_0,
grid(2, 3)
.config(|cfg| cfg.set_column_span((0, 0), 2))
.build(),
"+---+---+---+"
"|0-0 |0-2|"
"+---+---+---+"
"|1-0|1-1|1-2|"
"+---+---+---+"
);
test_table!(
_2x3_zero_span_between_cells_1,
grid(2, 3)
.config(|cfg| {
cfg.set_column_span((0, 0), 2);
cfg.set_column_span((1, 0), 2);
})
.build(),
"+-+-+---+"
"|0-0|0-2|"
"+-+-+---+"
"|1-0|1-2|"
"+-+-+---+"
);
test_table!(
_2x3_zero_span_at_the_end_0,
grid(2, 3)
.config(|cfg| {
cfg.set_column_span((0, 0), 3);
})
.build(),
"+---+---+---+"
"|0-0 |"
"+---+---+---+"
"|1-0|1-1|1-2|"
"+---+---+---+"
);
test_table!(
_2x3_zero_span_at_the_end_1,
grid(2, 3)
.config(|cfg| {
cfg.set_column_span((0, 0), 3);
cfg.set_column_span((1, 0), 3);
})
.build(),
"+-+++"
"|0-0|"
"+-+++"
"|1-0|"
"+-+++"
);
test_table!(
zero_span_grid,
grid(2, 2)
.data([["123", ""], ["asd", "asd"]])
.config(|cfg| {
cfg.set_column_span((0, 0), 2);
cfg.set_column_span((1, 0), 2);
})
.build(),
"+-+-+"
"|123|"
"+-+-+"
"|asd|"
"+-+-+"
);
test_table!(
zero_span_grid_1,
grid(2, 2)
.data([["123", ""], ["asd", "asd"]])
.config(|cfg| {
cfg.set_row_span((0, 0), 2);
cfg.set_row_span((0, 1), 2);
})
.build(),
"+---++"
"+123++"
"+---++"
);
test_table!(
zero_span_grid_2,
grid(2, 2)
.data([["123", "axc"], ["asd", "asd"]])
.config(|cfg| {
cfg.set_row_span((0, 0), 2);
cfg.set_row_span((0, 1), 2);
})
.build(),
"+---+---+"
"+123+axc+"
"+---+---+"
);
test_table!(
zero_span_is_not_handled,
grid(2, 2)
.config(|cfg| { cfg.set_column_span((0, 1), 0); })
.build(),
"+---+---+"
"|0-0|0-1|"
"+---+---+"
"|1-0|1-1|"
"+---+---+"
);