blob: 02e506ce0130be7794dd16f0304b20e02e83500e [file] [log] [blame]
#![cfg(feature = "std")]
use tabled::settings::{
formatting::{AlignmentStrategy, TabSize, TrimStrategy},
object::Segment,
Alignment, Modify, Span, Style,
};
use crate::matrix::{Matrix, MatrixList};
use testing_table::test_table;
#[cfg(feature = "ansi")]
use owo_colors::OwoColorize;
test_table!(
alignment_per_line,
Matrix::iter(multiline_data1())
.with(Style::psql())
.with(Modify::new(Segment::all()).with(Alignment::right()).with(AlignmentStrategy::PerLine)),
" N | column 0 | column 1 | column 2 "
"-----------+----------+----------+----------"
" 0 | 0-0 | 0-1 | 0-2 "
" asd | 1-0 | 1-1 | 1-2 "
" 21213123 | | | "
" | | | "
" asdasd | | | "
" | | | "
" | | | "
" 2 | 2-0 | https:// | 2-2 "
" | | www | "
" | | . | "
" | | redhat | "
" | | .com | "
" | | /en | "
);
test_table!(
alignment_per_line_with_trim_0,
Matrix::iter(multiline_data1())
.with(Style::psql())
.with(Alignment::right())
.with(AlignmentStrategy::PerLine)
.with(TrimStrategy::Horizontal),
" N | column 0 | column 1 | column 2 "
"-----------+----------+----------+----------"
" 0 | 0-0 | 0-1 | 0-2 "
" asd | 1-0 | 1-1 | 1-2 "
" 21213123 | | | "
" | | | "
" asdasd | | | "
" | | | "
" | | | "
" 2 | 2-0 | https:// | 2-2 "
" | | www | "
" | | . | "
" | | redhat | "
" | | .com | "
" | | /en | "
);
test_table!(
alignment_per_line_with_trim_1,
Matrix::iter(multiline_data2())
.with(Style::psql())
.with(Modify::new(Segment::all())
.with(Alignment::center_vertical())
.with(Alignment::left())
.with(AlignmentStrategy::PerLine)
.with(TrimStrategy::Both)),
" N | column 0 | column 1 | column 2 "
"-------------------+----------+----------+----------"
" 0 | 0-0 | 0-1 | 0-2 "
" | | | "
" | | | "
" | | | "
" asd | 1-0 | 1-1 | 1-2 "
" 21213123 asdasd | | | "
" | | | "
" | | | "
" | | | "
" | | https:// | "
" | | www | "
" 2 | 2-0 | . | 2-2 "
" | | redhat | "
" | | .com | "
" | | /en | "
);
test_table!(
tab_isnot_handled_by_default_test,
Matrix::iter(tab_data1()).with(Style::psql()),
" N | column 0 | column 1 | column 2 "
"--------------+----------+----------+----------"
" 0 | 0-0 | 0-1 | 0-2 "
" 123\t123\tasdasd | 1-0 | 1-1 | 1-2 "
" 2 | 2-0 | htt\tps:// | 2-2 "
" | | www | "
" | | . | "
" | | red\that | "
" | | .c\tom | "
" | | /en | "
);
test_table!(
tab_size_test_0,
Matrix::iter(tab_data1()).with(Style::psql()).with(TabSize::new(4)),
" N | column 0 | column 1 | column 2 "
"----------------------+----------+--------------+----------"
" 0 | 0-0 | 0-1 | 0-2 "
" 123 123 asdasd | 1-0 | 1-1 | 1-2 "
" 2 | 2-0 | htt ps:// | 2-2 "
" | | www | "
" | | . | "
" | | red hat | "
" | | .c om | "
" | | /en | "
);
test_table!(
tab_size_test_1,
Matrix::iter(tab_data1()).with(Style::psql()).with(Modify::new(Segment::all()).with(Alignment::right())).with(TabSize::new(2)),
" N | column 0 | column 1 | column 2 "
"------------------+----------+------------+----------"
" 0 | 0-0 | 0-1 | 0-2 "
" 123 123 asdasd | 1-0 | 1-1 | 1-2 "
" 2 | 2-0 | htt ps:// | 2-2 "
" | | www | "
" | | . | "
" | | red hat | "
" | | .c om | "
" | | /en | "
);
test_table!(
tab_size_test_2,
Matrix::iter(tab_data1()).with(Style::psql()).with(Modify::new(Segment::all()).with(Alignment::right())).with(TabSize::new(0)),
" N | column 0 | column 1 | column 2 "
"--------------+----------+----------+----------"
" 0 | 0-0 | 0-1 | 0-2 "
" 123123asdasd | 1-0 | 1-1 | 1-2 "
" 2 | 2-0 | https:// | 2-2 "
" | | www | "
" | | . | "
" | | redhat | "
" | | .com | "
" | | /en | "
);
test_table!(
tab_size_span_test,
Matrix::iter(tab_data2())
.with(TabSize::new(4))
.with(Style::psql())
.with(Modify::new((0, 0)).with(Span::column(3)))
.with(Modify::new((1, 0)).with(Span::column(2)))
.with(Modify::new((2, 1)).with(Span::column(2))),
" N | column 2 "
"----------------------+-----+--------------+----------"
" H ello World | 0-1 | 0-2 "
" 123 123 asdasd | 1-0 | 1-2 "
" 2 | 2-0 | htt ps:// | 2-2 "
" | | www | "
" | | . | "
" | | red hat | "
" | | .c om | "
" | | /en | "
);
test_table!(
test_top_alignment_and_vertical_trim_1,
Matrix::iter(vec![" \n\n\n Hello World"])
.with(Style::modern())
.with(Modify::new(Segment::all()).with(Alignment::top()).with(TrimStrategy::Vertical)),
"┌─────────────────┐"
"│ &str │"
"├─────────────────┤"
"│ Hello World │"
"│ │"
"│ │"
"│ │"
"└─────────────────┘"
);
#[cfg(feature = "ansi")]
test_table!(
trim_colored_string_test_2,
Matrix::iter(colored_data())
.with(Style::psql())
.with(Modify::new(Segment::all()).with(Alignment::right()).with(TrimStrategy::None)),
" N | column 0 | column 1 | column 2 "
"-----------+----------+----------+----------"
" 0 | 0-0 | 0-1 | 0-2 "
" \u{1b}[31masd\u{1b}[39m | 1-0 | 1-1 | 1-2 "
" \u{1b}[31m21213123\u{1b}[39m | | | "
" | | | "
" \u{1b}[31m asdasd\u{1b}[39m | | | "
" | | | "
" \u{1b}[31m\u{1b}[39m | | | "
" 2 | 2-0 | \u{1b}[44mhttps://\u{1b}[49m | 2-2 "
" | | \u{1b}[44mwww\u{1b}[49m | "
" | | \u{1b}[44m.\u{1b}[49m | "
" | | \u{1b}[44mredhat\u{1b}[49m | "
" | | \u{1b}[44m.com\u{1b}[49m | "
" | | \u{1b}[44m/en\u{1b}[49m | "
);
#[cfg(feature = "ansi")]
test_table!(
trim_colored_string_test_1,
Matrix::iter(colored_data())
.with(Style::psql())
.with(
Modify::new(Segment::all())
.with(Alignment::right())
.with(TrimStrategy::Horizontal)
.with(AlignmentStrategy::PerLine),
),
" N | column 0 | column 1 | column 2 "
"-----------+----------+----------+----------"
" 0 | 0-0 | 0-1 | 0-2 "
" \u{1b}[31masd\u{1b}[39m | 1-0 | 1-1 | 1-2 "
" \u{1b}[31m21213123\u{1b}[39m | | | "
" | | | "
" \u{1b}[31masdasd\u{1b}[39m | | | "
" | | | "
" \u{1b}[31m\u{1b}[39m | | | "
" 2 | 2-0 | \u{1b}[44mhttps://\u{1b}[49m | 2-2 "
" | | \u{1b}[44mwww\u{1b}[49m | "
" | | \u{1b}[44m.\u{1b}[49m | "
" | | \u{1b}[44mredhat\u{1b}[49m | "
" | | \u{1b}[44m.com\u{1b}[49m | "
" | | \u{1b}[44m/en\u{1b}[49m | "
);
#[cfg(feature = "ansi")]
test_table!(
trim_colored_string_test_0,
Matrix::iter(colored_data())
.with(Style::psql())
.with(Modify::new(Segment::all()).with(Alignment::right()).with(TrimStrategy::Horizontal)),
" N | column 0 | column 1 | column 2 "
"-----------+----------+----------+----------"
" 0 | 0-0 | 0-1 | 0-2 "
" \u{1b}[31masd\u{1b}[39m | 1-0 | 1-1 | 1-2 "
" \u{1b}[31m21213123\u{1b}[39m | | | "
" | | | "
" \u{1b}[31masdasd\u{1b}[39m | | | "
" | | | "
" \u{1b}[31m\u{1b}[39m | | | "
" 2 | 2-0 | \u{1b}[44mhttps://\u{1b}[49m | 2-2 "
" | | \u{1b}[44mwww\u{1b}[49m | "
" | | \u{1b}[44m.\u{1b}[49m | "
" | | \u{1b}[44mredhat\u{1b}[49m | "
" | | \u{1b}[44m.com\u{1b}[49m | "
" | | \u{1b}[44m/en\u{1b}[49m | "
);
fn multiline_data1() -> Vec<MatrixList<3, true>> {
let mut data = Matrix::list::<3, 3>();
data[1][0] = String::from("asd\n21213123\n\n asdasd\n\n");
data[2][2] = String::from("https://\nwww\n.\nredhat\n.com\n/en");
data
}
fn multiline_data2() -> Vec<MatrixList<3, true>> {
let mut data = Matrix::list::<3, 3>();
data[1][0] = String::from("\n\n\nasd\n21213123 asdasd\n\n\n");
data[2][2] = String::from("https://\nwww\n.\nredhat\n.com\n/en");
data
}
fn tab_data1() -> Vec<MatrixList<3, true>> {
let mut data = Matrix::list::<3, 3>();
data[1][0] = String::from("123\t123\tasdasd");
data[2][2] = String::from("htt\tps://\nwww\n.\nred\that\n.c\tom\n/en");
data
}
fn tab_data2() -> Vec<MatrixList<3, true>> {
let mut data = Matrix::list::<3, 3>();
data[0][0] = String::from("\tH\t\tello\tWorld");
data[1][0] = String::from("123\t123\tasdasd");
data[2][2] = String::from("htt\tps://\nwww\n.\nred\that\n.c\tom\n/en");
data
}
#[cfg(feature = "ansi")]
fn colored_data() -> Vec<MatrixList<3, true>> {
let mut data = Matrix::list::<3, 3>();
data[1][0] = "asd\n21213123\n\n asdasd\n\n".red().to_string();
data[2][2] = "https://\nwww\n.\nredhat\n.com\n/en".on_blue().to_string();
data
}