use entropic::prelude::*;
#[test]
fn uniform_range_bijective() {
let mut buf = [0u8; 1];
let mut sink: Sink<'_, _, DefaultEntropyScheme> = Sink::new(buf.iter_mut());
let len = sink.put_uniform_range(0usize..=65, 33).unwrap();
assert!(!sink.put_byte(0x00).is_ok());
assert!(buf[0] == 33);
let mut s: Source<'_, _, DefaultEntropyScheme> = Source::new(buf.iter().take(len));
let u = s.get_uniform_range(0usize..=65).unwrap();
assert!(u == 33);
assert!(!s.get_byte().is_ok());
let mut buf = [0u8; 16];
let mut sink: Sink<'_, _, DefaultEntropyScheme> = Sink::new(buf.iter_mut());
let len = sink.put_uniform_range(0usize..=1, 1).unwrap();
println!("{}", len);
let mut s: Source<'_, _, DefaultEntropyScheme> = Source::new(buf.iter().take(len));
let u = s.get_uniform_range(0usize..=1).unwrap();
assert!(u == 1);
let mut buf = [0u8; 16];
let mut sink: Sink<'_, _, DefaultEntropyScheme> = Sink::new(buf.iter_mut());
let len = sink.put_uniform_range(0u8..=2, 1).unwrap();
println!("{}", len);
let mut s: Source<'_, _, DefaultEntropyScheme> = Source::new(buf.iter().take(len));
let u = s.get_uniform_range(0u8..=2).unwrap();
assert!(u == 1);
let mut buf = [0u8; 0];
let mut sink: Sink<'_, _, DefaultEntropyScheme> = Sink::new(buf.iter_mut());
let len = sink.put_uniform_range(16..=16, 16).unwrap();
assert!(len == 0);
let mut s: Source<'_, _, DefaultEntropyScheme> = Source::new(buf.iter().take(len));
let u = s.get_uniform_range(16..=16).unwrap();
assert!(u == 16);
}