futures: tests/io_write.rs: Don't break w/o features
Symbols/Imports pushed down / localised
Tests gated with cfg()
Tests now build and pass with all valid feature combinations
See previous commits for details and rationale
+#[cfg(feature = "std")]
+mod mock_writer {
use futures::io::AsyncWrite;
-use futures_test::task::panic_context;
use std::io;
use std::pin::Pin;
use std::task::{Context, Poll};
-struct MockWriter {
+ pub struct MockWriter {
fun: Box<dyn FnMut(&[u8]) -> Poll<io::Result<usize>>>,
}
@@ -31,11 +32,21 @@ impl AsyncWrite for MockWriter {
panic!()
}
}
+}
/// Verifies that the default implementation of `poll_write_vectored`
/// calls `poll_write` with an empty slice if no buffers are provided.
+#[cfg(feature = "std")]
#[test]
fn write_vectored_no_buffers() {
+ use futures::io::AsyncWrite;
+ use futures_test::task::panic_context;
+ use std::io;
+ use std::pin::Pin;
+ use std::task::Poll;
+
+ use mock_writer::MockWriter;
+
let mut writer = MockWriter::new(|buf| {
assert_eq!(buf, b"");
Err(io::ErrorKind::BrokenPipe.into()).into()
@@ -50,8 +61,17 @@ fn write_vectored_no_buffers() {
/// Verifies that the default implementation of `poll_write_vectored`
/// calls `poll_write` with the first non-empty buffer.
+#[cfg(feature = "std")]
#[test]
fn write_vectored_first_non_empty() {
+ use futures::io::AsyncWrite;
+ use futures_test::task::panic_context;
+ use std::io;
+ use std::pin::Pin;
+ use std::task::Poll;
+
+ use mock_writer::MockWriter;
+
let mut writer = MockWriter::new(|buf| {
assert_eq!(buf, b"four");
Poll::Ready(Ok(4))
