#[test]
fn example() {
use constriction::stream::{model::DefaultLeakyQuantizer, stack::DefaultAnsCoder, Decode};
let mut coder = DefaultAnsCoder::new();
let symbols = [23i32, -15, 78, 43, -69];
let quantizer = DefaultLeakyQuantizer::new(-100..=100);
let means = [35.2f64, -1.7, 30.1, 71.2, -75.1];
let stds = [10.1f64, 25.3, 23.8, 35.4, 3.9];
let models = means.iter().zip(&stds).map(|(&mean, &std)| {
quantizer.quantize(probability::distribution::Gaussian::new(mean, std))
});
coder
.encode_symbols_reverse(symbols.iter().zip(models.clone()))
.unwrap();
println!(
"Encoded into {} bits: {:?}",
coder.num_bits(),
&*coder.get_compressed().unwrap()
);
let reconstructed = coder
.decode_symbols(models)
.collect::<Result<Vec<_>, _>>()
.unwrap();
assert_eq!(reconstructed, symbols);
}