mirror of
https://codeberg.org/icewind/bitbuffer.git
synced 2026-06-03 08:34:07 +02:00
rename bitbuffer/bitstream to bitreadbuffer/bitreadstream
This commit is contained in:
parent
0e58b89ae9
commit
6fc3785fc9
8 changed files with 227 additions and 226 deletions
|
|
@ -3,7 +3,7 @@ use std::num::NonZeroU16;
|
|||
|
||||
use maplit::hashmap;
|
||||
|
||||
use bitbuffer::{BigEndian, BitBuffer, BitRead, BitStream, LittleEndian};
|
||||
use bitbuffer::{BigEndian, BitRead, BitReadBuffer, BitReadStream, LittleEndian};
|
||||
|
||||
const BYTES: &'static [u8] = &[
|
||||
0b1011_0101,
|
||||
|
|
@ -22,7 +22,7 @@ const BYTES: &'static [u8] = &[
|
|||
|
||||
#[test]
|
||||
fn read_u8_le() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
|
||||
assert_eq!(buffer.read_int::<u8>(0, 1).unwrap(), 0b1);
|
||||
assert_eq!(buffer.read_int::<u8>(1, 1).unwrap(), 0b0);
|
||||
|
|
@ -35,7 +35,7 @@ fn read_u8_le() {
|
|||
|
||||
#[test]
|
||||
fn read_u8_be() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
|
||||
assert_eq!(buffer.read_int::<u8>(0, 1).unwrap(), 0b1);
|
||||
assert_eq!(buffer.read_int::<u8>(1, 1).unwrap(), 0b0);
|
||||
|
|
@ -47,21 +47,21 @@ fn read_u8_be() {
|
|||
|
||||
#[test]
|
||||
fn read_u16_le() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
|
||||
assert_eq!(buffer.read_int::<u16>(6, 12).unwrap(), 0b00_0110_1010_10);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn read_u16_be() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
|
||||
assert_eq!(buffer.read_int::<u16>(6, 12).unwrap(), 0b01_0110_1010_10);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn read_u32_le() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
|
||||
assert_eq!(
|
||||
buffer.read_int::<u32>(6, 24).unwrap(),
|
||||
|
|
@ -71,7 +71,7 @@ fn read_u32_le() {
|
|||
|
||||
#[test]
|
||||
fn read_u32_be() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
|
||||
assert_eq!(
|
||||
buffer.read_int::<u32>(6, 24).unwrap(),
|
||||
|
|
@ -81,7 +81,7 @@ fn read_u32_be() {
|
|||
|
||||
#[test]
|
||||
fn read_u64_le() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
|
||||
assert_eq!(
|
||||
buffer.read_int::<u64>(6, 34).unwrap(),
|
||||
|
|
@ -103,7 +103,7 @@ fn read_u64_le() {
|
|||
|
||||
#[test]
|
||||
fn read_u64_be() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
|
||||
assert_eq!(
|
||||
buffer.read_int::<u64>(6, 34).unwrap(),
|
||||
|
|
@ -121,7 +121,7 @@ fn read_u64_be() {
|
|||
|
||||
#[test]
|
||||
fn read_i8_le() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
|
||||
assert_eq!(buffer.read_int::<i8>(0, 3).unwrap(), -0b11);
|
||||
assert_eq!(buffer.read_int::<i8>(0, 8).unwrap(), -0b100_1011);
|
||||
|
|
@ -129,7 +129,7 @@ fn read_i8_le() {
|
|||
|
||||
#[test]
|
||||
fn read_i8_be() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
|
||||
assert_eq!(buffer.read_int::<i8>(1, 2).unwrap(), 0b1);
|
||||
assert_eq!(buffer.read_int::<i8>(0, 3).unwrap(), -0b11);
|
||||
|
|
@ -138,7 +138,7 @@ fn read_i8_be() {
|
|||
|
||||
#[test]
|
||||
fn read_i16_le() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
|
||||
assert_eq!(buffer.read_int::<i16>(6, 12).unwrap(), 0b0_0110_1010_10);
|
||||
assert_eq!(buffer.read_int::<i16>(6, 13).unwrap(), -0b11_1001_0101_10);
|
||||
|
|
@ -146,7 +146,7 @@ fn read_i16_le() {
|
|||
|
||||
#[test]
|
||||
fn read_i16_be() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
|
||||
assert_eq!(buffer.read_int::<i16>(6, 12).unwrap(), 0b1_0110_1010_10);
|
||||
assert_eq!(buffer.read_int::<i16>(7, 12).unwrap(), -0b1001_0101_011);
|
||||
|
|
@ -154,7 +154,7 @@ fn read_i16_be() {
|
|||
|
||||
#[test]
|
||||
fn read_i32_le() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
|
||||
assert_eq!(
|
||||
buffer.read_int::<i32>(6, 24).unwrap(),
|
||||
|
|
@ -165,14 +165,14 @@ fn read_i32_le() {
|
|||
|
||||
#[test]
|
||||
fn read_i32_be() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
|
||||
assert_eq!(buffer.read_int::<i32>(7, 24).unwrap(), -4893108);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn read_i64_le() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
|
||||
assert_eq!(buffer.read_int::<i64>(6, 34).unwrap(), -6871928406);
|
||||
assert_eq!(buffer.read_int::<i64>(6, 59).unwrap(), -27471957726940758);
|
||||
|
|
@ -181,7 +181,7 @@ fn read_i64_le() {
|
|||
|
||||
#[test]
|
||||
fn read_i64_be() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
|
||||
assert_eq!(buffer.read_int::<i64>(7, 34).unwrap(), -5010541773);
|
||||
assert_eq!(buffer.read_int::<i64>(7, 60).unwrap(), -336251766397153476);
|
||||
|
|
@ -190,23 +190,23 @@ fn read_i64_be() {
|
|||
|
||||
#[test]
|
||||
fn read_f32_le() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
|
||||
assert_eq!(buffer.read_float::<f64>(6).unwrap(), 135447455835963910000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn read_f64_le() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), LittleEndian);
|
||||
|
||||
assert_eq!(buffer.read_float::<f64>(6).unwrap(), 135447455835963910000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_from() {
|
||||
let buffer: BitBuffer<LittleEndian> = BitBuffer::from(BYTES.to_vec());
|
||||
let _: BitStream<LittleEndian> = BitStream::from(buffer);
|
||||
let _: BitStream<LittleEndian> = BitStream::from(BYTES.to_vec());
|
||||
let buffer: BitReadBuffer<LittleEndian> = BitReadBuffer::from(BYTES.to_vec());
|
||||
let _: BitReadStream<LittleEndian> = BitReadStream::from(buffer);
|
||||
let _: BitReadStream<LittleEndian> = BitReadStream::from(BYTES.to_vec());
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -214,7 +214,7 @@ fn test_read_str_be() {
|
|||
let bytes = vec![
|
||||
0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0, 0, 0, 0, 0,
|
||||
];
|
||||
let buffer = BitBuffer::new(bytes, BigEndian);
|
||||
let buffer = BitReadBuffer::new(bytes, BigEndian);
|
||||
assert_eq!(
|
||||
buffer.read_string(0, Some(13)).unwrap(),
|
||||
"Hello world".to_owned()
|
||||
|
|
@ -234,7 +234,7 @@ fn test_read_str_no_null_termination_le() {
|
|||
let bytes = vec![
|
||||
0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64,
|
||||
];
|
||||
let buffer = BitBuffer::new(bytes, LittleEndian);
|
||||
let buffer = BitReadBuffer::new(bytes, LittleEndian);
|
||||
assert_eq!(
|
||||
buffer.read_string(0, None).unwrap(),
|
||||
"Hello world".to_owned()
|
||||
|
|
@ -246,7 +246,7 @@ fn test_read_str_no_null_termination_be() {
|
|||
let bytes = vec![
|
||||
0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64,
|
||||
];
|
||||
let buffer = BitBuffer::new(bytes, BigEndian);
|
||||
let buffer = BitReadBuffer::new(bytes, BigEndian);
|
||||
assert_eq!(
|
||||
buffer.read_string(0, None).unwrap(),
|
||||
"Hello world".to_owned()
|
||||
|
|
@ -259,7 +259,7 @@ fn test_read_str_le() {
|
|||
'h' as u8, 'e' as u8, 'l' as u8, 'l' as u8, 'o' as u8, ' ' as u8, 'w' as u8, 'o' as u8,
|
||||
'r' as u8, 'l' as u8, 'd' as u8, 0, 'f' as u8, 'o' as u8, 'o' as u8, 0, 0, 0, 0, 0,
|
||||
];
|
||||
let buffer = BitBuffer::new(bytes, LittleEndian);
|
||||
let buffer = BitReadBuffer::new(bytes, LittleEndian);
|
||||
assert_eq!(buffer.read_string(0, Some(3)).unwrap(), "hel".to_owned());
|
||||
assert_eq!(
|
||||
buffer.read_string(0, Some(11)).unwrap(),
|
||||
|
|
@ -273,8 +273,8 @@ fn test_read_str_le() {
|
|||
|
||||
#[test]
|
||||
fn read_trait() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
let mut stream = BitStream::new(buffer);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
let mut stream = BitReadStream::new(buffer);
|
||||
let a: u8 = stream.read().unwrap();
|
||||
assert_eq!(0b1011_0101, a);
|
||||
let b: i8 = stream.read().unwrap();
|
||||
|
|
@ -293,8 +293,8 @@ fn read_trait() {
|
|||
#[test]
|
||||
fn read_trait_unchecked() {
|
||||
unsafe {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
let mut stream = BitStream::new(buffer);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
let mut stream = BitReadStream::new(buffer);
|
||||
let a: u8 = stream.read_unchecked().unwrap();
|
||||
assert_eq!(0b1011_0101, a);
|
||||
let b: i8 = stream.read_unchecked().unwrap();
|
||||
|
|
@ -313,8 +313,8 @@ fn read_trait_unchecked() {
|
|||
|
||||
#[test]
|
||||
fn read_sized_trait() {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
let mut stream = BitStream::new(buffer);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
let mut stream = BitReadStream::new(buffer);
|
||||
let a: u8 = stream.read_sized(4).unwrap();
|
||||
assert_eq!(0b1011, a);
|
||||
stream.set_pos(0).unwrap();
|
||||
|
|
@ -337,15 +337,15 @@ fn read_sized_trait() {
|
|||
result
|
||||
);
|
||||
stream.set_pos(0).unwrap();
|
||||
let mut result: BitStream<BigEndian> = stream.read_sized(4).unwrap();
|
||||
let mut result: BitReadStream<BigEndian> = stream.read_sized(4).unwrap();
|
||||
assert_eq!(0b10u8, result.read_int(2).unwrap());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn read_sized_trait_unchecked() {
|
||||
unsafe {
|
||||
let buffer = BitBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
let mut stream = BitStream::new(buffer);
|
||||
let buffer = BitReadBuffer::new(BYTES.to_vec(), BigEndian);
|
||||
let mut stream = BitReadStream::new(buffer);
|
||||
let a: u8 = stream.read_sized_unchecked(4).unwrap();
|
||||
assert_eq!(0b1011, a);
|
||||
stream.set_pos(0).unwrap();
|
||||
|
|
@ -368,7 +368,7 @@ fn read_sized_trait_unchecked() {
|
|||
result
|
||||
);
|
||||
stream.set_pos(0).unwrap();
|
||||
let mut result: BitStream<BigEndian> = stream.read_sized_unchecked(4).unwrap();
|
||||
let mut result: BitReadStream<BigEndian> = stream.read_sized_unchecked(4).unwrap();
|
||||
assert_eq!(0b10u8, result.read_int(2).unwrap());
|
||||
}
|
||||
}
|
||||
|
|
@ -411,8 +411,8 @@ fn test_read_struct() {
|
|||
0b0101_0101,
|
||||
0b1010_1010,
|
||||
];
|
||||
let buffer = BitBuffer::new(bytes, LittleEndian);
|
||||
let mut stream = BitStream::from(buffer);
|
||||
let buffer = BitReadBuffer::new(bytes, LittleEndian);
|
||||
let mut stream = BitReadStream::from(buffer);
|
||||
assert_eq!(
|
||||
TestStruct {
|
||||
foo: 12,
|
||||
|
|
@ -431,21 +431,21 @@ fn test_read_struct() {
|
|||
#[test]
|
||||
fn test_read_nonzero() {
|
||||
let bytes = vec![12, 0, 0, 0];
|
||||
let buffer = BitBuffer::new(bytes, LittleEndian);
|
||||
let mut stream = BitStream::from(buffer);
|
||||
let buffer = BitReadBuffer::new(bytes, LittleEndian);
|
||||
let mut stream = BitReadStream::from(buffer);
|
||||
assert_eq!(NonZeroU16::new(12), stream.read().unwrap());
|
||||
assert_eq!(None, stream.read::<Option<NonZeroU16>>().unwrap());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn read_read_signed() {
|
||||
let buffer = BitBuffer::new(vec![255, 255, 255, 255, 255, 255, 255, 255], LittleEndian);
|
||||
let buffer = BitReadBuffer::new(vec![255, 255, 255, 255, 255, 255, 255, 255], LittleEndian);
|
||||
|
||||
assert_eq!(buffer.read_int::<i32>(0, 32).unwrap(), -1);
|
||||
|
||||
let bytes = (-10i32).to_le_bytes();
|
||||
let mut byte_vec = Vec::with_capacity(4);
|
||||
byte_vec.extend_from_slice(&bytes);
|
||||
let buffer = BitBuffer::new(byte_vec, LittleEndian);
|
||||
let buffer = BitReadBuffer::new(byte_vec, LittleEndian);
|
||||
assert_eq!(buffer.read_int::<i32>(0, 32).unwrap(), -10);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue