51 lines
1.9 KiB
Rust
51 lines
1.9 KiB
Rust
use cdrustanoia_core::device::samples_to_bytes;
|
|
|
|
#[test]
|
|
fn end_to_end_image_rip() {
|
|
let dir = tempfile::tempdir().unwrap();
|
|
let image = dir.path().join("disc.raw");
|
|
let out = dir.path().join("out.raw");
|
|
let sectors = 24usize;
|
|
let mut samples = Vec::with_capacity(sectors * 1176);
|
|
for i in 0..sectors * 1176 {
|
|
samples.push(((i as i32 * 7919) % 65536 - 32768) as i16);
|
|
}
|
|
std::fs::write(&image, samples_to_bytes(&samples)).unwrap();
|
|
std::env::set_var("CDRUSTANOIA_TEST_IMAGE", &image);
|
|
|
|
let argv = vec![
|
|
"cdparanoia".to_string(),
|
|
"-q".to_string(),
|
|
"-r".to_string(),
|
|
"1".to_string(),
|
|
out.to_string_lossy().into_owned(),
|
|
];
|
|
assert_eq!(cdrustanoia_cli::run(&argv), 0);
|
|
let got = std::fs::read(&out).unwrap();
|
|
assert_eq!(got, samples_to_bytes(&samples));
|
|
std::env::remove_var("CDRUSTANOIA_TEST_IMAGE");
|
|
|
|
// Multi-track batch mode.
|
|
let multi = dir.path().join("multi.raw");
|
|
let mut multi_samples = Vec::new();
|
|
for i in 0..(48 * 1176) {
|
|
multi_samples.push((((i as i64 * 104729) % 65536) as i32 - 32768) as i16);
|
|
}
|
|
std::fs::write(&multi, samples_to_bytes(&multi_samples)).unwrap();
|
|
std::fs::write(dir.path().join("multi.raw.toc"), "0 23 0\n24 47 0\n").unwrap();
|
|
std::env::set_var("CDRUSTANOIA_TEST_IMAGE", &multi);
|
|
let argv = vec![
|
|
"cdparanoia".to_string(),
|
|
"-q".to_string(),
|
|
"-B".to_string(),
|
|
"1-2".to_string(),
|
|
format!("{}/", dir.path().display()),
|
|
];
|
|
assert_eq!(cdrustanoia_cli::run(&argv), 0);
|
|
let t1 = std::fs::read(dir.path().join("track01.cdda.wav")).unwrap();
|
|
let t2 = std::fs::read(dir.path().join("track02.cdda.wav")).unwrap();
|
|
assert_eq!(&t1[44..], &samples_to_bytes(&multi_samples[..24 * 1176]));
|
|
assert_eq!(&t2[44..], &samples_to_bytes(&multi_samples[24 * 1176..]));
|
|
std::env::remove_var("CDRUSTANOIA_TEST_IMAGE");
|
|
}
|