mirror of
https://github.com/ratatui-org/ratatui
synced 2024-11-10 15:14:27 +00:00
62495c3bd1
* Fix barchart incorrectly showing chart filled more than actual Determination of how filled the bar should be was incorrectly taking the entire chart height into account, when in fact it should take height-1, because of extra line with label. Because of that the chart appeared fuller than it should and was full before reaching maximum value. * Add a test case for checking if barchart fills correctly up to max value Co-authored-by: Kemyt <kemyt4@gmail.com>
40 lines
1.7 KiB
Rust
40 lines
1.7 KiB
Rust
use tui::backend::TestBackend;
|
|
use tui::buffer::Buffer;
|
|
use tui::widgets::{BarChart, Block, Borders};
|
|
use tui::Terminal;
|
|
|
|
#[test]
|
|
fn widgets_barchart_not_full_below_max_value() {
|
|
let test_case = |expected| {
|
|
let backend = TestBackend::new(30, 10);
|
|
let mut terminal = Terminal::new(backend).unwrap();
|
|
|
|
terminal
|
|
.draw(|f| {
|
|
let size = f.size();
|
|
let barchart = BarChart::default()
|
|
.block(Block::default().borders(Borders::ALL))
|
|
.data(&[("empty", 0), ("half", 50), ("almost", 99), ("full", 100)])
|
|
.max(100)
|
|
.bar_width(7)
|
|
.bar_gap(0);
|
|
f.render_widget(barchart, size);
|
|
})
|
|
.unwrap();
|
|
terminal.backend().assert_buffer(&expected);
|
|
};
|
|
|
|
// check that bars fill up correctly up to max value
|
|
test_case(Buffer::with_lines(vec![
|
|
"┌────────────────────────────┐",
|
|
"│ ▇▇▇▇▇▇▇███████│",
|
|
"│ ██████████████│",
|
|
"│ ██████████████│",
|
|
"│ ▄▄▄▄▄▄▄██████████████│",
|
|
"│ █████████████████████│",
|
|
"│ █████████████████████│",
|
|
"│ ██50█████99█████100██│",
|
|
"│empty half almost full │",
|
|
"└────────────────────────────┘",
|
|
]));
|
|
}
|