use super::*;
#[test]
fn accepts_valid_config() {
valid_config().resolve().expect("valid config");
}
#[test]
fn rejects_zero_sample_rate() {
let mut c = valid_config();
c.sample_rate = 0;
assert!(c.resolve().is_err());
}
#[test]
fn rejects_non_positive_clip_duration() {
let mut c = valid_config();
c.clip_duration_seconds = 0.0;
assert!(c.clone().resolve().is_err());
c.clip_duration_seconds = f32::NAN;
assert!(c.resolve().is_err());
}
#[test]
fn rejects_empty_component_kind() {
let mut c = valid_config();
c.conditional_generator.kind = " ".into();
assert!(c.resolve().is_err());
}
#[test]
fn rejects_zero_latent_dim() {
let mut c = valid_config();
c.data_encoder.latent_dim = 0;
assert!(c.resolve().is_err());
}
#[test]
fn rejects_overlap_not_smaller_than_window() {
let mut c = valid_config();
c.target_audio.segmentation.window_seconds = 4.0;
c.target_audio.segmentation.overlap_seconds = 4.0;
assert!(c.resolve().is_err());
}
#[test]
fn rejects_segmentation_that_rounds_to_zero_frames() {
let mut c = valid_config();
c.sample_rate = 1;
c.target_audio.segmentation.window_seconds = 0.1;
c.target_audio.segmentation.overlap_seconds = 0.0;
assert!(c.resolve().is_err());
}
#[test]
fn rejects_overlap_that_rounds_up_to_window() {
let mut c = valid_config();
c.sample_rate = 1;
c.target_audio.segmentation.window_seconds = 1.4;
c.target_audio.segmentation.overlap_seconds = 0.6;
assert!(c.resolve().is_err());
}
#[test]
fn rejects_non_positive_optimizer_settings() {
let mut c = valid_config();
c.training.batch_size = 0;
assert!(c.resolve().is_err());
let mut c = valid_config();
c.training.max_steps = 0;
assert!(c.resolve().is_err());
let mut c = valid_config();
c.training.learning_rate = 0.0;
assert!(c.resolve().is_err());
}
#[test]
fn accepts_zero_temperature_but_rejects_negative() {
let mut c = valid_config();
c.generation.temperature = 0.0;
let spec = c
.clone()
.resolve()
.expect("zero temperature is the deterministic path");
assert_eq!(spec.generation().temperature(), None);
c.generation.temperature = -1.0;
assert!(c.resolve().is_err());
}
#[test]
fn rejects_zero_candidates() {
let mut c = valid_config();
c.generation.num_candidates = 0;
assert!(c.resolve().is_err());
}