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:
@@ -0,0 +1,46 @@
|
||||
// ABOUTME: Unit-Tests für CLI-Argument-Parsing und Validierung.
|
||||
// ABOUTME: Testet clap-Constraints wie Sidetone Range-Validierung.
|
||||
|
||||
use clap::Parser;
|
||||
use corsairctl::cli::Cli;
|
||||
|
||||
/// Hilfsfunktion: Parst CLI-Argumente aus einem String-Slice.
|
||||
fn parse_args(args: &[&str]) -> Result<Cli, clap::Error> {
|
||||
Cli::try_parse_from(args)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sidetone_rejects_negative() {
|
||||
let result = parse_args(&["corsairctl", "sidetone", "--", "-1"]);
|
||||
assert!(result.is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sidetone_rejects_above_23() {
|
||||
let result = parse_args(&["corsairctl", "sidetone", "24"]);
|
||||
assert!(result.is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sidetone_accepts_valid() {
|
||||
let result = parse_args(&["corsairctl", "sidetone", "15"]);
|
||||
assert!(result.is_ok());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sidetone_accepts_zero() {
|
||||
let result = parse_args(&["corsairctl", "sidetone", "0"]);
|
||||
assert!(result.is_ok());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sidetone_accepts_max() {
|
||||
let result = parse_args(&["corsairctl", "sidetone", "23"]);
|
||||
assert!(result.is_ok());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sidetone_without_value_is_read_mode() {
|
||||
let result = parse_args(&["corsairctl", "sidetone"]);
|
||||
assert!(result.is_ok());
|
||||
}
|
||||
Reference in New Issue
Block a user