use super::VoiceConfig;
#[test]
fn voice_config_none_gives_stock_only() {
let vc = VoiceConfig::stock_only();
assert!(!vc.has_any_addendum(), "stock_only must have no addenda");
assert_eq!(
vc.combined_addendum(),
"",
"stock_only combined_addendum must be empty"
);
assert!(
vc.voice_name.is_none(),
"stock_only must have no voice_name"
);
assert!(
vc.principles.is_none(),
"stock_only must have no principles"
);
assert!(
vc.voice_addendum.is_none(),
"stock_only must have no voice_addendum"
);
}
#[test]
fn voice_config_production_default_enables_principles() {
let vc = VoiceConfig::default_production();
assert!(
vc.principles.is_some(),
"default_production must have principles"
);
assert!(
!vc.principles.as_deref().unwrap_or("").is_empty(),
"default_production principles must be non-empty"
);
assert!(
vc.voice_addendum.is_none(),
"default_production must have no voice_addendum"
);
assert!(
vc.has_any_addendum(),
"default_production must report has_any_addendum=true"
);
}
#[test]
fn voice_config_combined_addendum_ordering() {
let vc = VoiceConfig {
principles: Some("Principles text.".to_string()),
voice_addendum: Some("Voice text.".to_string()),
voice_name: Some("test".to_string()),
};
let combined = vc.combined_addendum();
let p_pos = combined.find("Principles text").unwrap();
let v_pos = combined.find("Voice text").unwrap();
assert!(
p_pos < v_pos,
"principles must come before voice in combined_addendum"
);
assert!(combined.contains("Principles text."));
assert!(combined.contains("Voice text."));
}
#[test]
fn voice_config_combined_principles_only() {
let vc = VoiceConfig {
principles: Some("Only principles.".to_string()),
voice_addendum: None,
voice_name: None,
};
let combined = vc.combined_addendum();
assert_eq!(
combined, "Only principles.",
"principles-only combined must equal principles text"
);
}
#[test]
fn voice_config_combined_voice_only() {
let vc = VoiceConfig {
principles: None,
voice_addendum: Some("Only voice.".to_string()),
voice_name: Some("myvoice".to_string()),
};
let combined = vc.combined_addendum();
assert_eq!(
combined, "Only voice.",
"voice-only combined must equal voice text"
);
}
#[test]
fn voice_config_has_addendum_helpers() {
assert!(!VoiceConfig::default().has_any_addendum());
assert!(
VoiceConfig {
principles: Some("p".to_string()),
..Default::default()
}
.has_any_addendum()
);
assert!(
VoiceConfig {
voice_addendum: Some("v".to_string()),
..Default::default()
}
.has_any_addendum()
);
assert!(
VoiceConfig {
principles: Some("p".to_string()),
voice_addendum: Some("v".to_string()),
..Default::default()
}
.has_any_addendum()
);
assert!(
!VoiceConfig {
principles: Some(String::new()),
voice_addendum: Some(String::new()),
..Default::default()
}
.has_any_addendum()
);
}