更新libclamav库1.0.0版本
This commit is contained in:
66
clamav/libclamav_rust/.cargo/vendor/weezl/tests/roundtrip.rs
vendored
Normal file
66
clamav/libclamav_rust/.cargo/vendor/weezl/tests/roundtrip.rs
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
use std::{env, fs};
|
||||
use weezl::{decode, encode, BitOrder};
|
||||
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
enum Flavor {
|
||||
Gif,
|
||||
Tiff,
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn roundtrip_all() {
|
||||
let file = env::args().next().unwrap();
|
||||
let data = fs::read(file).unwrap();
|
||||
|
||||
for &flavor in &[Flavor::Gif, Flavor::Tiff] {
|
||||
for &bit_order in &[BitOrder::Lsb, BitOrder::Msb] {
|
||||
for bit_width in 2..8 {
|
||||
let data: Vec<_> = data
|
||||
.iter()
|
||||
.copied()
|
||||
.map(|b| b & ((1 << bit_width) - 1))
|
||||
.collect();
|
||||
|
||||
println!("Roundtrip test {:?} {:?} {}", flavor, bit_order, bit_width);
|
||||
assert_roundtrips(&*data, flavor, bit_width, bit_order);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn assert_roundtrips(data: &[u8], flavor: Flavor, bit_width: u8, bit_order: BitOrder) {
|
||||
let (c, d): (
|
||||
fn(BitOrder, u8) -> encode::Encoder,
|
||||
fn(BitOrder, u8) -> decode::Decoder,
|
||||
) = match flavor {
|
||||
Flavor::Gif => (encode::Encoder::new, decode::Decoder::new),
|
||||
Flavor::Tiff => (
|
||||
encode::Encoder::with_tiff_size_switch,
|
||||
decode::Decoder::with_tiff_size_switch,
|
||||
),
|
||||
};
|
||||
let mut encoder = c(bit_order, bit_width);
|
||||
let mut buffer = Vec::with_capacity(2 * data.len() + 40);
|
||||
let _ = encoder.into_stream(&mut buffer).encode_all(data);
|
||||
|
||||
let mut decoder = d(bit_order, bit_width);
|
||||
let mut compare = vec![];
|
||||
let result = decoder
|
||||
.into_stream(&mut compare)
|
||||
.decode_all(buffer.as_slice());
|
||||
assert!(
|
||||
result.status.is_ok(),
|
||||
"{:?}, {}, {:?}",
|
||||
bit_order,
|
||||
bit_width,
|
||||
result.status
|
||||
);
|
||||
assert!(
|
||||
data == &*compare,
|
||||
"{:?}, {}\n{:?}\n{:?}",
|
||||
bit_order,
|
||||
bit_width,
|
||||
data,
|
||||
compare
|
||||
);
|
||||
}
|
Reference in New Issue
Block a user