mirror of
https://git.proxmox.com/git/rustc
synced 2025-08-25 21:28:07 +00:00
335 lines
10 KiB
Rust
335 lines
10 KiB
Rust
#![cfg(feature = "std")]
|
|
|
|
use papergrid::config::{AlignmentHorizontal, Border, Borders, Entity, Indent, Sides};
|
|
|
|
use crate::util::grid;
|
|
use testing_table::test_table;
|
|
|
|
#[cfg(feature = "ansi")]
|
|
use ::{owo_colors::OwoColorize, papergrid::ansi::ANSIBuf, std::convert::TryFrom};
|
|
|
|
test_table!(
|
|
grid_2x2_custom_frame_test,
|
|
grid(2, 2)
|
|
.config(|cfg| (0..2).for_each(|r| (0..2).for_each(|c| cfg.set_border((r, c), Border::full('*', '*', '|', '|', '#', '#', '#', '#')))))
|
|
.build(),
|
|
"#***#***#"
|
|
"|0-0|0-1|"
|
|
"#***#***#"
|
|
"|1-0|1-1|"
|
|
"#***#***#"
|
|
);
|
|
|
|
test_table!(
|
|
grid_2x2_custom_column_test_0,
|
|
grid(2, 2)
|
|
.config(|cfg| (0..2).for_each(|r| cfg.set_border((r, 1), Border::full('*', '*', '|', '|', '#', '#', '#', '#'))))
|
|
.build(),
|
|
"+---#***#"
|
|
"|0-0|0-1|"
|
|
"+---#***#"
|
|
"|1-0|1-1|"
|
|
"+---#***#"
|
|
);
|
|
|
|
test_table!(
|
|
grid_2x2_custom_column_test_1,
|
|
grid(2, 2)
|
|
.config(|cfg| (0..2).for_each(|r| cfg.set_border((r, 0), Border::full('*', '*', '|', '|', '#', '#', '#', '#'))))
|
|
.build(),
|
|
"#***#---+"
|
|
"|0-0|0-1|"
|
|
"#***#---+"
|
|
"|1-0|1-1|"
|
|
"#***#---+"
|
|
);
|
|
|
|
test_table!(
|
|
grid_2x2_custom_row_test_0,
|
|
grid(2, 2)
|
|
.config(|cfg| (0..2).for_each(|c| cfg.set_border((0, c), Border::full('*', '*', '|', '|', '#', '#', '#', '#'))))
|
|
.build(),
|
|
"#***#***#"
|
|
"|0-0|0-1|"
|
|
"#***#***#"
|
|
"|1-0|1-1|"
|
|
"+---+---+"
|
|
);
|
|
|
|
test_table!(
|
|
grid_2x2_custom_row_test_1,
|
|
grid(2, 2)
|
|
.config(|cfg| (0..2).for_each(|c| cfg.set_border((1, c), Border::full('*', '*', '|', '|', '#', '#', '#', '#'))))
|
|
.build(),
|
|
"+---+---+"
|
|
"|0-0|0-1|"
|
|
"#***#***#"
|
|
"|1-0|1-1|"
|
|
"#***#***#"
|
|
);
|
|
|
|
test_table!(
|
|
grid_2x2_change_cell_border_test_0,
|
|
grid(2, 2)
|
|
.config(|cfg| (0..2).for_each(|_| cfg.set_border((0, 1), Border::full('*', '^', '@', '#', '~', '!', '%', '&'))))
|
|
.build(),
|
|
"+---~***!"
|
|
"|0-0@0-1#"
|
|
"+---%^^^&"
|
|
"|1-0|1-1|"
|
|
"+---+---+"
|
|
);
|
|
|
|
test_table!(
|
|
grid_2x2_alignment_test_0,
|
|
grid(2, 2)
|
|
.change_cell((0, 0), "asd ")
|
|
.change_cell((0, 1), "asd ")
|
|
.config(|cfg| {
|
|
cfg.set_alignment_horizontal(Entity::Column(0), AlignmentHorizontal::Left);
|
|
cfg.set_alignment_horizontal(Entity::Column(1), AlignmentHorizontal::Right);
|
|
})
|
|
.build(),
|
|
"+-------+-------+"
|
|
"|asd |asd |"
|
|
"+-------+-------+"
|
|
"|1-0 | 1-1|"
|
|
"+-------+-------+"
|
|
);
|
|
|
|
test_table!(
|
|
grid_2x2_alignment_test_1,
|
|
grid(2, 2)
|
|
.data([["asd ", "asd "], ["asd ", "asd "]])
|
|
.config(|cfg| {
|
|
cfg.set_alignment_horizontal(Entity::Column(0), AlignmentHorizontal::Left);
|
|
cfg.set_alignment_horizontal(Entity::Column(1), AlignmentHorizontal::Right);
|
|
})
|
|
.build(),
|
|
"+-------+-------+"
|
|
"|asd |asd |"
|
|
"+-------+-------+"
|
|
"|asd |asd |"
|
|
"+-------+-------+"
|
|
);
|
|
|
|
test_table!(
|
|
grid_2x2_indent_test,
|
|
grid(2, 2)
|
|
.config(|cfg| {
|
|
cfg.set_padding(
|
|
Entity::Global,
|
|
Sides::new(
|
|
Indent::spaced(1),
|
|
Indent::spaced(1),
|
|
Indent::spaced(1),
|
|
Indent::spaced(1),
|
|
),
|
|
);
|
|
cfg.set_padding(Entity::Column(0), Sides::new(
|
|
Indent::default(),
|
|
Indent::default(),
|
|
Indent::default(),
|
|
Indent::default(),
|
|
));
|
|
})
|
|
.build(),
|
|
"+---+-----+"
|
|
"|0-0| |"
|
|
"| | 0-1 |"
|
|
"| | |"
|
|
"+---+-----+"
|
|
"|1-0| |"
|
|
"| | 1-1 |"
|
|
"| | |"
|
|
"+---+-----+"
|
|
);
|
|
|
|
test_table!(
|
|
grid_2x2_vertical_resize_test,
|
|
grid(2, 2).change_cell((1, 1), "asd ").build(),
|
|
"+---+--------+"
|
|
"|0-0|0-1 |"
|
|
"+---+--------+"
|
|
"|1-0|asd |"
|
|
"+---+--------+"
|
|
);
|
|
|
|
test_table!(
|
|
grid_2x2_without_frame_test_0,
|
|
grid(2, 2)
|
|
.config(|cfg| {
|
|
cfg.set_borders(Borders {
|
|
vertical: Some(' '),
|
|
..Default::default()
|
|
});
|
|
})
|
|
.build(),
|
|
"0-0 0-1"
|
|
"1-0 1-1"
|
|
);
|
|
|
|
test_table!(
|
|
grid_2x2_without_frame_test_1,
|
|
grid(2, 2)
|
|
.config(|cfg| {
|
|
cfg.set_borders(Borders {
|
|
vertical: Some(' '),
|
|
horizontal: Some(' '),
|
|
intersection: Some(' '),
|
|
..Default::default()
|
|
});
|
|
})
|
|
.build(),
|
|
"0-0 0-1"
|
|
" "
|
|
"1-0 1-1"
|
|
);
|
|
|
|
test_table!(
|
|
grid_2x2_custom_border_test,
|
|
grid(2, 2)
|
|
.config(|cfg| {
|
|
cfg.set_border(
|
|
(0, 0),
|
|
Border {
|
|
bottom: Some('-'),
|
|
top: Some('*'),
|
|
left: Some('$'),
|
|
left_top_corner: Some(' '),
|
|
left_bottom_corner: Some('+'),
|
|
..Default::default()
|
|
},
|
|
);
|
|
cfg.set_border(
|
|
(0, 1),
|
|
Border::full('*', '-', '@', '%', ' ', ' ', '+', '+'),
|
|
);
|
|
cfg.set_border(
|
|
(1, 0),
|
|
Border {
|
|
bottom: Some('*'),
|
|
left: Some('#'),
|
|
left_top_corner: Some('+'),
|
|
left_bottom_corner: Some('\u{0020}'),
|
|
..Default::default()
|
|
},
|
|
);
|
|
cfg.set_border(
|
|
(1, 1),
|
|
Border {
|
|
bottom: Some('*'),
|
|
left: Some('^'),
|
|
left_top_corner: Some('+'),
|
|
right_top_corner: Some('+'),
|
|
right: Some('!'),
|
|
left_bottom_corner: Some(' '),
|
|
right_bottom_corner: Some(' '),
|
|
..Default::default()
|
|
},
|
|
);
|
|
})
|
|
.build(),
|
|
" *** *** "
|
|
"$0-0@0-1%"
|
|
"+---+---+"
|
|
"#1-0^1-1!"
|
|
"\u{0020}*** *** "
|
|
);
|
|
|
|
test_table!(
|
|
when_border_is_not_complete_default_char_is_used_test,
|
|
grid(2, 2)
|
|
.config(|cfg| {
|
|
cfg.set_borders(Borders {
|
|
vertical: Some(' '),
|
|
..Default::default()
|
|
});
|
|
cfg.set_border(
|
|
(1, 1),
|
|
Border {
|
|
top: Some('*'),
|
|
..Default::default()
|
|
},
|
|
);
|
|
})
|
|
.build(),
|
|
"0-0 0-1"
|
|
" ***"
|
|
"1-0 1-1"
|
|
);
|
|
|
|
test_table!(
|
|
when_1_vertical_is_set_second_must_use_default_test,
|
|
grid(2, 2)
|
|
.config(|cfg| {
|
|
cfg.set_borders(Borders::default());
|
|
cfg.set_border(
|
|
(1, 0),
|
|
Border {
|
|
right: Some('*'),
|
|
..Default::default()
|
|
},
|
|
);
|
|
})
|
|
.build(),
|
|
"0-0 0-1"
|
|
"1-0*1-1"
|
|
);
|
|
|
|
#[cfg(feature = "ansi")]
|
|
test_table!(
|
|
grid_2x2_ansi_border_test,
|
|
grid(2, 2)
|
|
.config(|cfg| {
|
|
(0..2).for_each(|r| (0..2).for_each(|c| {
|
|
let top = ANSIBuf::try_from(" ".green().on_red().to_string()).unwrap();
|
|
let bottom = ANSIBuf::try_from(" ".on_green().blue().to_string()).unwrap();
|
|
let left = ANSIBuf::try_from(" ".on_red().white().to_string()).unwrap();
|
|
let right = ANSIBuf::try_from(" ".on_red().green().to_string()).unwrap();
|
|
let tl = ANSIBuf::try_from(" ".magenta().to_string()).unwrap();
|
|
let tr = ANSIBuf::try_from(" ".on_blue().to_string()).unwrap();
|
|
let bl = ANSIBuf::try_from(" ".yellow().to_string()).unwrap();
|
|
let br = ANSIBuf::try_from(" ".on_yellow().to_string()).unwrap();
|
|
|
|
cfg.set_border((r, c), Border::full('*', '#', '~', '!', '@', '$', '%', '^'));
|
|
cfg.set_border_color((r, c), Border::full(top, bottom, left, right, tl, tr, bl, br));
|
|
}))
|
|
})
|
|
.build(),
|
|
"\u{1b}[35m@\u{1b}[39m\u{1b}[32m\u{1b}[41m***\u{1b}[39m\u{1b}[49m\u{1b}[35m@\u{1b}[39m\u{1b}[32m\u{1b}[41m***\u{1b}[39m\u{1b}[49m\u{1b}[44m$\u{1b}[49m"
|
|
"\u{1b}[37m\u{1b}[41m~\u{1b}[39m\u{1b}[49m0-0\u{1b}[37m\u{1b}[41m~\u{1b}[39m\u{1b}[49m0-1\u{1b}[32m\u{1b}[41m!\u{1b}[39m\u{1b}[49m"
|
|
"\u{1b}[35m@\u{1b}[39m\u{1b}[32m\u{1b}[41m***\u{1b}[39m\u{1b}[49m\u{1b}[35m@\u{1b}[39m\u{1b}[32m\u{1b}[41m***\u{1b}[39m\u{1b}[49m\u{1b}[44m$\u{1b}[49m"
|
|
"\u{1b}[37m\u{1b}[41m~\u{1b}[39m\u{1b}[49m1-0\u{1b}[37m\u{1b}[41m~\u{1b}[39m\u{1b}[49m1-1\u{1b}[32m\u{1b}[41m!\u{1b}[39m\u{1b}[49m"
|
|
"\u{1b}[33m%\u{1b}[39m\u{1b}[34m\u{1b}[42m###\u{1b}[39m\u{1b}[49m\u{1b}[33m%\u{1b}[39m\u{1b}[34m\u{1b}[42m###\u{1b}[39m\u{1b}[49m\u{1b}[43m^\u{1b}[49m"
|
|
);
|
|
|
|
#[cfg(feature = "ansi")]
|
|
test_table!(
|
|
grid_2x2_ansi_global_set_test,
|
|
grid(2, 2)
|
|
.config(|cfg| {
|
|
let color = " ".on_blue().red().bold().to_string();
|
|
cfg.set_border_color_default(ANSIBuf::try_from(color).unwrap());
|
|
})
|
|
.build(),
|
|
"\u{1b}[1m\u{1b}[31m\u{1b}[44m+---+---+\u{1b}[22m\u{1b}[39m\u{1b}[49m"
|
|
"\u{1b}[1m\u{1b}[31m\u{1b}[44m|\u{1b}[22m\u{1b}[39m\u{1b}[49m0-0\u{1b}[1m\u{1b}[31m\u{1b}[44m|\u{1b}[22m\u{1b}[39m\u{1b}[49m0-1\u{1b}[1m\u{1b}[31m\u{1b}[44m|\u{1b}[22m\u{1b}[39m\u{1b}[49m"
|
|
"\u{1b}[1m\u{1b}[31m\u{1b}[44m+---+---+\u{1b}[22m\u{1b}[39m\u{1b}[49m"
|
|
"\u{1b}[1m\u{1b}[31m\u{1b}[44m|\u{1b}[22m\u{1b}[39m\u{1b}[49m1-0\u{1b}[1m\u{1b}[31m\u{1b}[44m|\u{1b}[22m\u{1b}[39m\u{1b}[49m1-1\u{1b}[1m\u{1b}[31m\u{1b}[44m|\u{1b}[22m\u{1b}[39m\u{1b}[49m"
|
|
"\u{1b}[1m\u{1b}[31m\u{1b}[44m+---+---+\u{1b}[22m\u{1b}[39m\u{1b}[49m"
|
|
);
|
|
|
|
#[cfg(feature = "ansi")]
|
|
#[test]
|
|
fn grid_2x2_ansi_border_none_if_string_is_not_1_char_test() {
|
|
assert!(ANSIBuf::try_from("12").is_ok());
|
|
assert!(ANSIBuf::try_from("123").is_ok());
|
|
assert!(ANSIBuf::try_from("").is_err());
|
|
|
|
assert!(ANSIBuf::try_from("1").is_ok());
|
|
assert!(ANSIBuf::try_from("1".on_red().to_string()).is_ok());
|
|
assert!(ANSIBuf::try_from("1".on_red().blue().to_string()).is_ok());
|
|
assert!(ANSIBuf::try_from("1".truecolor(0, 1, 3).on_truecolor(1, 2, 3).to_string()).is_ok());
|
|
}
|