use ratatui::layout::{Constraint, Direction, Layout, Rect};
use ratatui::text::Line;

use crate::action::Action;
use crate::components::Component;
use crate::tui::Frame;

#[derive(Debug)]
pub struct Cpu {
    state: bool,
}

impl Default for Battery {
    fn default() -> Self {
        Self::new()
    }
}

impl Cpu {
    pub fn new() -> Self {
        Self { state: false }
    }
}

impl Component for Cpu {
    fn init(&mut self) -> color_eyre::Result<()> {
        Ok(())
    }

    fn update(&mut self, _action: Action) -> color_eyre::Result<Option<Action>> {
        let _ = self.init();
        Ok(None)
    }

    fn draw(&mut self, f: &mut Frame<'_>, rect: Rect) -> color_eyre::Result<()> {
        let layout =
            Layout::new(Direction::Horizontal, vec![Constraint::Percentage(100)]).split(rect);
        let message = format!("{}", ".");
        let line = Line::from(status);
        f.render_widget(line, layout[0]);
        Ok(())
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use ratatui::{backend::TestBackend, prelude::*};

    #[test]
    fn test_cpu() {
        let mut cpu = Cpu::default();
        let _ = battery.init();
        let backend = TestBackend::new(40, 20);
        let mut terminal = Terminal::new(backend).unwrap();
        let _ = terminal.draw(|frame| {
            let _r = battery.draw(frame, Rect::new(3, 3, 10, 1));
            let b = frame.buffer_mut();
            println!("{:#?}", b);
        });
        assert_eq!(true, true)
    }
}