#[cfg(test)]
mod test_frames {
use crate::{
error::Error,
frames::{
decode_header,
types::{
BitRate, ChannelMode, Emphasis, ModeExtension, MpegLayer, MpegVersion, SampleRate,
},
},
};
#[test]
fn decode_random_buffer() {
let buffer = [0x00, 0xFB, 0x90, 0x4E];
let error = match decode_header(&buffer) {
Ok(_) => None,
Err(e) => Some(e),
};
assert!(error.is_some());
assert!(error.unwrap() == Error::NotAudioFrame);
}
#[test]
fn decode_unsupported_version() {
let buffer = [0b1111_1111, 0b1110_1011, 0b1110_0011, 0b0101_0100];
let error = match decode_header(&buffer) {
Ok(_) => None,
Err(e) => Some(e),
};
assert!(error.is_some());
assert!(error.unwrap() == Error::ForbiddenMpegVersion);
}
#[test]
fn decode_buffer() {
let buffer = [0b1111_1111, 0b1111_1011, 0b1110_0011, 0b0101_0100];
let header = match decode_header(&buffer) {
Ok(header) => Some(header),
Err(_) => None,
};
assert!(header.is_some());
let header = header.unwrap();
assert!(header.version == MpegVersion::Mpeg1);
assert!(header.layer == MpegLayer::Layer3);
assert!(header.padding == 1);
assert!(header.protected == false);
assert!(header.bitrate == BitRate::Kbps320);
assert!(header.sample_rate == SampleRate::Hz44100);
assert!(header.channel_mode == ChannelMode::JointStereo);
assert!(header.mode_extension == Some(ModeExtension::Bands8To31));
assert!(header.copyrigth == false);
assert!(header.original == true);
assert!(header.emphasis == Emphasis::None);
}
}