use crate::testing_prelude::*;
#[test]
fn sox_factory_sox_ng_true() {
let options = SoxOptionsPartial {
sox_ng: Some(true),
sox_path: None,
};
let factory = factory(options.resolve_without_validation());
assert_eq!(factory.binary(), SOX_NG);
assert!(
factory
.create()
.args
.contains(&"--single-threaded".to_owned())
);
}
#[test]
fn sox_factory_sox_ng_false() {
let options = SoxOptionsPartial {
sox_ng: Some(false),
sox_path: None,
};
let factory = factory(options.resolve_without_validation());
assert_eq!(factory.binary(), SOX);
assert!(factory.create().args.is_empty());
}
#[test]
fn sox_factory_path_containing_sox_ng() {
let options = SoxOptionsPartial {
sox_path: Some(PathBuf::from("/usr/local/bin/sox_ng")),
sox_ng: None,
};
let factory = factory(options.resolve_without_validation());
assert_eq!(factory.binary(), "/usr/local/bin/sox_ng");
assert!(
factory
.create()
.args
.contains(&"--single-threaded".to_owned())
);
}
#[test]
fn sox_factory_path_without_sox_ng() {
let options = SoxOptionsPartial {
sox_path: Some(PathBuf::from("/usr/local/bin/sox")),
sox_ng: None,
};
let factory = factory(options.resolve_without_validation());
assert_eq!(factory.binary(), "/usr/local/bin/sox");
}
#[test]
fn sox_factory_both_explicit() {
let options = SoxOptionsPartial {
sox_path: Some(PathBuf::from("/opt/sox/bin/sox")),
sox_ng: Some(true),
};
let factory = factory(options.resolve_without_validation());
assert_eq!(factory.binary(), "/opt/sox/bin/sox");
assert!(
factory
.create()
.args
.contains(&"--single-threaded".to_owned())
);
}
#[test]
fn sox_factory_explicit_path_sox_ng_false() {
let options = SoxOptionsPartial {
sox_path: Some(PathBuf::from("/custom/sox_ng")),
sox_ng: Some(false),
};
let factory = factory(options.resolve_without_validation());
assert_eq!(factory.binary(), "/custom/sox_ng");
assert!(
factory.create().args.is_empty(),
"explicit sox_ng: false should not be overridden by path name"
);
}
#[test]
fn sox_factory_neither_set() {
let options = SoxOptionsPartial {
sox_path: None,
sox_ng: None,
};
let factory = factory(options.resolve_without_validation());
let binary = factory.binary();
assert!(binary == SOX || binary == SOX_NG);
}
fn factory(options: SoxOptions) -> SoxFactory {
SoxFactory::new(Arc::new(options))
}