fix: Audit-Befunde in Protokoll-Parsing, Error-Handling und Eingabe-Validierung
BragiResponse-Felder korrekt zugeordnet (endpoint=raw[1], command=raw[2], status=raw[3]) gemäß Protokoll-Doku. PropertyNotSupported durch DeviceError ersetzt, parse_response_validated in device.rs aktiviert, flush() mit Iterationslimit gegen Endlosschleifen, Sidetone-Range per clap validiert statt clamp, JSON-Escaping im hidpp-battery-waybar.sh, udev auf uaccess umgestellt. 52 Tests grün.
This commit is contained in:
@@ -68,6 +68,23 @@ fn battery_promille_to_percent_fractional() {
|
||||
assert!((battery_promille_to_percent(735) - 73.5).abs() < f32::EPSILON);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn battery_status_icons() {
|
||||
// Jede Variante muss ein nicht-leeres Icon liefern
|
||||
assert!(!BatteryStatus::Offline.icon().is_empty());
|
||||
assert!(!BatteryStatus::Discharging.icon().is_empty());
|
||||
assert!(!BatteryStatus::Low.icon().is_empty());
|
||||
assert!(!BatteryStatus::Charging.icon().is_empty());
|
||||
assert!(!BatteryStatus::FullyCharged.icon().is_empty());
|
||||
assert!(!BatteryStatus::Unknown(0xFF).icon().is_empty());
|
||||
|
||||
// Discharging und Low teilen das gleiche Icon
|
||||
assert_eq!(BatteryStatus::Discharging.icon(), BatteryStatus::Low.icon());
|
||||
|
||||
// Charging und FullyCharged haben unterschiedliche Icons
|
||||
assert_ne!(BatteryStatus::Charging.icon(), BatteryStatus::FullyCharged.icon());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn property_ids_match_protocol() {
|
||||
assert_eq!(Property::BatteryLevel.id(), 0x0F);
|
||||
|
||||
Reference in New Issue
Block a user