1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
use super::*;
#[tokio::test]
async fn insert_mode_cursor_position() -> anyhow::Result<()> {
test_key_sequence_text_result(
Args::default(),
Config::default(),
TestCase {
in_text: String::new(),
in_selection: Selection::single(0, 0),
in_keys: "i".into(),
out_text: String::new(),
out_selection: Selection::single(0, 0),
},
)?;
test_key_sequence_text_result(
Args::default(),
Config::default(),
("#[\n|]#", "i", "#[|\n]#"),
)?;
test_key_sequence_text_result(
Args::default(),
Config::default(),
("#[\n|]#", "i<esc>", "#[|\n]#"),
)?;
test_key_sequence_text_result(
Args::default(),
Config::default(),
("#[\n|]#", "i<esc>i", "#[|\n]#"),
)?;
Ok(())
}
/// Range direction is preserved when escaping insert mode to normal
#[tokio::test]
async fn insert_to_normal_mode_cursor_position() -> anyhow::Result<()> {
test_key_sequence_text_result(
Args::default(),
Config::default(),
("#[f|]#oo\n", "vll<A-;><esc>", "#[|foo]#\n"),
)?;
test_key_sequence_text_result(
Args::default(),
Config::default(),
(
indoc! {"\
#[f|]#oo
#(b|)#ar"
},
"vll<A-;><esc>",
indoc! {"\
#[|foo]#
#(|bar)#"
},
),
)?;
test_key_sequence_text_result(
Args::default(),
Config::default(),
(
indoc! {"\
#[f|]#oo
#(b|)#ar"
},
"a",
indoc! {"\
#[fo|]#o
#(ba|)#r"
},
),
)?;
test_key_sequence_text_result(
Args::default(),
Config::default(),
(
indoc! {"\
#[f|]#oo
#(b|)#ar"
},
"a<esc>",
indoc! {"\
#[f|]#oo
#(b|)#ar"
},
),
)?;
Ok(())
}
|