brotlic 0.8.2

Bindings to the brotli library featuring a low-overhead encoder and decoder, io::Write and io::Read wrappers for compression and decompression at customizable compression qualities and window sizes.
Documentation
use std::io::{Read, Write};

use brotlic::{CompressorReader, CompressorWriter, DecompressorReader, DecompressorWriter};

mod common;

fn write_comp_read_decomp_verify(input: &[u8]) {
    let compressed = {
        let mut compressor = CompressorWriter::new(Vec::new());
        compressor.write_all(input).unwrap();
        compressor.into_inner().unwrap()
    };

    let decompressed = {
        let mut decompressor = DecompressorReader::new(compressed.as_slice());
        let mut decompressed = Vec::new();
        decompressor.read_to_end(&mut decompressed).unwrap();
        decompressed
    };

    assert_eq!(input, decompressed);
}

fn read_comp_write_decomp_verify(input: &[u8]) {
    let compressed = {
        let mut compressor = CompressorReader::new(input);
        let mut compressed = Vec::new();
        compressor.read_to_end(&mut compressed).unwrap();
        compressed
    };

    let decompressed = {
        let mut decompressor = DecompressorWriter::new(Vec::new());
        decompressor.write_all(compressed.as_slice()).unwrap();
        decompressor.into_inner().unwrap()
    };

    assert_eq!(input, decompressed);
}

#[test]
fn test_write_comp_min_entropy_small() {
    write_comp_read_decomp_verify(common::gen_min_entropy(32).as_slice());
}

#[test]
fn test_write_comp_medium_entropy_small() {
    write_comp_read_decomp_verify(common::gen_medium_entropy(32).as_slice());
}

#[test]
fn test_write_comp_max_entropy_small() {
    write_comp_read_decomp_verify(common::gen_max_entropy(32).as_slice());
}

#[test]
fn test_write_comp_min_entropy_medium() {
    write_comp_read_decomp_verify(common::gen_min_entropy(512).as_slice());
}

#[test]
fn test_write_comp_medium_entropy_medium() {
    write_comp_read_decomp_verify(common::gen_medium_entropy(512).as_slice());
}

#[test]
fn test_write_comp_max_entropy_medium() {
    write_comp_read_decomp_verify(common::gen_max_entropy(512).as_slice());
}

#[test]
fn test_write_comp_min_entropy_large() {
    write_comp_read_decomp_verify(common::gen_min_entropy(8192).as_slice());
}

#[test]
fn test_write_comp_medium_entropy_large() {
    write_comp_read_decomp_verify(common::gen_medium_entropy(8192).as_slice());
}

#[test]
fn test_write_comp_max_entropy_large() {
    write_comp_read_decomp_verify(common::gen_max_entropy(8192).as_slice());
}

#[test]
fn test_read_comp_min_entropy_small() {
    read_comp_write_decomp_verify(common::gen_min_entropy(32).as_slice());
}

#[test]
fn test_read_comp_medium_entropy_small() {
    read_comp_write_decomp_verify(common::gen_medium_entropy(32).as_slice());
}

#[test]
fn test_read_comp_max_entropy_small() {
    read_comp_write_decomp_verify(common::gen_max_entropy(32).as_slice());
}

#[test]
fn test_read_comp_min_entropy_medium() {
    read_comp_write_decomp_verify(common::gen_min_entropy(512).as_slice());
}

#[test]
fn test_read_comp_medium_entropy_medium() {
    read_comp_write_decomp_verify(common::gen_medium_entropy(512).as_slice());
}

#[test]
fn test_read_comp_max_entropy_medium() {
    read_comp_write_decomp_verify(common::gen_max_entropy(512).as_slice());
}

#[test]
fn test_read_comp_min_entropy_large() {
    read_comp_write_decomp_verify(common::gen_min_entropy(8192).as_slice());
}

#[test]
fn test_read_comp_medium_entropy_large() {
    read_comp_write_decomp_verify(common::gen_medium_entropy(8192).as_slice());
}

#[test]
fn test_read_comp_max_entropy_large() {
    read_comp_write_decomp_verify(common::gen_max_entropy(8192).as_slice());
}