use crate::usage::dashboard::*;
use crate::usage::data::Period;
use ratatui::layout::Rect;
#[test]
fn test_default_state() {
let s = DashboardState::default();
assert_eq!(s.period, Period::AllTime);
assert_eq!(s.focused_card, 0);
}
#[test]
fn test_focus_cycling() {
let mut s = DashboardState::default();
assert_eq!(s.focused_card, 0);
s.focus_next();
assert_eq!(s.focused_card, 1);
s.focus_next();
assert_eq!(s.focused_card, 2);
s.focus_next();
assert_eq!(s.focused_card, 3);
s.focus_next();
assert_eq!(s.focused_card, 4);
s.focus_next();
assert_eq!(s.focused_card, 5);
s.focus_next();
assert_eq!(s.focused_card, 0);
s.focus_prev();
assert_eq!(s.focused_card, 5); s.focus_prev();
assert_eq!(s.focused_card, 4);
}
#[test]
fn test_set_period() {
let mut s = DashboardState::default();
assert!(s.set_period(Period::Today));
assert!(!s.set_period(Period::Today)); assert!(s.set_period(Period::Week));
}
#[test]
fn test_centered_rect_large_terminal() {
let area = Rect::new(0, 0, 200, 60);
let r = centered_rect(area);
assert_eq!(r.width, 150); assert_eq!(r.height, 45); assert_eq!(r.x, 25); assert_eq!(r.y, 7); }
#[test]
fn test_centered_rect_small_terminal() {
let area = Rect::new(0, 0, 80, 24);
let r = centered_rect(area);
assert_eq!(r.width, 60); assert_eq!(r.height, 20); }
#[test]
fn test_centered_rect_tiny_terminal() {
let area = Rect::new(0, 0, 40, 15);
let r = centered_rect(area);
assert!(r.width <= area.width);
assert!(r.height <= area.height);
assert!(r.x >= area.x);
assert!(r.y >= area.y);
}