Files
corsairctl/tests/cli_test.rs
T
nevaforget baada36222 fix: reject out-of-range led brightness instead of silently clamping
led accepted any u16 and main.rs clamped to 0..=1000 with no feedback,
inconsistent with sidetone which rejects out-of-range at parse time.
Add a clap range validator (0..=1000) and drop the silent clamp, so
invalid input now fails loudly.

Further quality-audit follow-ups:
- remove dead BragiDevice::open() (no caller; binary uses open_with_verbose)
- add tests: led range validation, format_battery for all status
  variants, waybar "unknown" class

Bump 0.1.2 -> 0.1.3.
2026-06-10 17:51:40 +02:00

59 lines
1.4 KiB
Rust

// 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());
}
#[test]
fn led_rejects_above_1000() {
let result = parse_args(&["corsairctl", "led", "1001"]);
assert!(result.is_err());
}
#[test]
fn led_accepts_max() {
let result = parse_args(&["corsairctl", "led", "1000"]);
assert!(result.is_ok());
}