diff options
Diffstat (limited to 'helix-term/tests/test/movement.rs')
-rw-r--r-- | helix-term/tests/test/movement.rs | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/helix-term/tests/test/movement.rs b/helix-term/tests/test/movement.rs index 088685df..45aae39e 100644 --- a/helix-term/tests/test/movement.rs +++ b/helix-term/tests/test/movement.rs @@ -85,3 +85,152 @@ async fn cursor_position_newly_opened_file() -> anyhow::Result<()> { Ok(()) } + +#[tokio::test] +async fn cursor_position_append_eof() -> anyhow::Result<()> { + // Selection is fowards + test(( + "#[foo|]#", + "abar<esc>", + helpers::platform_line("#[foobar|]#\n").as_ref(), + )) + .await?; + + // Selection is backwards + test(( + "#[|foo]#", + "abar<esc>", + helpers::platform_line("#[foobar|]#\n").as_ref(), + )) + .await?; + + 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(()) +} |