blob: ac13d807132577596c32321e3367a05340288cd4 [file] [log] [blame]
#![cfg(feature = "std")]
use std::iter::FromIterator;
use tabled::{builder::Builder, settings::split::Split, Table};
use testing_table::test_table;
test_table!(
split_column_test,
Table::from_iter(['a'..='z']).with(Split::column(12)),
"+---+---+---+---+---+---+---+---+---+---+---+---+"
"| a | b | c | d | e | f | g | h | i | j | k | l |"
"+---+---+---+---+---+---+---+---+---+---+---+---+"
"| m | n | o | p | q | r | s | t | u | v | w | x |"
"+---+---+---+---+---+---+---+---+---+---+---+---+"
"| y | z | | | | | | | | | | |"
"+---+---+---+---+---+---+---+---+---+---+---+---+"
);
test_table!(
split_column_2_test,
Table::from_iter(['a'..='z'])
.with(Split::column(12))
.with(Split::column(4)),
"+---+---+---+---+"
"| a | b | c | d |"
"+---+---+---+---+"
"| e | f | g | h |"
"+---+---+---+---+"
"| i | j | k | l |"
"+---+---+---+---+"
"| m | n | o | p |"
"+---+---+---+---+"
"| q | r | s | t |"
"+---+---+---+---+"
"| u | v | w | x |"
"+---+---+---+---+"
"| y | z | | |"
"+---+---+---+---+"
);
test_table!(
split_column_retain_test,
Table::from_iter(['a'..='z'])
.with(Split::column(12))
.with(Split::column(4).retain()),
"+---+---+---+---+"
"| a | b | c | d |"
"+---+---+---+---+"
"| e | f | g | h |"
"+---+---+---+---+"
"| i | j | k | l |"
"+---+---+---+---+"
"| m | n | o | p |"
"+---+---+---+---+"
"| q | r | s | t |"
"+---+---+---+---+"
"| u | v | w | x |"
"+---+---+---+---+"
"| y | z | | |"
"+---+---+---+---+"
"| | | | |"
"+---+---+---+---+"
"| | | | |"
"+---+---+---+---+"
);
test_table!(
split_row_test,
Table::from_iter(['a'..='z'])
.with(Split::column(12))
.with(Split::column(4))
.with(Split::row(1).concat()), // take it back to the original shape
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
"| a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |"
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
);
test_table!(
split_row_2_test,
Table::from_iter(['a'..='z'])
.with(Split::column(12))
.with(Split::column(4))
.with(Split::row(2).concat()),
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
"| a | b | c | d | i | j | k | l | q | r | s | t | y | z |"
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
"| e | f | g | h | m | n | o | p | u | v | w | x | | |"
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
);
test_table!(
split_colum_index_beyond_size_test,
Table::from_iter(['a'..='z'])
.with(Split::column(10000)),
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
"| a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |"
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
);
test_table!(
split_row_index_beyond_size_test,
Table::from_iter(['a'..='z'])
.with(Split::row(10000)),
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
"| a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |"
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
);
test_table!(
split_empty_table_test,
Builder::default().build().with(Split::column(10000)),
""
);
test_table!(
split_column_zero_argument_test,
Table::from_iter(['a'..='z']).with(Split::column(0)),
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
"| a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |"
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
);
test_table!(
split_row_zero_argument_test,
Table::from_iter(['a'..='z']).with(Split::row(0)),
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
"| a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |"
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
);
test_table!(
split_blank_table_test,
Table::from_iter([vec![String::new(); 26]]).with(Split::column(12)),
"+--+--+--+--+--+--+--+--+--+--+--+--+"
"| | | | | | | | | | | | |" // first section is protected
"+--+--+--+--+--+--+--+--+--+--+--+--+"
);
test_table!(
split_blank_table_2_test,
Table::from_iter([vec![String::new(); 26]]).with(Split::column(12).retain()),
"+--+--+--+--+--+--+--+--+--+--+--+--+"
"| | | | | | | | | | | | |"
"+--+--+--+--+--+--+--+--+--+--+--+--+"
"| | | | | | | | | | | | |"
"+--+--+--+--+--+--+--+--+--+--+--+--+"
"| | | | | | | | | | | | |"
"+--+--+--+--+--+--+--+--+--+--+--+--+"
);
test_table!(
split_zip_test,
Table::from_iter(['a'..='z'])
.with(Split::column(6))
.with(Split::row(2)),
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
"| a | m | y | b | n | z | c | o | d | p | e | q | f | r |"
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
"| g | s | | h | t | | i | u | j | v | k | w | l | x |"
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
);
test_table!(
split_concat_test,
Table::from_iter(['a'..='z'])
.with(Split::column(6))
.with(Split::row(2).concat()),
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
"| a | b | c | d | e | f | m | n | o | p | q | r | y | z |"
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
"| g | h | i | j | k | l | s | t | u | v | w | x | | |"
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
);
test_table!(
split_clean_test,
Table::from_iter(['a'..='z'])
.with(Split::column(12))
.with(Split::row(2)),
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
"| a | y | b | z | c | d | e | f | g | h | i | j | k | l |"
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
"| m | | n | | o | p | q | r | s | t | u | v | w | x |"
"+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
);
test_table!(
split_retain_test,
Table::from_iter(['a'..='z'])
.with(Split::column(12))
.with(Split::row(2).retain()),
"+---+---+---+---+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+"
"| a | y | b | z | c | | d | | e | | f | | g | | h | | i | | j | | k | | l | |"
"+---+---+---+---+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+"
"| m | | n | | o | | p | | q | | r | | s | | t | | u | | v | | w | | x | |"
"+---+---+---+---+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+"
);
test_table!(
split_mostly_blank_test,
Table::from_iter([vec![
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "A",
]]).with(Split::column(5))
.with(Split::row(2)),
"+--+--+--+---+--+"
"| | | | | |"
"+--+--+--+---+--+"
"| | | | A | |"
"+--+--+--+---+--+"
);
test_table!(
split_mostly_blank_retain_test,
Table::from_iter([vec![
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "A",
]]).with(Split::column(5).retain()),
"+--+--+--+---+--+"
"| | | | | |"
"+--+--+--+---+--+"
"| | | | | |"
"+--+--+--+---+--+"
"| | | | | |"
"+--+--+--+---+--+"
"| | | | | |"
"+--+--+--+---+--+"
"| | | | | |"
"+--+--+--+---+--+"
"| | | | | |"
"+--+--+--+---+--+"
"| | | | A | |"
"+--+--+--+---+--+"
);
test_table!(
split_scattered_values_test,
Table::from_iter([vec![
"", "", "", "", "", "g", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "A",
]]).with(Split::column(5)),
"+---+--+--+---+--+"
"| | | | | |"
"+---+--+--+---+--+"
"| g | | | | |"
"+---+--+--+---+--+"
"| | | | A | |"
"+---+--+--+---+--+"
);
test_table!(
split_scattered_values_column_and_row_test,
Table::from_iter([vec![
"", "", "", "", "", "g", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "A",
]]).with(Split::column(5)).with(Split::row(2)),
"+---+--+--+--+---+--+"
"| | | | | A | |"
"+---+--+--+--+---+--+"
"| g | | | | | |"
"+---+--+--+--+---+--+"
);
test_table!(
split_scattered_values_column_and_row_retain_test,
Table::from_iter([vec![
"", "", "", "", "", "g", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "A",
]]).with(Split::column(5).retain()).with(Split::row(2).retain()),
"+---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+---+--+--+--+--+"
"| | | | | | | | | | | | | | | | A | | | | |"
"+---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+---+--+--+--+--+"
"| g | | | | | | | | | | | | | | | | | | | |"
"+---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+---+--+--+--+--+"
);