Auto merge of #130964 - matthiaskrgr:rollup-suriuub, r=matthiaskrgr · qinheping/verify-rust-std@098ada1 (original) (raw)
`@@ -735,6 +735,69 @@ fn read_buf_full_read() {
`
735
735
`assert_eq!(BufReader::new(FullRead).fill_buf().unwrap().len(), DEFAULT_BUF_SIZE);
`
736
736
`}
`
737
737
``
``
738
`+
struct DataAndErrorReader(&'static [u8]);
`
``
739
+
``
740
`+
impl Read for DataAndErrorReader {
`
``
741
`+
fn read(&mut self, _buf: &mut [u8]) -> io::Result {
`
``
742
`` +
panic!("We want tests to use read_buf
")
``
``
743
`+
}
`
``
744
+
``
745
`+
fn read_buf(&mut self, buf: io::BorrowedCursor<'_>) -> io::Result<()> {
`
``
746
`+
self.0.read_buf(buf).unwrap();
`
``
747
`+
Err(io::Error::other("error"))
`
``
748
`+
}
`
``
749
`+
}
`
``
750
+
``
751
`+
#[test]
`
``
752
`+
fn read_buf_data_and_error_take() {
`
``
753
`+
let mut buf = [0; 64];
`
``
754
`+
let mut buf = io::BorrowedBuf::from(buf.as_mut_slice());
`
``
755
+
``
756
`+
let mut r = DataAndErrorReader(&[4, 5, 6]).take(1);
`
``
757
`+
assert!(r.read_buf(buf.unfilled()).is_err());
`
``
758
`+
assert_eq!(buf.filled(), &[4]);
`
``
759
+
``
760
`+
assert!(r.read_buf(buf.unfilled()).is_ok());
`
``
761
`+
assert_eq!(buf.filled(), &[4]);
`
``
762
`+
assert_eq!(r.get_ref().0, &[5, 6]);
`
``
763
`+
}
`
``
764
+
``
765
`+
#[test]
`
``
766
`+
fn read_buf_data_and_error_buf() {
`
``
767
`+
let mut r = BufReader::new(DataAndErrorReader(&[4, 5, 6]));
`
``
768
+
``
769
`+
assert!(r.fill_buf().is_err());
`
``
770
`+
assert_eq!(r.fill_buf().unwrap(), &[4, 5, 6]);
`
``
771
`+
}
`
``
772
+
``
773
`+
#[test]
`
``
774
`+
fn read_buf_data_and_error_read_to_end() {
`
``
775
`+
let mut r = DataAndErrorReader(&[4, 5, 6]);
`
``
776
+
``
777
`+
let mut v = Vec::with_capacity(200);
`
``
778
`+
assert!(r.read_to_end(&mut v).is_err());
`
``
779
+
``
780
`+
assert_eq!(v, &[4, 5, 6]);
`
``
781
`+
}
`
``
782
+
``
783
`+
#[test]
`
``
784
`+
fn read_to_end_error() {
`
``
785
`+
struct ErrorReader;
`
``
786
+
``
787
`+
impl Read for ErrorReader {
`
``
788
`+
fn read(&mut self, _buf: &mut [u8]) -> io::Result {
`
``
789
`+
Err(io::Error::other("error"))
`
``
790
`+
}
`
``
791
`+
}
`
``
792
+
``
793
`+
let mut r = [4, 5, 6].chain(ErrorReader);
`
``
794
+
``
795
`+
let mut v = Vec::with_capacity(200);
`
``
796
`+
assert!(r.read_to_end(&mut v).is_err());
`
``
797
+
``
798
`+
assert_eq!(v, &[4, 5, 6]);
`
``
799
`+
}
`
``
800
+
738
801
`#[test]
`
739
802
`// Miri does not support signalling OOM
`
740
803
`#[cfg_attr(miri, ignore)]
`