| 1 | // TODO: note that paths like futures_core::task::Context actually get redirected to core::task::Context |
| 2 | // in the rendered docs. Is this desirable? If so, should we change the paths here? |
| 3 | // |
| 4 | // Also, there is cross crate links in here. They are not going to work anytime soon. Do we put https links |
| 5 | // in here? to here: https://rust-lang.github.io/futures-api-docs? The problem is these have a |
| 6 | // version hardcoded in the url: 0.3.0-alpha.16 We could link to docs.rs, but currently that says: |
| 7 | // docs.rs failed to build futures-0.3.0-alpha.16 -> ok the reason seems to be that they are on |
| 8 | // 2019-04-17 which does still have futures-api unstable feature, so that should get solved. |
| 9 | // |
| 10 | //! Task related testing utilities. |
| 11 | //! |
| 12 | //! This module provides utilities for creating test |
| 13 | //! [`Context`](futures_core::task::Context)s, |
| 14 | //! [`Waker`](futures_core::task::Waker)s and |
| 15 | //! [`Spawn`](futures_task::Spawn) implementations. |
| 16 | //! |
| 17 | //! Test contexts: |
| 18 | //! - [`noop_context`] creates a context that ignores calls to |
| 19 | //! [`cx.waker().wake_by_ref()`](futures_core::task::Waker). |
| 20 | //! - [`panic_context`] creates a context that panics when |
| 21 | //! [`cx.waker().wake_by_ref()`](futures_core::task::Waker) is called. |
| 22 | //! |
| 23 | //! Test wakers: |
| 24 | //! - [`noop_waker`] creates a waker that ignores calls to |
| 25 | //! [`wake`](futures_core::task::Waker). |
| 26 | //! - [`panic_waker`](panic_waker()) creates a waker that panics when |
| 27 | //! [`wake`](futures_core::task::Waker) is called. |
| 28 | //! - [`new_count_waker`] creates a waker that increments a counter whenever |
| 29 | //! [`wake`](futures_core::task::Waker) is called. |
| 30 | //! |
| 31 | //! Test spawners: |
| 32 | //! - [`NoopSpawner`] ignores calls to |
| 33 | //! [`spawn`](futures_util::task::SpawnExt::spawn) |
| 34 | //! - [`PanicSpawner`] panics if [`spawn`](futures_util::task::SpawnExt::spawn) is |
| 35 | //! called. |
| 36 | //! - [`RecordSpawner`] records the spawned futures. |
| 37 | //! |
| 38 | //! For convenience there additionally exist various functions that directly |
| 39 | //! return waker/spawner references: [`noop_waker_ref`], [`panic_waker_ref`], |
| 40 | //! [`noop_spawner_mut`] and [`panic_spawner_mut`]. |
| 41 | |
| 42 | mod context; |
| 43 | pub use self::context::{noop_context, panic_context}; |
| 44 | |
| 45 | mod noop_spawner; |
| 46 | pub use self::noop_spawner::{noop_spawner_mut, NoopSpawner}; |
| 47 | |
| 48 | pub use futures_util::task::{noop_waker, noop_waker_ref}; |
| 49 | |
| 50 | mod panic_spawner; |
| 51 | pub use self::panic_spawner::{panic_spawner_mut, PanicSpawner}; |
| 52 | |
| 53 | mod panic_waker; |
| 54 | pub use self::panic_waker::{panic_waker, panic_waker_ref}; |
| 55 | |
| 56 | mod record_spawner; |
| 57 | pub use self::record_spawner::RecordSpawner; |
| 58 | |
| 59 | mod wake_counter; |
| 60 | pub use self::wake_counter::{new_count_waker, AwokenCount}; |
| 61 | |