mirror of https://github.com/helix-editor/helix
add node boundary movement
parent
1d702ea191
commit
93acb53812
@ -0,0 +1,199 @@
|
||||
use super::*;
|
||||
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
async fn test_move_parent_node_end() -> anyhow::Result<()> {
|
||||
let tests = vec![
|
||||
// single cursor stays single cursor, first goes to end of current
|
||||
// node, then parent
|
||||
(
|
||||
helpers::platform_line(indoc! {r##"
|
||||
fn foo() {
|
||||
let result = if true {
|
||||
"yes"
|
||||
} else {
|
||||
"no#["|]#
|
||||
}
|
||||
}
|
||||
"##}),
|
||||
"<A-e>",
|
||||
helpers::platform_line(indoc! {"\
|
||||
fn foo() {
|
||||
let result = if true {
|
||||
\"yes\"
|
||||
} else {
|
||||
\"no\"#[\n|]#
|
||||
}
|
||||
}
|
||||
"}),
|
||||
),
|
||||
(
|
||||
helpers::platform_line(indoc! {"\
|
||||
fn foo() {
|
||||
let result = if true {
|
||||
\"yes\"
|
||||
} else {
|
||||
\"no\"#[\n|]#
|
||||
}
|
||||
}
|
||||
"}),
|
||||
"<A-e>",
|
||||
helpers::platform_line(indoc! {"\
|
||||
fn foo() {
|
||||
let result = if true {
|
||||
\"yes\"
|
||||
} else {
|
||||
\"no\"
|
||||
}#[\n|]#
|
||||
}
|
||||
"}),
|
||||
),
|
||||
// select mode extends
|
||||
(
|
||||
helpers::platform_line(indoc! {r##"
|
||||
fn foo() {
|
||||
let result = if true {
|
||||
"yes"
|
||||
} else {
|
||||
#["no"|]#
|
||||
}
|
||||
}
|
||||
"##}),
|
||||
"v<A-e><A-e>",
|
||||
helpers::platform_line(indoc! {"\
|
||||
fn foo() {
|
||||
let result = if true {
|
||||
\"yes\"
|
||||
} else {
|
||||
#[\"no\"
|
||||
}\n|]#
|
||||
}
|
||||
"}),
|
||||
),
|
||||
];
|
||||
|
||||
for test in tests {
|
||||
test_with_config(AppBuilder::new().with_file("foo.rs", None), test).await?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
async fn test_move_parent_node_start() -> anyhow::Result<()> {
|
||||
let tests = vec![
|
||||
// single cursor stays single cursor, first goes to end of current
|
||||
// node, then parent
|
||||
(
|
||||
helpers::platform_line(indoc! {r##"
|
||||
fn foo() {
|
||||
let result = if true {
|
||||
"yes"
|
||||
} else {
|
||||
"no#["|]#
|
||||
}
|
||||
}
|
||||
"##}),
|
||||
"<A-b>",
|
||||
helpers::platform_line(indoc! {"\
|
||||
fn foo() {
|
||||
let result = if true {
|
||||
\"yes\"
|
||||
} else {
|
||||
#[\"|]#no\"
|
||||
}
|
||||
}
|
||||
"}),
|
||||
),
|
||||
(
|
||||
helpers::platform_line(indoc! {"\
|
||||
fn foo() {
|
||||
let result = if true {
|
||||
\"yes\"
|
||||
} else {
|
||||
\"no\"#[\n|]#
|
||||
}
|
||||
}
|
||||
"}),
|
||||
"<A-b>",
|
||||
helpers::platform_line(indoc! {"\
|
||||
fn foo() {
|
||||
let result = if true {
|
||||
\"yes\"
|
||||
} else #[{|]#
|
||||
\"no\"
|
||||
}
|
||||
}
|
||||
"}),
|
||||
),
|
||||
(
|
||||
helpers::platform_line(indoc! {"\
|
||||
fn foo() {
|
||||
let result = if true {
|
||||
\"yes\"
|
||||
} else #[{|]#
|
||||
\"no\"
|
||||
}
|
||||
}
|
||||
"}),
|
||||
"<A-b>",
|
||||
helpers::platform_line(indoc! {"\
|
||||
fn foo() {
|
||||
let result = if true {
|
||||
\"yes\"
|
||||
} #[e|]#lse {
|
||||
\"no\"
|
||||
}
|
||||
}
|
||||
"}),
|
||||
),
|
||||
// select mode extends
|
||||
(
|
||||
helpers::platform_line(indoc! {r##"
|
||||
fn foo() {
|
||||
let result = if true {
|
||||
"yes"
|
||||
} else {
|
||||
#["no"|]#
|
||||
}
|
||||
}
|
||||
"##}),
|
||||
"v<A-b><A-b>",
|
||||
helpers::platform_line(indoc! {"\
|
||||
fn foo() {
|
||||
let result = if true {
|
||||
\"yes\"
|
||||
} else #[|{
|
||||
]#\"no\"
|
||||
}
|
||||
}
|
||||
"}),
|
||||
),
|
||||
(
|
||||
helpers::platform_line(indoc! {r##"
|
||||
fn foo() {
|
||||
let result = if true {
|
||||
"yes"
|
||||
} else {
|
||||
#["no"|]#
|
||||
}
|
||||
}
|
||||
"##}),
|
||||
"v<A-b><A-b><A-b>",
|
||||
helpers::platform_line(indoc! {"\
|
||||
fn foo() {
|
||||
let result = if true {
|
||||
\"yes\"
|
||||
} #[|else {
|
||||
]#\"no\"
|
||||
}
|
||||
}
|
||||
"}),
|
||||
),
|
||||
];
|
||||
|
||||
for test in tests {
|
||||
test_with_config(AppBuilder::new().with_file("foo.rs", None), test).await?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
Loading…
Reference in New Issue