vapor-parser 0.1.0

A parser for MPEG files
Documentation
#[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);
    }
}