use super::*;
use crate::NextSample;
const SINE_WAVE_FILE: &[u8] = include_bytes!("audiocheck.net_sin_1000Hz_0dBFS_0.1s.qoa");
#[test]
fn samples_of_test_file() -> std::io::Result<()> {
let mut decoder = QoaDecoder::new(std::io::Cursor::new(SINE_WAVE_FILE)).unwrap();
assert_eq!(decoder.sample_rate(), 44100);
assert_eq!(decoder.channel_count(), 1);
assert_eq!(decoder.next_sample().unwrap(), NextSample::Sample(422)); assert_eq!(decoder.next_sample().unwrap(), NextSample::Sample(4779)); assert_eq!(decoder.next_sample().unwrap(), NextSample::Sample(8886)); assert_eq!(decoder.next_sample().unwrap(), NextSample::Sample(13834)); assert_eq!(decoder.next_sample().unwrap(), NextSample::Sample(17173)); assert_eq!(decoder.next_sample().unwrap(), NextSample::Sample(21539)); assert_eq!(decoder.next_sample().unwrap(), NextSample::Sample(24403)); assert_eq!(decoder.next_sample().unwrap(), NextSample::Sample(27482)); assert_eq!(decoder.next_sample().unwrap(), NextSample::Sample(29200)); assert_eq!(decoder.next_sample().unwrap(), NextSample::Sample(31270)); assert_eq!(decoder.next_sample().unwrap(), NextSample::Sample(31976)); assert_eq!(decoder.next_sample().unwrap(), NextSample::Sample(32767)); assert_eq!(decoder.next_sample().unwrap(), NextSample::Sample(32183)); for _i in 0..4398 {
let sample = decoder.next_sample().unwrap();
match sample {
NextSample::Sample(_) => {}
NextSample::MetadataChanged => unreachable!(),
NextSample::Paused => unreachable!(),
NextSample::Finished => unreachable!(),
}
}
assert_eq!(decoder.next_sample().unwrap(), NextSample::Finished);
assert_eq!(decoder.next_sample().unwrap(), NextSample::Finished);
Ok(())
}