mirror of
https://github.com/zed-industries/zed.git
synced 2025-01-12 21:32:40 +00:00
test_navigation_history (pass)
This commit is contained in:
parent
2ab84b81da
commit
9408eecb6e
1 changed files with 104 additions and 104 deletions
|
@ -514,123 +514,123 @@ fn test_clone(cx: &mut TestAppContext) {
|
|||
}
|
||||
|
||||
//todo!(editor navigate)
|
||||
// #[gpui::test]
|
||||
// async fn test_navigation_history(cx: &mut TestAppContext) {
|
||||
// init_test(cx, |_| {});
|
||||
#[gpui::test]
|
||||
async fn test_navigation_history(cx: &mut TestAppContext) {
|
||||
init_test(cx, |_| {});
|
||||
|
||||
// use workspace::item::Item;
|
||||
use workspace::item::Item;
|
||||
|
||||
// let fs = FakeFs::new(cx.executor());
|
||||
// let project = Project::test(fs, [], cx).await;
|
||||
// let workspace = cx.add_window(|cx| Workspace::test_new(project, cx));
|
||||
// let pane = workspace
|
||||
// .update(cx, |workspace, _| workspace.active_pane().clone())
|
||||
// .unwrap();
|
||||
let fs = FakeFs::new(cx.executor());
|
||||
let project = Project::test(fs, [], cx).await;
|
||||
let workspace = cx.add_window(|cx| Workspace::test_new(project, cx));
|
||||
let pane = workspace
|
||||
.update(cx, |workspace, _| workspace.active_pane().clone())
|
||||
.unwrap();
|
||||
|
||||
// workspace.update(cx, |v, cx| {
|
||||
// cx.build_view(|cx| {
|
||||
// let buffer = MultiBuffer::build_simple(&sample_text(300, 5, 'a'), cx);
|
||||
// let mut editor = build_editor(buffer.clone(), cx);
|
||||
// let handle = cx.view();
|
||||
// editor.set_nav_history(Some(pane.read(cx).nav_history_for_item(&handle)));
|
||||
workspace.update(cx, |v, cx| {
|
||||
cx.build_view(|cx| {
|
||||
let buffer = MultiBuffer::build_simple(&sample_text(300, 5, 'a'), cx);
|
||||
let mut editor = build_editor(buffer.clone(), cx);
|
||||
let handle = cx.view();
|
||||
editor.set_nav_history(Some(pane.read(cx).nav_history_for_item(&handle)));
|
||||
|
||||
// fn pop_history(editor: &mut Editor, cx: &mut WindowContext) -> Option<NavigationEntry> {
|
||||
// editor.nav_history.as_mut().unwrap().pop_backward(cx)
|
||||
// }
|
||||
fn pop_history(editor: &mut Editor, cx: &mut WindowContext) -> Option<NavigationEntry> {
|
||||
editor.nav_history.as_mut().unwrap().pop_backward(cx)
|
||||
}
|
||||
|
||||
// // Move the cursor a small distance.
|
||||
// // Nothing is added to the navigation history.
|
||||
// editor.change_selections(None, cx, |s| {
|
||||
// s.select_display_ranges([DisplayPoint::new(1, 0)..DisplayPoint::new(1, 0)])
|
||||
// });
|
||||
// editor.change_selections(None, cx, |s| {
|
||||
// s.select_display_ranges([DisplayPoint::new(3, 0)..DisplayPoint::new(3, 0)])
|
||||
// });
|
||||
// assert!(pop_history(&mut editor, cx).is_none());
|
||||
// Move the cursor a small distance.
|
||||
// Nothing is added to the navigation history.
|
||||
editor.change_selections(None, cx, |s| {
|
||||
s.select_display_ranges([DisplayPoint::new(1, 0)..DisplayPoint::new(1, 0)])
|
||||
});
|
||||
editor.change_selections(None, cx, |s| {
|
||||
s.select_display_ranges([DisplayPoint::new(3, 0)..DisplayPoint::new(3, 0)])
|
||||
});
|
||||
assert!(pop_history(&mut editor, cx).is_none());
|
||||
|
||||
// // Move the cursor a large distance.
|
||||
// // The history can jump back to the previous position.
|
||||
// editor.change_selections(None, cx, |s| {
|
||||
// s.select_display_ranges([DisplayPoint::new(13, 0)..DisplayPoint::new(13, 3)])
|
||||
// });
|
||||
// let nav_entry = pop_history(&mut editor, cx).unwrap();
|
||||
// editor.navigate(nav_entry.data.unwrap(), cx);
|
||||
// assert_eq!(nav_entry.item.id(), cx.entity_id());
|
||||
// assert_eq!(
|
||||
// editor.selections.display_ranges(cx),
|
||||
// &[DisplayPoint::new(3, 0)..DisplayPoint::new(3, 0)]
|
||||
// );
|
||||
// assert!(pop_history(&mut editor, cx).is_none());
|
||||
// Move the cursor a large distance.
|
||||
// The history can jump back to the previous position.
|
||||
editor.change_selections(None, cx, |s| {
|
||||
s.select_display_ranges([DisplayPoint::new(13, 0)..DisplayPoint::new(13, 3)])
|
||||
});
|
||||
let nav_entry = pop_history(&mut editor, cx).unwrap();
|
||||
editor.navigate(nav_entry.data.unwrap(), cx);
|
||||
assert_eq!(nav_entry.item.id(), cx.entity_id());
|
||||
assert_eq!(
|
||||
editor.selections.display_ranges(cx),
|
||||
&[DisplayPoint::new(3, 0)..DisplayPoint::new(3, 0)]
|
||||
);
|
||||
assert!(pop_history(&mut editor, cx).is_none());
|
||||
|
||||
// // Move the cursor a small distance via the mouse.
|
||||
// // Nothing is added to the navigation history.
|
||||
// editor.begin_selection(DisplayPoint::new(5, 0), false, 1, cx);
|
||||
// editor.end_selection(cx);
|
||||
// assert_eq!(
|
||||
// editor.selections.display_ranges(cx),
|
||||
// &[DisplayPoint::new(5, 0)..DisplayPoint::new(5, 0)]
|
||||
// );
|
||||
// assert!(pop_history(&mut editor, cx).is_none());
|
||||
// Move the cursor a small distance via the mouse.
|
||||
// Nothing is added to the navigation history.
|
||||
editor.begin_selection(DisplayPoint::new(5, 0), false, 1, cx);
|
||||
editor.end_selection(cx);
|
||||
assert_eq!(
|
||||
editor.selections.display_ranges(cx),
|
||||
&[DisplayPoint::new(5, 0)..DisplayPoint::new(5, 0)]
|
||||
);
|
||||
assert!(pop_history(&mut editor, cx).is_none());
|
||||
|
||||
// // Move the cursor a large distance via the mouse.
|
||||
// // The history can jump back to the previous position.
|
||||
// editor.begin_selection(DisplayPoint::new(15, 0), false, 1, cx);
|
||||
// editor.end_selection(cx);
|
||||
// assert_eq!(
|
||||
// editor.selections.display_ranges(cx),
|
||||
// &[DisplayPoint::new(15, 0)..DisplayPoint::new(15, 0)]
|
||||
// );
|
||||
// let nav_entry = pop_history(&mut editor, cx).unwrap();
|
||||
// editor.navigate(nav_entry.data.unwrap(), cx);
|
||||
// assert_eq!(nav_entry.item.id(), cx.entity_id());
|
||||
// assert_eq!(
|
||||
// editor.selections.display_ranges(cx),
|
||||
// &[DisplayPoint::new(5, 0)..DisplayPoint::new(5, 0)]
|
||||
// );
|
||||
// assert!(pop_history(&mut editor, cx).is_none());
|
||||
// Move the cursor a large distance via the mouse.
|
||||
// The history can jump back to the previous position.
|
||||
editor.begin_selection(DisplayPoint::new(15, 0), false, 1, cx);
|
||||
editor.end_selection(cx);
|
||||
assert_eq!(
|
||||
editor.selections.display_ranges(cx),
|
||||
&[DisplayPoint::new(15, 0)..DisplayPoint::new(15, 0)]
|
||||
);
|
||||
let nav_entry = pop_history(&mut editor, cx).unwrap();
|
||||
editor.navigate(nav_entry.data.unwrap(), cx);
|
||||
assert_eq!(nav_entry.item.id(), cx.entity_id());
|
||||
assert_eq!(
|
||||
editor.selections.display_ranges(cx),
|
||||
&[DisplayPoint::new(5, 0)..DisplayPoint::new(5, 0)]
|
||||
);
|
||||
assert!(pop_history(&mut editor, cx).is_none());
|
||||
|
||||
// // Set scroll position to check later
|
||||
// editor.set_scroll_position(gpui::Point::<f32>::new(5.5, 5.5), cx);
|
||||
// let original_scroll_position = editor.scroll_manager.anchor();
|
||||
// Set scroll position to check later
|
||||
editor.set_scroll_position(gpui::Point::<f32>::new(5.5, 5.5), cx);
|
||||
let original_scroll_position = editor.scroll_manager.anchor();
|
||||
|
||||
// // Jump to the end of the document and adjust scroll
|
||||
// editor.move_to_end(&MoveToEnd, cx);
|
||||
// editor.set_scroll_position(gpui::Point::<f32>::new(-2.5, -0.5), cx);
|
||||
// assert_ne!(editor.scroll_manager.anchor(), original_scroll_position);
|
||||
// Jump to the end of the document and adjust scroll
|
||||
editor.move_to_end(&MoveToEnd, cx);
|
||||
editor.set_scroll_position(gpui::Point::<f32>::new(-2.5, -0.5), cx);
|
||||
assert_ne!(editor.scroll_manager.anchor(), original_scroll_position);
|
||||
|
||||
// let nav_entry = pop_history(&mut editor, cx).unwrap();
|
||||
// editor.navigate(nav_entry.data.unwrap(), cx);
|
||||
// assert_eq!(editor.scroll_manager.anchor(), original_scroll_position);
|
||||
let nav_entry = pop_history(&mut editor, cx).unwrap();
|
||||
editor.navigate(nav_entry.data.unwrap(), cx);
|
||||
assert_eq!(editor.scroll_manager.anchor(), original_scroll_position);
|
||||
|
||||
// // Ensure we don't panic when navigation data contains invalid anchors *and* points.
|
||||
// let mut invalid_anchor = editor.scroll_manager.anchor().anchor;
|
||||
// invalid_anchor.text_anchor.buffer_id = Some(999);
|
||||
// let invalid_point = Point::new(9999, 0);
|
||||
// editor.navigate(
|
||||
// Box::new(NavigationData {
|
||||
// cursor_anchor: invalid_anchor,
|
||||
// cursor_position: invalid_point,
|
||||
// scroll_anchor: ScrollAnchor {
|
||||
// anchor: invalid_anchor,
|
||||
// offset: Default::default(),
|
||||
// },
|
||||
// scroll_top_row: invalid_point.row,
|
||||
// }),
|
||||
// cx,
|
||||
// );
|
||||
// assert_eq!(
|
||||
// editor.selections.display_ranges(cx),
|
||||
// &[editor.max_point(cx)..editor.max_point(cx)]
|
||||
// );
|
||||
// assert_eq!(
|
||||
// editor.scroll_position(cx),
|
||||
// gpui::Point::new(0., editor.max_point(cx).row() as f32)
|
||||
// );
|
||||
// Ensure we don't panic when navigation data contains invalid anchors *and* points.
|
||||
let mut invalid_anchor = editor.scroll_manager.anchor().anchor;
|
||||
invalid_anchor.text_anchor.buffer_id = Some(999);
|
||||
let invalid_point = Point::new(9999, 0);
|
||||
editor.navigate(
|
||||
Box::new(NavigationData {
|
||||
cursor_anchor: invalid_anchor,
|
||||
cursor_position: invalid_point,
|
||||
scroll_anchor: ScrollAnchor {
|
||||
anchor: invalid_anchor,
|
||||
offset: Default::default(),
|
||||
},
|
||||
scroll_top_row: invalid_point.row,
|
||||
}),
|
||||
cx,
|
||||
);
|
||||
assert_eq!(
|
||||
editor.selections.display_ranges(cx),
|
||||
&[editor.max_point(cx)..editor.max_point(cx)]
|
||||
);
|
||||
assert_eq!(
|
||||
editor.scroll_position(cx),
|
||||
gpui::Point::new(0., editor.max_point(cx).row() as f32)
|
||||
);
|
||||
|
||||
// editor
|
||||
// })
|
||||
// });
|
||||
// }
|
||||
editor
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
#[gpui::test]
|
||||
fn test_cancel(cx: &mut TestAppContext) {
|
||||
|
|
Loading…
Reference in a new issue