diff --git a/client/src/input/microphone/tests/mod.rs b/client/src/input/microphone/tests/mod.rs index 1fff654..aa79c82 100644 --- a/client/src/input/microphone/tests/mod.rs +++ b/client/src/input/microphone/tests/mod.rs @@ -1,8 +1,10 @@ use super::{ - MIC_CHANNELS, MIC_SAMPLE_BYTES, MIC_SAMPLE_RATE, buffer_duration_us, mic_packet_target_bytes, - pcm_payload_duration_us, split_audio_sample, + MIC_CHANNELS, MIC_SAMPLE_BYTES, MIC_SAMPLE_RATE, bool_env_enabled, buffer_duration_us, + explicit_media_sources_required, mic_noise_suppression_from_env, mic_noise_suppression_level, + mic_packet_target_bytes, pcm_payload_duration_us, split_audio_sample, }; use gstreamer as gst; +use serial_test::serial; fn buffer_with_duration(size: usize, duration: Option) -> gst::Buffer { gst::init().ok(); @@ -77,3 +79,45 @@ fn trailing_microphone_packet_keeps_remaining_bytes() { assert_eq!(packets[2].data.len(), 960); assert_eq!(packets[2].pts, 45_000); } + +#[test] +#[serial] +fn microphone_noise_suppression_level_accepts_named_presets() { + let cases = [ + ("low", "low"), + ("medium", "moderate"), + ("moderate", "moderate"), + ("high", "high"), + ("very_high", "very-high"), + ("aggressive", "very-high"), + ("unknown", "very-high"), + ]; + + for (raw, expected) in cases { + temp_env::with_var("LESAVKA_MIC_NOISE_SUPPRESSION_LEVEL", Some(raw), || { + assert_eq!(mic_noise_suppression_level(), expected); + }); + } +} + +#[test] +#[serial] +fn boolean_microphone_flags_accept_plain_english_true_values() { + for raw in ["1", "true", "yes", "on"] { + temp_env::with_vars( + [ + ("LESAVKA_REQUIRE_EXPLICIT_MEDIA_SOURCES", Some(raw)), + ("LESAVKA_MIC_NOISE_SUPPRESSION", Some(raw)), + ], + || { + assert!(explicit_media_sources_required()); + assert!(mic_noise_suppression_from_env()); + assert!(bool_env_enabled("LESAVKA_MIC_NOISE_SUPPRESSION")); + }, + ); + } + + temp_env::with_var("LESAVKA_MIC_NOISE_SUPPRESSION", Some("false"), || { + assert!(!mic_noise_suppression_from_env()); + }); +}