first draft

This commit is contained in:
tux
2026-11-03 20:19:21 +01:00
commit 158e115242
44 changed files with 10785 additions and 0 deletions
+50
View File
@@ -0,0 +1,50 @@
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");
}