Account for the canvas keyboard notification in Escape tests
This commit is contained in:
@@ -787,7 +787,8 @@ async fn find_close_releases_removed_input_and_guarded_focus_respects_later_inpu
|
|||||||
|
|
||||||
/// Feed the real App subscription recipes the status produced by a mounted
|
/// Feed the real App subscription recipes the status produced by a mounted
|
||||||
/// TextInput. Poll only immediately available output: no timer wait, worker,
|
/// TextInput. Poll only immediately available output: no timer wait, worker,
|
||||||
/// file dialog or App task is executed by this helper.
|
/// file dialog or App task is executed by this helper. Require the canvas keyboard
|
||||||
|
/// notification separately, then return every command routed to an Escape owner.
|
||||||
fn captured_input_subscription_messages(app: &App) -> Vec<Message> {
|
fn captured_input_subscription_messages(app: &App) -> Vec<Message> {
|
||||||
use iced::advanced::{Layout, Shell, layout, subscription, widget};
|
use iced::advanced::{Layout, Shell, layout, subscription, widget};
|
||||||
use iced::futures::{StreamExt, stream, task::noop_waker_ref};
|
use iced::futures::{StreamExt, stream, task::noop_waker_ref};
|
||||||
@@ -847,6 +848,7 @@ fn captured_input_subscription_messages(app: &App) -> Vec<Message> {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
let _entered = runtime.enter();
|
let _entered = runtime.enter();
|
||||||
let mut messages = Vec::new();
|
let mut messages = Vec::new();
|
||||||
|
let mut keyboard_boundaries = 0;
|
||||||
for recipe in subscription::into_recipes(app.subscription()) {
|
for recipe in subscription::into_recipes(app.subscription()) {
|
||||||
let mut output = recipe.stream(Box::pin(stream::iter([event.clone()])));
|
let mut output = recipe.stream(Box::pin(stream::iter([event.clone()])));
|
||||||
let mut context = Context::from_waker(noop_waker_ref());
|
let mut context = Context::from_waker(noop_waker_ref());
|
||||||
@@ -855,9 +857,20 @@ fn captured_input_subscription_messages(app: &App) -> Vec<Message> {
|
|||||||
!matches!(message, Message::CheckpointTick),
|
!matches!(message, Message::CheckpointTick),
|
||||||
"timer must remain pending"
|
"timer must remain pending"
|
||||||
);
|
);
|
||||||
messages.push(message);
|
if matches!(
|
||||||
|
&message,
|
||||||
|
Message::WorkDrag(crate::app::allocation_drag::Event::KeyboardBoundary)
|
||||||
|
) {
|
||||||
|
keyboard_boundaries += 1;
|
||||||
|
} else {
|
||||||
|
messages.push(message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
assert_eq!(
|
||||||
|
keyboard_boundaries, 1,
|
||||||
|
"each key has exactly one passive allocation notification"
|
||||||
|
);
|
||||||
messages
|
messages
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user