1#![warn(missing_docs)]
62
63mod controller;
64mod error;
65mod mock;
66mod modes;
67mod state;
68
69pub use controller::{AsusController, DisplayController};
71pub use error::ControllerError;
72pub use mock::MockController;
73pub use modes::{DisplayMode, EReadingMode, EyeCareMode, ManualMode, NormalMode, VividMode};
74pub use state::ControllerState;
75
76#[cfg(test)]
77mod tests {
78 use super::*;
79
80 #[test]
81 fn test_mock_controller_toggle_ereading() {
82 let mock = MockController::new();
83
84 let mode = mock.get_current_mode().unwrap();
85 assert!(!mode.is_ereading());
86 assert_eq!(mode.mode_id(), 1);
87
88 let mode = mock.toggle_e_reading().unwrap();
89 assert!(mode.is_ereading());
90
91 let mode = mock.toggle_e_reading().unwrap();
92 assert!(!mode.is_ereading());
93 assert_eq!(mode.mode_id(), 1);
94 }
95
96 #[test]
97 fn test_mock_controller_dimming() {
98 let mock = MockController::new();
99
100 mock.set_dimming(80).unwrap();
101 assert_eq!(mock.get_state().dimming, 80);
102
103 mock.set_dimming_percent(50).unwrap();
104 let expected = AsusController::percent_to_dimming(50);
105 assert_eq!(mock.get_state().dimming, expected);
106 }
107
108 #[test]
109 fn test_dimming_conversion() {
110 assert_eq!(AsusController::percent_to_dimming(0), 40);
111 assert_eq!(AsusController::percent_to_dimming(100), 100);
112 assert_eq!(AsusController::percent_to_dimming(50), 70);
113
114 assert_eq!(AsusController::dimming_to_percent(40), 0);
115 assert_eq!(AsusController::dimming_to_percent(100), 100);
116 assert_eq!(AsusController::dimming_to_percent(70), 50);
117 }
118
119 #[test]
120 fn test_mode_from_controller_state() {
121 let state = ControllerState {
122 manual_slider: 75,
123 eyecare_level: 3,
124 ereading_grayscale: 2,
125 ereading_temp: 60,
126 ..Default::default()
127 };
128
129 let manual = ManualMode::from_controller_state(&state);
130 assert_eq!(manual.value, 75);
131
132 let eyecare = EyeCareMode::from_controller_state(&state);
133 assert_eq!(eyecare.level, 3);
134
135 let ereading = EReadingMode::from_controller_state(&state);
136 assert_eq!(ereading.grayscale, 2);
137 assert_eq!(ereading.temp, 60);
138 }
139}