pub struct TestAppWindow<V> { /* private fields */ }Expand description
A window opened by TestApp::open_window.
Use it to read and update the root view and to send input to the window. Clones refer to the same window.
Each method that sends input or updates the view runs pending tasks before it
returns, so the next line can assert on the result. The simulated input
methods use the window’s last painted frame to find elements, so call
TestAppWindow::draw after building or changing the view.
Implementations§
Source§impl<V: 'static + Render> TestAppWindow<V>
impl<V: 'static + Render> TestAppWindow<V>
Sourcepub fn handle(&self) -> WindowHandle<V>
pub fn handle(&self) -> WindowHandle<V>
Returns the window’s handle, for APIs that take a WindowHandle.
Sourcepub fn update<R>(
&mut self,
f: impl FnOnce(&mut V, &mut Window, &mut Context<'_, V>) -> R,
) -> R
pub fn update<R>( &mut self, f: impl FnOnce(&mut V, &mut Window, &mut Context<'_, V>) -> R, ) -> R
Sourcepub fn title(&self) -> Option<String>
pub fn title(&self) -> Option<String>
Always returns None. The window title isn’t available through this type yet.
Don’t use this to check a title. Tests that open windows with
TestAppContext::add_window_view can read the title with
VisualTestContext::window_title.
§Panics
Panics if the window has been closed.
§Example
let mut app = TestApp::new();
let window = app.open_window(|_, _| Empty);
assert_eq!(window.title(), None);Sourcepub fn simulate_keystroke(&mut self, keystroke: &str)
pub fn simulate_keystroke(&mut self, keystroke: &str)
Sends one keystroke, such as "ctrl-s" or "space", to the focused element, then runs pending tasks.
Use the key name "space" for the space bar. A space character in the string
isn’t a separator here; TestAppWindow::simulate_keystrokes splits on spaces.
§Panics
Panics if keystroke isn’t a valid keystroke. See keyboard input
for the syntax.
§Example
window.simulate_keystroke("space");
window.read(|keys, _| assert_eq!(keys.last.as_deref(), Some("space")));Sourcepub fn simulate_keystrokes(&mut self, keystrokes: &str)
pub fn simulate_keystrokes(&mut self, keystrokes: &str)
Sends each keystroke in a space-separated list, in order, then runs pending tasks after each one.
Each part is parsed as in TestAppWindow::simulate_keystroke. A space
character in the list is a separator, so use simulate_keystroke("space") to
press the space bar. Two spaces in a row send an empty keystroke.
§Panics
Panics if any part isn’t a valid keystroke.
§Example
window.simulate_keystrokes("a b");
window.read(|keys, _| assert_eq!(keys.last.as_deref(), Some("b")));Sourcepub fn simulate_input(&mut self, input: &str)
pub fn simulate_input(&mut self, input: &str)
Types input by sending one keystroke per character, then runs pending tasks.
Each character is sent as a keystroke whose key is that character, so text
inputs receive the text. Uppercase letters are sent with shift held. A space
is sent with the key " ", not "space", so a binding for space doesn’t
match it. Use TestAppWindow::simulate_keystroke for named keys.
§Example
window.simulate_input("xy");
window.read(|keys, _| assert_eq!(keys.last.as_deref(), Some("y")));Sourcepub fn simulate_mouse_move(&mut self, position: Point<Pixels>)
pub fn simulate_mouse_move(&mut self, position: Point<Pixels>)
Moves the pointer to position with no button held, then runs pending tasks.
Sourcepub fn simulate_mouse_down(
&mut self,
position: Point<Pixels>,
button: MouseButton,
)
pub fn simulate_mouse_down( &mut self, position: Point<Pixels>, button: MouseButton, )
Presses button at position, then runs pending tasks.
The click count is always 1, so this never sends a double click.
Sourcepub fn simulate_mouse_up(
&mut self,
position: Point<Pixels>,
button: MouseButton,
)
pub fn simulate_mouse_up( &mut self, position: Point<Pixels>, button: MouseButton, )
Releases button at position, then runs pending tasks.
The click count is always 1.
Sourcepub fn simulate_click(&mut self, position: Point<Pixels>, button: MouseButton)
pub fn simulate_click(&mut self, position: Point<Pixels>, button: MouseButton)
Presses and releases button at position, then runs pending tasks.
Both events have a click count of 1, so calling this twice in a row sends two
single clicks, never a double click. Call TestAppWindow::draw first, so
the click hits the element you expect. See the example on TestApp.
Sourcepub fn simulate_scroll(&mut self, position: Point<Pixels>, delta: Point<Pixels>)
pub fn simulate_scroll(&mut self, position: Point<Pixels>, delta: Point<Pixels>)
Scrolls by delta, in pixels, with the pointer at position, then runs pending tasks.
No modifier keys are held.
Sourcepub fn simulate_event<E: InputEvent>(&mut self, event: E)
pub fn simulate_event<E: InputEvent>(&mut self, event: E)
Dispatches event to the window as platform input, then runs pending tasks.
Use this for input events that have no dedicated method on TestAppWindow.
Sourcepub fn simulate_resize(&mut self, size: Size<Pixels>)
pub fn simulate_resize(&mut self, size: Size<Pixels>)
Sets the window’s size to size, then runs pending tasks.
This runs the window’s resize callback, if it has one, and updates the viewport that
Window::viewport_size reports. It doesn’t paint the window: call
TestAppWindow::draw to paint at the new size.
Sourcepub fn activate(&mut self)
pub fn activate(&mut self)
Makes this the active window, as if the user had clicked it, then runs pending tasks.
Windows that TestApp opens start inactive. Focus listeners such as
Context::on_focus only run in the active window, so activate it before testing them.
Sourcepub fn simulate_scale_factor_change(&mut self, scale_factor: f32)
pub fn simulate_scale_factor_change(&mut self, scale_factor: f32)
Simulate the window moving to a display with a different scale factor.
Trait Implementations§
Auto Trait Implementations§
impl<V> !RefUnwindSafe for TestAppWindow<V>
impl<V> !Send for TestAppWindow<V>
impl<V> !Sync for TestAppWindow<V>
impl<V> !UnwindSafe for TestAppWindow<V>
impl<V> Freeze for TestAppWindow<V>where
WindowHandle<V>: Freeze,
impl<V> Unpin for TestAppWindow<V>where
WindowHandle<V>: Unpin,
impl<V> UnsafeUnpin for TestAppWindow<V>where
WindowHandle<V>: UnsafeUnpin,
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
replaced by palette::chromatic_adaptation::AdaptIntoUnclamped
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
replaced by palette::chromatic_adaptation::AdaptIntoUnclamped
Source§impl<T, C> AdaptIntoUnclamped<T> for Cwhere
T: AdaptFromUnclamped<C>,
impl<T, C> AdaptIntoUnclamped<T> for Cwhere
T: AdaptFromUnclamped<C>,
Source§type Scalar = <T as AdaptFromUnclamped<C>>::Scalar
type Scalar = <T as AdaptFromUnclamped<C>>::Scalar
Source§fn adapt_into_unclamped_with<M>(self) -> Twhere
M: LmsToXyz<<C as AdaptIntoUnclamped<T>>::Scalar> + XyzToLms<<C as AdaptIntoUnclamped<T>>::Scalar>,
fn adapt_into_unclamped_with<M>(self) -> Twhere
M: LmsToXyz<<C as AdaptIntoUnclamped<T>>::Scalar> + XyzToLms<<C as AdaptIntoUnclamped<T>>::Scalar>,
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T, C> ComponentsInto<C> for T
impl<T, C> ComponentsInto<C> for T
Source§fn components_into(self) -> C
fn components_into(self) -> C
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more