diff --git a/crates/oa-desktop/src/app/source_rename/preview_scroll_tests.rs b/crates/oa-desktop/src/app/source_rename/preview_scroll_tests.rs index 98387022..0f9be62f 100644 --- a/crates/oa-desktop/src/app/source_rename/preview_scroll_tests.rs +++ b/crates/oa-desktop/src/app/source_rename/preview_scroll_tests.rs @@ -435,11 +435,15 @@ async fn details_remount_restores_wheel_offset_before_any_rescroll() { let mut mounted = Mounted::new(&app); let reports = mounted.wheel(&app); assert_eq!(reports.len(), 1, "one actual preview scroll report"); - assert!(matches!( - reports[0], - Message::SourceRename(Event::PreviewScrolled(..)) - )); + let reported_offset = match &reports[0] { + Message::SourceRename(Event::PreviewScrolled(_, _, _, offset)) => *offset, + _ => panic!("expected an actual preview scroll report"), + }; + assert!(reported_offset.is_finite() && reported_offset > 0.); 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!( offset > 10., "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!( app.source_rename.form.as_ref().unwrap().preview_offset, - offset + reported_offset ); 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(); assert_eq!((form.file, form.hunk, form.line, form.segment), page); 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)); let task = app.update(Message::SourceRename(stale)); assert_eq!(mounted.execute(&app, task).await, 0);