slint/internal/backends/testing/internal_tests.rs
Aurindam Jana 3523e86359
Simplify commercial license (#3063)
Base the commercial license on the Royalty-free license adding clauses pertaining to the fees.
2024-05-31 14:06:17 +02:00

82 lines
2.9 KiB
Rust

// Copyright © SixtyFPS GmbH <info@slint.dev>
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0
//! This module contains helper functions that are used for our internal tests within Slint
use crate::TestingWindow;
use i_slint_core::api::ComponentHandle;
use i_slint_core::platform::WindowEvent;
pub use i_slint_core::tests::slint_get_mocked_time as get_mocked_time;
pub use i_slint_core::tests::slint_mock_elapsed_time as mock_elapsed_time;
use i_slint_core::window::WindowInner;
use i_slint_core::SharedString;
/// Simulate a mouse click
pub fn send_mouse_click<
X: vtable::HasStaticVTable<i_slint_core::item_tree::ItemTreeVTable> + 'static,
Component: Into<vtable::VRc<i_slint_core::item_tree::ItemTreeVTable, X>> + ComponentHandle,
>(
component: &Component,
x: f32,
y: f32,
) {
i_slint_core::tests::slint_send_mouse_click(
x,
y,
&WindowInner::from_pub(component.window()).window_adapter(),
);
}
/// Simulate entering a sequence of ascii characters key by (pressed or released).
pub fn send_keyboard_char<
X: vtable::HasStaticVTable<i_slint_core::item_tree::ItemTreeVTable>,
Component: Into<vtable::VRc<i_slint_core::item_tree::ItemTreeVTable, X>> + ComponentHandle,
>(
component: &Component,
string: char,
pressed: bool,
) {
i_slint_core::tests::slint_send_keyboard_char(
&SharedString::from(string),
pressed,
&WindowInner::from_pub(component.window()).window_adapter(),
)
}
/// Simulate entering a sequence of ascii characters key by key.
pub fn send_keyboard_string_sequence<
X: vtable::HasStaticVTable<i_slint_core::item_tree::ItemTreeVTable>,
Component: Into<vtable::VRc<i_slint_core::item_tree::ItemTreeVTable, X>> + ComponentHandle,
>(
component: &Component,
sequence: &str,
) {
i_slint_core::tests::send_keyboard_string_sequence(
&SharedString::from(sequence),
&WindowInner::from_pub(component.window()).window_adapter(),
)
}
/// Applies the specified scale factor to the window that's associated with the given component.
/// This overrides the value provided by the windowing system.
pub fn set_window_scale_factor<
X: vtable::HasStaticVTable<i_slint_core::item_tree::ItemTreeVTable>,
Component: Into<vtable::VRc<i_slint_core::item_tree::ItemTreeVTable, X>> + ComponentHandle,
>(
component: &Component,
factor: f32,
) {
component.window().dispatch_event(WindowEvent::ScaleFactorChanged { scale_factor: factor });
}
pub fn access_testing_window<R>(
window: &i_slint_core::api::Window,
callback: impl FnOnce(&TestingWindow) -> R,
) -> R {
i_slint_core::window::WindowInner::from_pub(window)
.window_adapter()
.internal(i_slint_core::InternalToken)
.and_then(|wa| wa.as_any().downcast_ref::<TestingWindow>())
.map(callback)
.expect("access_testing_window called without testing backend/adapter")
}