// 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::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()); }