Skip to main content

TestAppWindow

Struct TestAppWindow 

Source
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>

Source

pub fn handle(&self) -> WindowHandle<V>

Returns the window’s handle, for APIs that take a WindowHandle.

Source

pub fn root(&self) -> Entity<V>

Returns the root view’s entity.

§Panics

Panics if the window has been closed.

Source

pub fn update<R>( &mut self, f: impl FnOnce(&mut V, &mut Window, &mut Context<'_, V>) -> R, ) -> R

Runs f with the root view, its Window and a Context, then runs pending tasks until parked.

§Panics

Panics if the window has been closed.

Source

pub fn read<R>(&self, f: impl FnOnce(&V, &App) -> R) -> R

Runs f with the root view and the App, without running pending tasks.

§Panics

Panics if the window has been closed.

Source

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);
Source

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")));
Source

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")));
Source

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")));
Source

pub fn simulate_mouse_move(&mut self, position: Point<Pixels>)

Moves the pointer to position with no button held, then runs pending tasks.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn simulate_scale_factor_change(&mut self, scale_factor: f32)

Simulate the window moving to a display with a different scale factor.

Source

pub fn draw(&mut self)

Paints the window now, so that later input and hit tests use the current layout.

Call this after building the view and after anything changes its layout, before simulating a click at a position. It doesn’t run pending tasks. See the example on TestApp.

Trait Implementations§

Source§

impl<V> Clone for TestAppWindow<V>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

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>

Blanket Implementations§

Source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where 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) -> D
where M: TransformMatrix<T>,

👎Deprecated since 0.7.7:

replaced by palette::chromatic_adaptation::AdaptIntoUnclamped

Convert the source color to the destination color using the specified method.
Source§

fn adapt_into(self) -> D

👎Deprecated since 0.7.7:

replaced by palette::chromatic_adaptation::AdaptIntoUnclamped

Convert the source color to the destination color using the bradford method by default.
Source§

impl<T, C> AdaptIntoUnclamped<T> for C
where T: AdaptFromUnclamped<C>,

Source§

type Scalar = <T as AdaptFromUnclamped<C>>::Scalar

The number type that’s used as the color’s components.
Source§

fn adapt_into_unclamped_with<M>(self) -> T

Adapt a color of type Self into a color of type T, using the custom matrix M. Read more
Source§

fn adapt_into_unclamped(self) -> T
where Bradford: LmsToXyz<Self::Scalar> + XyzToLms<Self::Scalar>,

Adapt a color of type Self into a color of type T, using the Bradford matrix. Read more
Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

Source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
Source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

Source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

Source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

Source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
Source§

impl<T, C> ComponentsInto<C> for T

Source§

fn components_into(self) -> C

Cast this collection of color components into a collection of colors. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromAngle<T> for T

Source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
Source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

Source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> IntoAngle<U> for T
where U: FromAngle<T>,

Source§

fn into_angle(self) -> U

Performs a conversion into T.
Source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

Source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

Source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
Source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

Source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<T> IntoStimulus<T> for T

Source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

Source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
Source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

Source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
Source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

Source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
Source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

Source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more