1pub use self::decode::Decoder;
23pub use self::encode::EncodeOptions;
24pub use self::encode::Encoder;
25pub use self::encode::DEFAULT_BLOCK_SIZE;
26
27mod decode;
28mod encode;
29pub(crate) mod symbol;
30
31#[cfg(test)]
32pub(crate) mod test_data;
33
34#[derive(Debug, Clone, Copy)]
35enum BlockType {
36 Raw = 0b00,
37 Fixed = 0b01,
38 Dynamic = 0b10,
39}
40
41#[cfg(test)]
42mod tests {
43 use super::*;
44 use crate::lz77;
45 use alloc::vec::Vec;
46 use core2::io::{Read, Write};
47
48 #[test]
49 fn encode_and_decode_works() {
50 let plain = (0..lz77::MAX_DISTANCE as u32 * 32)
51 .map(|i| i as u8)
52 .collect::<Vec<_>>();
53
54 let buffer = Vec::new();
55 let mut encoder = Encoder::new(buffer);
56 encoder.write_all(&plain[..]).expect("encode");
57 let encoded = encoder.finish().into_result().unwrap();
58
59 let mut buffer = Vec::new();
60 let mut decoder = Decoder::new(&encoded[..]);
61 decoder.read_to_end(&mut buffer).expect("decode");
62
63 assert_eq!(buffer, plain);
64 }
65}