binary_codec/bitstream/
mod.rs1pub mod reader;
2pub mod writer;
3
4pub trait CryptoStream {
5 fn apply_keystream_byte(&mut self, b: u8) -> u8;
6 fn apply_keystream(&mut self, slice: &[u8]) -> &[u8];
7}
8
9#[cfg(test)]
10mod tests {
11 use crate::bitstream::{reader::BitStreamReader, writer::BitStreamWriter};
12
13 #[test]
14 fn can_serialize_and_deserialize_using_bitstream() {
15 let mut buffer = Vec::new();
16 let mut writer = BitStreamWriter::new(&mut buffer);
17
18 writer.write_bit(true);
19 writer.write_bit(false);
20 writer.write_bit(true);
21 writer.write_byte(12);
22 writer.write_bytes(&[34, 56]);
23
24 assert_eq!(writer.byte_pos(), 4);
25
26 let mut reader = BitStreamReader::new(&buffer);
27 assert_eq!(reader.read_bit().unwrap(), true);
28 assert_eq!(reader.read_bit().unwrap(), false);
29 assert_eq!(reader.read_bit().unwrap(), true);
30 assert_eq!(reader.read_byte().unwrap(), 12);
31 assert_eq!(reader.read_byte().unwrap(), 34);
32 assert_eq!(reader.read_byte().unwrap(), 56);
33
34 assert_eq!(buffer, [0b00000101, 12, 34, 56]);
35 }
36}