Distinguish reported and rendered preview scroll offsets
This commit is contained in:
@@ -435,11 +435,15 @@ async fn details_remount_restores_wheel_offset_before_any_rescroll() {
|
|||||||
let mut mounted = Mounted::new(&app);
|
let mut mounted = Mounted::new(&app);
|
||||||
let reports = mounted.wheel(&app);
|
let reports = mounted.wheel(&app);
|
||||||
assert_eq!(reports.len(), 1, "one actual preview scroll report");
|
assert_eq!(reports.len(), 1, "one actual preview scroll report");
|
||||||
assert!(matches!(
|
let reported_offset = match &reports[0] {
|
||||||
reports[0],
|
Message::SourceRename(Event::PreviewScrolled(_, _, _, offset)) => *offset,
|
||||||
Message::SourceRename(Event::PreviewScrolled(..))
|
_ => panic!("expected an actual preview scroll report"),
|
||||||
));
|
};
|
||||||
|
assert!(reported_offset.is_finite() && reported_offset > 0.);
|
||||||
let offset = mounted.offset(&app);
|
let offset = mounted.offset(&app);
|
||||||
|
// Iced reports fractional absolute offsets but exposes rounded display
|
||||||
|
// translation to widget operations. Preserve both representations exactly.
|
||||||
|
assert_eq!(reported_offset.round(), offset);
|
||||||
assert!(
|
assert!(
|
||||||
offset > 10.,
|
offset > 10.,
|
||||||
"real wheel input must move the overflowing fixture"
|
"real wheel input must move the overflowing fixture"
|
||||||
@@ -457,7 +461,7 @@ async fn details_remount_restores_wheel_offset_before_any_rescroll() {
|
|||||||
assert_eq!(evidence(&app), before);
|
assert_eq!(evidence(&app), before);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
app.source_rename.form.as_ref().unwrap().preview_offset,
|
app.source_rename.form.as_ref().unwrap().preview_offset,
|
||||||
offset
|
reported_offset
|
||||||
);
|
);
|
||||||
|
|
||||||
let details = app.update(Message::SourceRename(Event::Details(invocation, true)));
|
let details = app.update(Message::SourceRename(Event::Details(invocation, true)));
|
||||||
@@ -493,7 +497,7 @@ async fn details_remount_restores_wheel_offset_before_any_rescroll() {
|
|||||||
let form = app.source_rename.form.as_ref().unwrap();
|
let form = app.source_rename.form.as_ref().unwrap();
|
||||||
assert_eq!((form.file, form.hunk, form.line, form.segment), page);
|
assert_eq!((form.file, form.hunk, form.line, form.segment), page);
|
||||||
assert_eq!(form.approval.as_ref().unwrap().id, approval);
|
assert_eq!(form.approval.as_ref().unwrap().id, approval);
|
||||||
assert_eq!(form.preview_offset, offset);
|
assert_eq!(form.preview_offset, reported_offset);
|
||||||
assert!(!app.source_rename_envelope(&stale));
|
assert!(!app.source_rename_envelope(&stale));
|
||||||
let task = app.update(Message::SourceRename(stale));
|
let task = app.update(Message::SourceRename(stale));
|
||||||
assert_eq!(mounted.execute(&app, task).await, 0);
|
assert_eq!(mounted.execute(&app, task).await, 0);
|
||||||
|
|||||||
Reference in New Issue
Block a user