mirror of
https://github.com/ratatui-org/ratatui
synced 2024-11-29 08:00:38 +00:00
2cfe82a47e
- Simplify `assert_buffer_eq!` logic. - Deprecate `assert_buffer_eq!`. - Introduce `TestBackend::assert_buffer_lines`. Also simplify many tests involving buffer comparisons. For the deprecation, just use `assert_eq` instead of `assert_buffer_eq`: ```diff -assert_buffer_eq!(actual, expected); +assert_eq!(actual, expected); ``` --- I noticed `assert_buffer_eq!` creating no test coverage reports and looked into this macro. First I simplified it. Then I noticed a bunch of `assert_eq!(buffer, …)` and other indirect usages of this macro (like `TestBackend::assert_buffer`). The good thing here is that it's mainly used in tests so not many changes to the library code.
113 lines
3 KiB
Rust
113 lines
3 KiB
Rust
#![cfg(feature = "widget-calendar")]
|
|
use ratatui::{
|
|
backend::TestBackend,
|
|
buffer::Buffer,
|
|
style::Style,
|
|
widgets::{
|
|
calendar::{CalendarEventStore, Monthly},
|
|
Widget,
|
|
},
|
|
Terminal,
|
|
};
|
|
use time::{Date, Month};
|
|
|
|
#[track_caller]
|
|
fn test_render<W: Widget>(widget: W, width: u16, height: u16, expected: &Buffer) {
|
|
let backend = TestBackend::new(width, height);
|
|
let mut terminal = Terminal::new(backend).unwrap();
|
|
terminal
|
|
.draw(|f| f.render_widget(widget, f.size()))
|
|
.unwrap();
|
|
terminal.backend().assert_buffer(expected);
|
|
}
|
|
|
|
#[test]
|
|
fn days_layout() {
|
|
let c = Monthly::new(
|
|
Date::from_calendar_date(2023, Month::January, 1).unwrap(),
|
|
CalendarEventStore::default(),
|
|
);
|
|
let expected = Buffer::with_lines([
|
|
" 1 2 3 4 5 6 7",
|
|
" 8 9 10 11 12 13 14",
|
|
" 15 16 17 18 19 20 21",
|
|
" 22 23 24 25 26 27 28",
|
|
" 29 30 31",
|
|
]);
|
|
test_render(c, 21, 5, &expected);
|
|
}
|
|
|
|
#[test]
|
|
fn days_layout_show_surrounding() {
|
|
let c = Monthly::new(
|
|
Date::from_calendar_date(2023, Month::December, 1).unwrap(),
|
|
CalendarEventStore::default(),
|
|
)
|
|
.show_surrounding(Style::default());
|
|
let expected = Buffer::with_lines([
|
|
" 26 27 28 29 30 1 2",
|
|
" 3 4 5 6 7 8 9",
|
|
" 10 11 12 13 14 15 16",
|
|
" 17 18 19 20 21 22 23",
|
|
" 24 25 26 27 28 29 30",
|
|
" 31 1 2 3 4 5 6",
|
|
]);
|
|
test_render(c, 21, 6, &expected);
|
|
}
|
|
|
|
#[test]
|
|
fn show_month_header() {
|
|
let c = Monthly::new(
|
|
Date::from_calendar_date(2023, Month::January, 1).unwrap(),
|
|
CalendarEventStore::default(),
|
|
)
|
|
.show_month_header(Style::default());
|
|
let expected = Buffer::with_lines([
|
|
" January 2023 ",
|
|
" 1 2 3 4 5 6 7",
|
|
" 8 9 10 11 12 13 14",
|
|
" 15 16 17 18 19 20 21",
|
|
" 22 23 24 25 26 27 28",
|
|
" 29 30 31",
|
|
]);
|
|
test_render(c, 21, 6, &expected);
|
|
}
|
|
|
|
#[test]
|
|
fn show_weekdays_header() {
|
|
let c = Monthly::new(
|
|
Date::from_calendar_date(2023, Month::January, 1).unwrap(),
|
|
CalendarEventStore::default(),
|
|
)
|
|
.show_weekdays_header(Style::default());
|
|
let expected = Buffer::with_lines([
|
|
" Su Mo Tu We Th Fr Sa",
|
|
" 1 2 3 4 5 6 7",
|
|
" 8 9 10 11 12 13 14",
|
|
" 15 16 17 18 19 20 21",
|
|
" 22 23 24 25 26 27 28",
|
|
" 29 30 31",
|
|
]);
|
|
test_render(c, 21, 6, &expected);
|
|
}
|
|
|
|
#[test]
|
|
fn show_combo() {
|
|
let c = Monthly::new(
|
|
Date::from_calendar_date(2023, Month::January, 1).unwrap(),
|
|
CalendarEventStore::default(),
|
|
)
|
|
.show_weekdays_header(Style::default())
|
|
.show_month_header(Style::default())
|
|
.show_surrounding(Style::default());
|
|
let expected = Buffer::with_lines([
|
|
" January 2023 ",
|
|
" Su Mo Tu We Th Fr Sa",
|
|
" 1 2 3 4 5 6 7",
|
|
" 8 9 10 11 12 13 14",
|
|
" 15 16 17 18 19 20 21",
|
|
" 22 23 24 25 26 27 28",
|
|
" 29 30 31 1 2 3 4",
|
|
]);
|
|
test_render(c, 21, 7, &expected);
|
|
}
|