test(rewind): re-enable common::io::Rewind tests
This commit is contained in:
		| @@ -95,94 +95,65 @@ where | ||||
| mod tests { | ||||
|     // FIXME: re-implement tests with `async/await`, this import should | ||||
|     // trigger a warning to remind us | ||||
|     use bytes::Bytes; | ||||
|     use tokio::io::AsyncReadExt; | ||||
|     use super::Rewind; | ||||
|     /* | ||||
|     use super::*; | ||||
|     use tokio_mockstream::MockStream; | ||||
|     use std::io::Cursor; | ||||
|  | ||||
|     // Test a partial rewind | ||||
|     #[test] | ||||
|     fn async_partial_rewind() { | ||||
|         let bs = &mut [104, 101, 108, 108, 111]; | ||||
|         let o1 = &mut [0, 0]; | ||||
|         let o2 = &mut [0, 0, 0, 0, 0]; | ||||
|     #[tokio::test] | ||||
|     async fn partial_rewind() { | ||||
|         let underlying = [104, 101, 108, 108, 111]; | ||||
|  | ||||
|         let mock = tokio_test::io::Builder::new() | ||||
|             .read(&underlying) | ||||
|             .build(); | ||||
|  | ||||
|         let mut stream = Rewind::new(mock); | ||||
|  | ||||
|         let mut stream = Rewind::new(MockStream::new(bs)); | ||||
|         let mut o1_cursor = Cursor::new(o1); | ||||
|         // Read off some bytes, ensure we filled o1 | ||||
|         match stream.read_buf(&mut o1_cursor).unwrap() { | ||||
|             Async::NotReady => panic!("should be ready"), | ||||
|             Async::Ready(cnt) => assert_eq!(2, cnt), | ||||
|         } | ||||
|         let mut buf = [0; 2]; | ||||
|         stream | ||||
|             .read_exact(&mut buf) | ||||
|             .await | ||||
|             .expect("read1"); | ||||
|  | ||||
|  | ||||
|         // Rewind the stream so that it is as if we never read in the first place. | ||||
|         let read_buf = Bytes::from(&o1_cursor.into_inner()[..]); | ||||
|         stream.rewind(read_buf); | ||||
|         stream.rewind(Bytes::from(&buf[..])); | ||||
|  | ||||
|         // We poll 2x here since the first time we'll only get what is in the | ||||
|         // prefix (the rewinded part) of the Rewind.\ | ||||
|         let mut o2_cursor = Cursor::new(o2); | ||||
|         stream.read_buf(&mut o2_cursor).unwrap(); | ||||
|         stream.read_buf(&mut o2_cursor).unwrap(); | ||||
|         let o2_final = o2_cursor.into_inner(); | ||||
|         let mut buf = [0; 5]; | ||||
|         stream | ||||
|             .read_exact(&mut buf) | ||||
|             .await | ||||
|             .expect("read1"); | ||||
|  | ||||
|         // At this point we should have read everything that was in the MockStream | ||||
|         assert_eq!(&o2_final, &bs); | ||||
|         assert_eq!(&buf, &underlying); | ||||
|     } | ||||
|     // Test a full rewind | ||||
|     #[test] | ||||
|     fn async_full_rewind() { | ||||
|         let bs = &mut [104, 101, 108, 108, 111]; | ||||
|         let o1 = &mut [0, 0, 0, 0, 0]; | ||||
|         let o2 = &mut [0, 0, 0, 0, 0]; | ||||
|  | ||||
|         let mut stream = Rewind::new(MockStream::new(bs)); | ||||
|         let mut o1_cursor = Cursor::new(o1); | ||||
|         match stream.read_buf(&mut o1_cursor).unwrap() { | ||||
|             Async::NotReady => panic!("should be ready"), | ||||
|             Async::Ready(cnt) => assert_eq!(5, cnt), | ||||
|         } | ||||
|     #[tokio::test] | ||||
|     async fn full_rewind() { | ||||
|         let underlying = [104, 101, 108, 108, 111]; | ||||
|  | ||||
|         let read_buf = Bytes::from(&o1_cursor.into_inner()[..]); | ||||
|         stream.rewind(read_buf); | ||||
|         let mock = tokio_test::io::Builder::new() | ||||
|             .read(&underlying) | ||||
|             .build(); | ||||
|  | ||||
|         let mut o2_cursor = Cursor::new(o2); | ||||
|         stream.read_buf(&mut o2_cursor).unwrap(); | ||||
|         stream.read_buf(&mut o2_cursor).unwrap(); | ||||
|         let o2_final = o2_cursor.into_inner(); | ||||
|         let mut stream = Rewind::new(mock); | ||||
|  | ||||
|         assert_eq!(&o2_final, &bs); | ||||
|         let mut buf = [0; 5]; | ||||
|         stream | ||||
|             .read_exact(&mut buf) | ||||
|             .await | ||||
|             .expect("read1"); | ||||
|  | ||||
|  | ||||
|         // Rewind the stream so that it is as if we never read in the first place. | ||||
|         stream.rewind(Bytes::from(&buf[..])); | ||||
|  | ||||
|         let mut buf = [0; 5]; | ||||
|         stream | ||||
|             .read_exact(&mut buf) | ||||
|             .await | ||||
|             .expect("read1"); | ||||
|     } | ||||
|     #[test] | ||||
|     fn partial_rewind() { | ||||
|         let bs = &mut [104, 101, 108, 108, 111]; | ||||
|         let o1 = &mut [0, 0]; | ||||
|         let o2 = &mut [0, 0, 0, 0, 0]; | ||||
|  | ||||
|         let mut stream = Rewind::new(MockStream::new(bs)); | ||||
|         stream.read(o1).unwrap(); | ||||
|  | ||||
|         let read_buf = Bytes::from(&o1[..]); | ||||
|         stream.rewind(read_buf); | ||||
|         let cnt = stream.read(o2).unwrap(); | ||||
|         stream.read(&mut o2[cnt..]).unwrap(); | ||||
|         assert_eq!(&o2, &bs); | ||||
|     } | ||||
|     #[test] | ||||
|     fn full_rewind() { | ||||
|         let bs = &mut [104, 101, 108, 108, 111]; | ||||
|         let o1 = &mut [0, 0, 0, 0, 0]; | ||||
|         let o2 = &mut [0, 0, 0, 0, 0]; | ||||
|  | ||||
|         let mut stream = Rewind::new(MockStream::new(bs)); | ||||
|         stream.read(o1).unwrap(); | ||||
|  | ||||
|         let read_buf = Bytes::from(&o1[..]); | ||||
|         stream.rewind(read_buf); | ||||
|         let cnt = stream.read(o2).unwrap(); | ||||
|         stream.read(&mut o2[cnt..]).unwrap(); | ||||
|         assert_eq!(&o2, &bs); | ||||
|     } | ||||
|     */ | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user