From: Ian Jackson Date: Sun, 18 Apr 2021 12:25:25 +0000 (+0100) Subject: packetframe: tests: Test with BufReaders X-Git-Tag: otter-0.6.0~530 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=2eaf08d4bd5aea566097219c207057306c39ab4c;p=otter.git packetframe: tests: Test with BufReaders We are about to make this get quite involved with a BufReader's buffer methods, so the BufReader will hide our LumpReader. So test all combinations of both. This still only takes 2.5s in a debug build. Signed-off-by: Ian Jackson --- diff --git a/src/packetframe.rs b/src/packetframe.rs index 0bbf4dad..fe87ec58 100644 --- a/src/packetframe.rs +++ b/src/packetframe.rs @@ -164,10 +164,10 @@ fn badeof() -> ReadError { RE::IO(io::ErrorKind::UnexpectedEof.into()) } impl FrameReader { pub fn new(r: R) -> FrameReader where R:BufRead { - Self::new_unbuf(r) + Self::new_raw(Fuse::new(r)) } - fn new_unbuf(r: R) -> FrameReader { - FrameReader { inner: Fuse::new(r), state: Idle } + fn new_raw(r: Fuse) -> FrameReader { + FrameReader { inner: r, state: Idle } } #[throws(io::Error)] @@ -509,13 +509,18 @@ fn write_test(){ } } - dbgc!(lumpsize); - let lr = LumpReader::new(lumpsize, &*msg.buf); - let mut rd = FrameReader::new_unbuf(lr); - expect_good(&mut rd, b"hello"); - expect_boom(&mut rd); - expect_good(&mut rd, b"longer!"); - expect_good_eof(&mut rd); + for bufsize in 1..=msg.buf.len()+1 { + dbgc!(lumpsize, bufsize); + let rd = LumpReader::new(lumpsize, &*msg.buf); + let rd = BufReader::with_capacity(bufsize, rd); + let rd = Fuse::new(rd); + let mut rd = FrameReader::new_raw(rd); + + expect_good(&mut rd, b"hello"); + expect_boom(&mut rd); + expect_good(&mut rd, b"longer!"); + expect_good_eof(&mut rd); + } } // Unexpected EOF mid-chunk-header