snowbinary 0.4.0

A header based system for writing and reading binary files using its own format
Documentation
mod default_tests {
    use std::path::PathBuf;

    use crate::{SnowBinError, SnowBinInfo, SnowBinReader, SnowBinWriter};

    #[test]
    fn info_test() -> Result<(), SnowBinError> {
        SnowBinInfo::default();

        SnowBinInfo::new(8, 8)?;
        SnowBinInfo::new(8, 16)?;
        SnowBinInfo::new(8, 32)?;
        SnowBinInfo::new(8, 64)?;
        SnowBinInfo::new(34_785_382, 8)?;
        SnowBinInfo::new(7_543_454, 16)?;
        SnowBinInfo::new(7_843_463, 32)?;
        SnowBinInfo::new(45_646_234, 64)?;
        SnowBinInfo::new(u32::MAX, 8)?;
        SnowBinInfo::new(u32::MAX, 16)?;
        SnowBinInfo::new(u32::MAX, 32)?;
        SnowBinInfo::new(u32::MAX, 64)?;

        assert_eq!(
            SnowBinInfo::new(1, 8).unwrap_err(),
            SnowBinError::HeaderSizeTooSmall
        );
        assert_eq!(
            SnowBinInfo::new(1, 16).unwrap_err(),
            SnowBinError::HeaderSizeTooSmall
        );
        assert_eq!(
            SnowBinInfo::new(1, 32).unwrap_err(),
            SnowBinError::HeaderSizeTooSmall
        );
        assert_eq!(
            SnowBinInfo::new(1, 64).unwrap_err(),
            SnowBinError::HeaderSizeTooSmall
        );
        assert_eq!(
            SnowBinInfo::new(1, 1).unwrap_err(),
            SnowBinError::HeaderSizeTooSmall
        );
        assert_eq!(
            SnowBinInfo::new(8, 1).unwrap_err(),
            SnowBinError::DataSizeNotAllowed
        );
        assert_eq!(
            SnowBinInfo::new(8, u8::MAX).unwrap_err(),
            SnowBinError::DataSizeNotAllowed
        );

        Ok(())
    }

    #[test]
    fn h_test() -> Result<(), SnowBinError> {
        {
            let info = SnowBinInfo::new(8, 64)?;
            let mut writer = SnowBinWriter::new(info, PathBuf::from("./file.temp"))?;

            writer.write("TEST", b"This is a String!")?;
            writer.write("TEST321", b"This is a String!")?;
            writer.write("Header", b"This is for doc tests!")?;

            writer.close()?;
        }

        {
            let mut reader = SnowBinReader::new(PathBuf::from("./file.temp"))?;

            reader.read("TEST").unwrap();
            assert_eq!(
                reader.read("NULL_NO").unwrap_err(),
                SnowBinError::ReachedEOF
            );
        }

        Ok(())
    }
}