#[test] fn roundtrip() { letmut real = Vec::new(); letmut w = write::ZlibEncoder::new(Vec::new(), Compression::default()); let v = crate::random_bytes().take(1024).collect::<Vec<_>>(); for _ in0..200 { let to_write = &v[..thread_rng().gen_range(0..v.len())];
real.extend(to_write.iter().copied());
w.write_all(to_write).unwrap();
} let result = w.finish().unwrap(); letmut r = read::ZlibDecoder::new(&result[..]); letmut ret = Vec::new();
r.read_to_end(&mut ret).unwrap();
assert_eq!(ret, real);
}
#[test] fn drop_writes() { letmut data = Vec::new();
write::ZlibEncoder::new(&mut data, Compression::default())
.write_all(b"foo")
.unwrap(); letmut r = read::ZlibDecoder::new(&data[..]); letmut ret = Vec::new();
r.read_to_end(&mut ret).unwrap();
assert_eq!(ret, b"foo");
}
#[test] fn total_in() { letmut real = Vec::new(); letmut w = write::ZlibEncoder::new(Vec::new(), Compression::default()); let v = crate::random_bytes().take(1024).collect::<Vec<_>>(); for _ in0..200 { let to_write = &v[..thread_rng().gen_range(0..v.len())];
real.extend(to_write.iter().copied());
w.write_all(to_write).unwrap();
} letmut result = w.finish().unwrap();
let result_len = result.len();
for _ in0..200 {
result.extend(v.iter().copied());
}
letmut r = read::ZlibDecoder::new(&result[..]); letmut ret = Vec::new();
r.read_to_end(&mut ret).unwrap();
assert_eq!(ret, real);
assert_eq!(r.total_in(), result_len as u64);
}
#[test] fn roundtrip2() { let v = crate::random_bytes().take(1024 * 1024).collect::<Vec<_>>(); letmut r = read::ZlibDecoder::new(read::ZlibEncoder::new(&v[..], Compression::default())); letmut ret = Vec::new();
r.read_to_end(&mut ret).unwrap();
assert_eq!(ret, v);
}
#[test] fn roundtrip3() { let v = crate::random_bytes().take(1024 * 1024).collect::<Vec<_>>(); letmut w =
write::ZlibEncoder::new(write::ZlibDecoder::new(Vec::new()), Compression::default());
w.write_all(&v).unwrap(); let w = w.finish().unwrap().finish().unwrap();
assert_eq!(w, v);
}
#[test] fn reset_decoder() { let v = crate::random_bytes().take(1024 * 1024).collect::<Vec<_>>(); letmut w = write::ZlibEncoder::new(Vec::new(), Compression::default());
w.write_all(&v).unwrap(); let data = w.finish().unwrap();
{ let (mut a, mut b, mut c) = (Vec::new(), Vec::new(), Vec::new()); letmut r = read::ZlibDecoder::new(&data[..]);
r.read_to_end(&mut a).unwrap();
r.reset(&data);
r.read_to_end(&mut b).unwrap();
letmut r = read::ZlibDecoder::new(&data[..]);
r.read_to_end(&mut c).unwrap();
assert!(a == b && b == c && c == v);
}
{ letmut w = write::ZlibDecoder::new(Vec::new());
w.write_all(&data).unwrap(); let a = w.reset(Vec::new()).unwrap();
w.write_all(&data).unwrap(); let b = w.finish().unwrap();
letmut w = write::ZlibDecoder::new(Vec::new());
w.write_all(&data).unwrap(); let c = w.finish().unwrap();
assert!(a == b && b == c && c == v);
}
}
#[test] fn bad_input() { // regress tests: previously caused a panic on drop letmut out: Vec<u8> = Vec::new(); let data: Vec<u8> = (0..255).cycle().take(1024).collect(); letmut w = write::ZlibDecoder::new(&mut out); match w.write_all(&data[..]) {
Ok(_) => panic!("Expected an error to be returned!"),
Err(e) => assert_eq!(e.kind(), io::ErrorKind::InvalidInput),
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.