summaryrefslogtreecommitdiff
path: root/helix-term/tests
diff options
context:
space:
mode:
Diffstat (limited to 'helix-term/tests')
-rw-r--r--helix-term/tests/test/movement.rs128
1 files changed, 128 insertions, 0 deletions
diff --git a/helix-term/tests/test/movement.rs b/helix-term/tests/test/movement.rs
index 088685df..e5abb0b0 100644
--- a/helix-term/tests/test/movement.rs
+++ b/helix-term/tests/test/movement.rs
@@ -85,3 +85,131 @@ async fn cursor_position_newly_opened_file() -> anyhow::Result<()> {
Ok(())
}
+
+#[tokio::test]
+async fn select_mode_tree_sitter_next_function_is_union_of_objects() -> anyhow::Result<()> {
+ test_with_config(
+ Args {
+ files: vec![(PathBuf::from("foo.rs"), Position::default())],
+ ..Default::default()
+ },
+ Config::default(),
+ (
+ helpers::platform_line(indoc! {"\
+ #[/|]#// Increments
+ fn inc(x: usize) -> usize { x + 1 }
+ /// Decrements
+ fn dec(x: usize) -> usize { x - 1 }
+ "})
+ .as_ref(),
+ "]fv]f",
+ helpers::platform_line(indoc! {"\
+ /// Increments
+ #[fn inc(x: usize) -> usize { x + 1 }
+ /// Decrements
+ fn dec(x: usize) -> usize { x - 1 }|]#
+ "})
+ .as_ref(),
+ ),
+ )
+ .await?;
+
+ Ok(())
+}
+
+#[tokio::test]
+async fn select_mode_tree_sitter_prev_function_unselects_object() -> anyhow::Result<()> {
+ test_with_config(
+ Args {
+ files: vec![(PathBuf::from("foo.rs"), Position::default())],
+ ..Default::default()
+ },
+ Config::default(),
+ (
+ helpers::platform_line(indoc! {"\
+ /// Increments
+ #[fn inc(x: usize) -> usize { x + 1 }
+ /// Decrements
+ fn dec(x: usize) -> usize { x - 1 }|]#
+ "})
+ .as_ref(),
+ "v[f",
+ helpers::platform_line(indoc! {"\
+ /// Increments
+ #[fn inc(x: usize) -> usize { x + 1 }|]#
+ /// Decrements
+ fn dec(x: usize) -> usize { x - 1 }
+ "})
+ .as_ref(),
+ ),
+ )
+ .await?;
+
+ Ok(())
+}
+
+#[tokio::test]
+async fn select_mode_tree_sitter_prev_function_goes_backwards_to_object() -> anyhow::Result<()> {
+ // Note: the anchor stays put and the head moves back.
+ test_with_config(
+ Args {
+ files: vec![(PathBuf::from("foo.rs"), Position::default())],
+ ..Default::default()
+ },
+ Config::default(),
+ (
+ helpers::platform_line(indoc! {"\
+ /// Increments
+ fn inc(x: usize) -> usize { x + 1 }
+ /// Decrements
+ fn dec(x: usize) -> usize { x - 1 }
+ /// Identity
+ #[fn ident(x: usize) -> usize { x }|]#
+ "})
+ .as_ref(),
+ "v[f",
+ helpers::platform_line(indoc! {"\
+ /// Increments
+ fn inc(x: usize) -> usize { x + 1 }
+ /// Decrements
+ #[|fn dec(x: usize) -> usize { x - 1 }
+ /// Identity
+ ]#fn ident(x: usize) -> usize { x }
+ "})
+ .as_ref(),
+ ),
+ )
+ .await?;
+
+ test_with_config(
+ Args {
+ files: vec![(PathBuf::from("foo.rs"), Position::default())],
+ ..Default::default()
+ },
+ Config::default(),
+ (
+ helpers::platform_line(indoc! {"\
+ /// Increments
+ fn inc(x: usize) -> usize { x + 1 }
+ /// Decrements
+ fn dec(x: usize) -> usize { x - 1 }
+ /// Identity
+ #[fn ident(x: usize) -> usize { x }|]#
+ "})
+ .as_ref(),
+ "v[f[f",
+ helpers::platform_line(indoc! {"\
+ /// Increments
+ #[|fn inc(x: usize) -> usize { x + 1 }
+ /// Decrements
+ fn dec(x: usize) -> usize { x - 1 }
+ /// Identity
+ ]#fn ident(x: usize) -> usize { x }
+ "})
+ .as_ref(),
+ ),
+ )
+ .await?;
+
+ Ok(())
+}