#![warn(missing_docs)]
mod controller;
mod error;
mod mock;
mod modes;
mod state;
pub use controller::{AsusController, DisplayController};
pub use error::ControllerError;
pub use mock::MockController;
pub use modes::{DisplayMode, EReadingMode, EyeCareMode, ManualMode, NormalMode, VividMode};
pub use state::ControllerState;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_mock_controller_toggle_ereading() {
let mock = MockController::new();
let mode = mock.get_current_mode().unwrap();
assert!(!mode.is_ereading());
assert_eq!(mode.mode_id(), 1);
let mode = mock.toggle_e_reading().unwrap();
assert!(mode.is_ereading());
let mode = mock.toggle_e_reading().unwrap();
assert!(!mode.is_ereading());
assert_eq!(mode.mode_id(), 1);
}
#[test]
fn test_mock_controller_dimming() {
let mock = MockController::new();
mock.set_dimming(80).unwrap();
assert_eq!(mock.get_state().dimming, 80);
mock.set_dimming_percent(50).unwrap();
let expected = AsusController::percent_to_dimming(50);
assert_eq!(mock.get_state().dimming, expected);
}
#[test]
fn test_dimming_conversion() {
assert_eq!(AsusController::percent_to_dimming(0), 40);
assert_eq!(AsusController::percent_to_dimming(100), 100);
assert_eq!(AsusController::percent_to_dimming(50), 70);
assert_eq!(AsusController::dimming_to_percent(40), 0);
assert_eq!(AsusController::dimming_to_percent(100), 100);
assert_eq!(AsusController::dimming_to_percent(70), 50);
}
#[test]
fn test_mode_from_controller_state() {
let state = ControllerState {
manual_slider: 75,
eyecare_level: 3,
ereading_grayscale: 2,
ereading_temp: 60,
..Default::default()
};
let manual = ManualMode::from_controller_state(&state);
assert_eq!(manual.value, 75);
let eyecare = EyeCareMode::from_controller_state(&state);
assert_eq!(eyecare.level, 3);
let ereading = EReadingMode::from_controller_state(&state);
assert_eq!(ereading.grayscale, 2);
assert_eq!(ereading.temp, 60);
}
}