#[test] fn roundtrip() { letmut real = Vec::new(); letmut w = write::DeflateEncoder::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::DeflateDecoder::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::DeflateEncoder::new(&mut data, Compression::default())
.write_all(b"foo")
.unwrap(); letmut r = read::DeflateDecoder::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::DeflateEncoder::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::DeflateDecoder::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::DeflateDecoder::new(read::DeflateEncoder::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::DeflateEncoder::new(
write::DeflateDecoder::new(Vec::new()),
Compression::default(),
);
w.write_all(&v).unwrap(); let w = w.finish().unwrap().finish().unwrap();
assert_eq!(w, v);
}
#[test] fn reset_writer() { let v = crate::random_bytes().take(1024 * 1024).collect::<Vec<_>>(); letmut w = write::DeflateEncoder::new(Vec::new(), Compression::default());
w.write_all(&v).unwrap(); let a = w.reset(Vec::new()).unwrap();
w.write_all(&v).unwrap(); let b = w.finish().unwrap();
letmut w = write::DeflateEncoder::new(Vec::new(), Compression::default());
w.write_all(&v).unwrap(); let c = w.finish().unwrap();
assert!(a == b && b == c);
}
#[test] fn reset_reader() { let v = crate::random_bytes().take(1024 * 1024).collect::<Vec<_>>(); let (mut a, mut b, mut c) = (Vec::new(), Vec::new(), Vec::new()); letmut r = read::DeflateEncoder::new(&v[..], Compression::default());
r.read_to_end(&mut a).unwrap();
r.reset(&v[..]);
r.read_to_end(&mut b).unwrap();
letmut r = read::DeflateEncoder::new(&v[..], Compression::default());
r.read_to_end(&mut c).unwrap();
assert!(a == b && b == c);
}
#[test] fn reset_decoder() { let v = crate::random_bytes().take(1024 * 1024).collect::<Vec<_>>(); letmut w = write::DeflateEncoder::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::DeflateDecoder::new(&data[..]);
r.read_to_end(&mut a).unwrap();
r.reset(&data);
r.read_to_end(&mut b).unwrap();
letmut r = read::DeflateDecoder::new(&data[..]);
r.read_to_end(&mut c).unwrap();
assert!(a == b && b == c && c == v);
}
{ letmut w = write::DeflateDecoder::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::DeflateDecoder::new(Vec::new());
w.write_all(&data).unwrap(); let c = w.finish().unwrap();
assert!(a == b && b == c && c == v);
}
}
#[test] fn zero_length_read_with_data() { let m = vec![3u8; 128 * 1024 + 1]; letmut c = read::DeflateEncoder::new(&m[..], Compression::default());
letmut result = Vec::new();
c.read_to_end(&mut result).unwrap();
letmut d = read::DeflateDecoder::new(&result[..]); letmut data = Vec::new();
assert_eq!(d.read(&mut data).unwrap(), 0);
}
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.