mirror of
https://github.com/ratatui-org/ratatui
synced 2024-11-22 20:53:19 +00:00
c12bcfefa2
Fixes many not yet enabled lints (mostly pedantic) on everything that is not the lib (examples, benchs, tests). Therefore, this is not containing anything that can be a breaking change. Lints are not enabled as that should be the job of #974. I created this as a separate PR as its mostly independent and would only clutter up the diff of #974 even more. Also see https://github.com/ratatui-org/ratatui/pull/974#discussion_r1506458743 --------- Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
114 lines
3.1 KiB
Rust
114 lines
3.1 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, expected: &Buffer, width: u16, height: u16) {
|
|
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(vec![
|
|
" 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, &expected, 21, 5);
|
|
}
|
|
|
|
#[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(vec![
|
|
" 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, &expected, 21, 6);
|
|
}
|
|
|
|
#[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(vec![
|
|
" 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, &expected, 21, 6);
|
|
}
|
|
|
|
#[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(vec![
|
|
" 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, &expected, 21, 6);
|
|
}
|
|
|
|
#[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(vec![
|
|
" 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, &expected, 21, 7);
|
|
}
|