test: check rendered results
This commit is contained in:
+65
-10
@@ -342,20 +342,75 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[cfg(test)]
|
||||||
fn does_not_panic_on_render() {
|
mod render_tests {
|
||||||
fn inner(width: u16, height: u16) {
|
use super::*;
|
||||||
|
|
||||||
|
#[must_use]
|
||||||
|
#[track_caller]
|
||||||
|
fn render(width: u16, height: u16, state: &mut TreeState<&'static str>) -> Buffer {
|
||||||
let tree = Tree::new(TreeItem::example()).unwrap();
|
let tree = Tree::new(TreeItem::example()).unwrap();
|
||||||
let area = Rect::new(0, 0, width, height);
|
let area = Rect::new(0, 0, width, height);
|
||||||
let mut buffer = Buffer::empty(area);
|
let mut buffer = Buffer::empty(area);
|
||||||
Widget::render(tree, area, &mut buffer);
|
StatefulWidget::render(tree, area, &mut buffer, state);
|
||||||
// TODO: assert buffer is empty
|
buffer
|
||||||
}
|
}
|
||||||
|
|
||||||
inner(0, 0);
|
#[test]
|
||||||
inner(10, 0);
|
fn does_not_panic() {
|
||||||
inner(0, 10);
|
_ = render(0, 0, &mut TreeState::default());
|
||||||
|
_ = render(10, 0, &mut TreeState::default());
|
||||||
|
_ = render(0, 10, &mut TreeState::default());
|
||||||
|
_ = render(10, 10, &mut TreeState::default());
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: use dedicated test to ensure the content is correct
|
#[test]
|
||||||
inner(10, 10);
|
fn nothing_open() {
|
||||||
|
let buffer = render(10, 4, &mut TreeState::default());
|
||||||
|
#[rustfmt::skip]
|
||||||
|
let expected = Buffer::with_lines([
|
||||||
|
" Alfa ",
|
||||||
|
"▶ Bravo ",
|
||||||
|
" Hotel ",
|
||||||
|
" ",
|
||||||
|
]);
|
||||||
|
assert_eq!(buffer, expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn depth_one() {
|
||||||
|
let mut state = TreeState::default();
|
||||||
|
state.open(vec!["b"]);
|
||||||
|
let buffer = render(13, 7, &mut state);
|
||||||
|
let expected = Buffer::with_lines([
|
||||||
|
" Alfa ",
|
||||||
|
"▼ Bravo ",
|
||||||
|
" Charlie ",
|
||||||
|
" ▶ Delta ",
|
||||||
|
" Golf ",
|
||||||
|
" Hotel ",
|
||||||
|
" ",
|
||||||
|
]);
|
||||||
|
assert_eq!(buffer, expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn depth_two() {
|
||||||
|
let mut state = TreeState::default();
|
||||||
|
state.open(vec!["b"]);
|
||||||
|
state.open(vec!["b", "d"]);
|
||||||
|
let buffer = render(15, 9, &mut state);
|
||||||
|
let expected = Buffer::with_lines([
|
||||||
|
" Alfa ",
|
||||||
|
"▼ Bravo ",
|
||||||
|
" Charlie ",
|
||||||
|
" ▼ Delta ",
|
||||||
|
" Echo ",
|
||||||
|
" Foxtrot ",
|
||||||
|
" Golf ",
|
||||||
|
" Hotel ",
|
||||||
|
" ",
|
||||||
|
]);
|
||||||
|
assert_eq!(buffer, expected);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user