1
0
Fork 0
mirror of https://codeberg.org/icewind/bitbuffer.git synced 2026-06-03 16:44:06 +02:00

add test for reading derived Read

this requires moving the tests into their own folder, so they get tested loaded as a separate crate
This commit is contained in:
Robin Appelman 2019-02-28 00:16:17 +01:00
commit a49835d003
2 changed files with 57 additions and 3 deletions

View file

@ -60,8 +60,6 @@ mod endianness;
mod is_signed; mod is_signed;
mod read; mod read;
mod stream; mod stream;
#[cfg(test)]
mod tests;
/// Errors that can be returned when trying to read from a buffer /// Errors that can be returned when trying to read from a buffer
#[derive(Debug)] #[derive(Debug)]

View file

@ -1,4 +1,5 @@
use super::*; use bitstream_reader::{BigEndian, BitBuffer, BitStream, LittleEndian, Read};
// for bench on nightly // for bench on nightly
//use std::fs; //use std::fs;
//use test::Bencher; //use test::Bencher;
@ -271,6 +272,61 @@ fn read_sized_trait() {
assert_eq!(vec![0b1011_0101, 0b0110_1010, 0b1010_1100], vec); assert_eq!(vec![0b1011_0101, 0b0110_1010, 0b1010_1100], vec);
} }
#[derive(Read, PartialEq, Debug)]
struct TestStruct {
foo: u8,
str: String,
#[size = 2]
truncated: String,
bar: u16,
float: f32,
#[size = 3]
asd: u8,
#[size_bits = 2]
dynamic: u8,
#[size = "asd"]
previous_field: u8,
}
#[test]
fn test_read_struct() {
let float: [u8; 4] = 12.5f32.to_bits().to_le_bytes();
let bytes = vec![
12,
'h' as u8,
'e' as u8,
'l' as u8,
'l' as u8,
'o' as u8,
0,
'f' as u8,
'o' as u8,
'o' as u8,
0,
float[0],
float[1],
float[2],
float[3],
0b0101_0101,
0b1010_1010,
];
let buffer = BitBuffer::new(bytes, LittleEndian);
let mut stream = BitStream::from(buffer);
assert_eq!(
TestStruct {
foo: 12,
str: "hello".to_owned(),
truncated: "fo".to_owned(),
bar: 'o' as u16,
float: 12.5,
asd: 0b101,
dynamic: 0b10,
previous_field: 0b1010_0,
},
stream.read().unwrap()
);
}
//0b1011_0101, //0b1011_0101,
// 0b0110_1010, // 0b0110_1010,
// 0b1010_1100, // 0b1010_1100,