test_navigation_history (pass)

Piotr Osiewicz created

Change summary

crates/editor2/src/editor_tests.rs | 226 ++++++++++++++++----------------
1 file changed, 113 insertions(+), 113 deletions(-)

Detailed changes

crates/editor2/src/editor_tests.rs 🔗

@@ -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)));
-
-//             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 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 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();
-
-//             // 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);
-
-//             // 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)
-//             );
+    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)));
 
-//             editor
-//         })
-//     });
-// }
+            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 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 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();
+
+            // 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);
+
+            // 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
+        })
+    });
+}
 
 #[gpui::test]
 fn test_cancel(cx: &mut TestAppContext) {