mod fixtures;
mod test_waveform_resample_method {
use babycat::constants::RESAMPLE_MODE_BABYCAT_LANCZOS;
use babycat::constants::RESAMPLE_MODE_BABYCAT_SINC;
use babycat::constants::RESAMPLE_MODE_LIBSAMPLERATE;
use babycat::Signal;
use babycat::Waveform;
use babycat::WaveformArgs;
use crate::fixtures::*;
const RESAMPLE_MODES: &[u32] = &[
RESAMPLE_MODE_BABYCAT_LANCZOS,
RESAMPLE_MODE_BABYCAT_SINC,
RESAMPLE_MODE_LIBSAMPLERATE,
];
fn decode_and_assert(
test_name: &str,
filename: &str,
waveform_args: WaveformArgs,
frame_rate_hz: u32,
expected_num_channels: u16,
expected_num_frames: usize,
expected_frame_rate_hz: u32,
) {
let waveform = Waveform::from_file(filename, waveform_args).unwrap();
for &resample_mode in RESAMPLE_MODES {
match waveform.resample_by_mode(frame_rate_hz, resample_mode) {
Ok(resampled) => {
let actual_num_channels = resampled.num_channels();
assert_eq!(
actual_num_channels, expected_num_channels,
"Test {} expected {} channels. Got {}.",
test_name, expected_num_channels, actual_num_channels
);
let actual_num_frames = resampled.num_frames();
assert_eq!(
actual_num_frames, expected_num_frames,
"Test {} expected {} frames. Got {}.",
test_name, expected_num_frames, actual_num_frames
);
let actual_frame_rate_hz = resampled.frame_rate_hz();
assert_eq!(
actual_frame_rate_hz, expected_frame_rate_hz,
"Test {} expected frame rate as {} hz. Got {} hz.",
test_name, expected_frame_rate_hz, actual_frame_rate_hz
);
}
Err(err) => panic!(
"Test {} failed with error. Error message: {}",
test_name, err
),
}
}
}
#[test]
fn test_circus_of_freaks_no_change_1() {
decode_and_assert(
"test_circus_of_freaks_no_change_1",
COF_FILENAME,
Default::default(),
COF_FRAME_RATE_HZ,
COF_NUM_CHANNELS,
COF_NUM_FRAMES,
COF_FRAME_RATE_HZ,
);
}
#[test]
fn test_circus_of_freaks_44099() {
decode_and_assert(
"test_circus_of_freaks_44099",
COF_FILENAME,
Default::default(),
44099,
COF_NUM_CHANNELS,
2491191,
44099,
);
}
#[test]
fn test_circus_of_freaks_44101() {
decode_and_assert(
"test_circus_of_freaks_44101",
COF_FILENAME,
Default::default(),
44101,
COF_NUM_CHANNELS,
2491304,
44101,
);
}
#[test]
fn test_circus_of_freaks_22050() {
decode_and_assert(
"test_circus_of_freaks_22050",
COF_FILENAME,
Default::default(),
22050,
COF_NUM_CHANNELS,
(COF_NUM_FRAMES + 1) / 2,
22050,
);
}
#[test]
fn test_circus_of_freaks_11025() {
decode_and_assert(
"test_circus_of_freaks_11025",
COF_FILENAME,
Default::default(),
11025,
COF_NUM_CHANNELS,
(COF_NUM_FRAMES + 3) / 4,
11025,
);
}
#[test]
fn test_circus_of_freaks_88200() {
decode_and_assert(
"test_circus_of_freaks_88200",
COF_FILENAME,
Default::default(),
88200,
COF_NUM_CHANNELS,
COF_NUM_FRAMES * 2,
88200,
);
}
}