rename test helpers

pull/2359/head
Skyler Hawthorne 2 years ago
parent 526c9be8ca
commit 7c0bca186c

@ -13,13 +13,7 @@ mod test {
#[tokio::test] #[tokio::test]
async fn hello_world() -> anyhow::Result<()> { async fn hello_world() -> anyhow::Result<()> {
test_key_sequence_text_result( test(("#[\n|]#", "ihello world<esc>", "hello world#[|\n]#")).await?;
Args::default(),
Config::default(),
("#[\n|]#", "ihello world<esc>", "hello world#[|\n]#"),
)
.await?;
Ok(()) Ok(())
} }

@ -2,7 +2,7 @@ use super::*;
#[tokio::test] #[tokio::test]
async fn auto_indent_c() -> anyhow::Result<()> { async fn auto_indent_c() -> anyhow::Result<()> {
test_key_sequence_text_result( test_with_config(
Args { Args {
files: vec![(PathBuf::from("foo.c"), Position::default())], files: vec![(PathBuf::from("foo.c"), Position::default())],
..Default::default() ..Default::default()

@ -2,14 +2,9 @@ use super::*;
#[tokio::test] #[tokio::test]
async fn auto_pairs_basic() -> anyhow::Result<()> { async fn auto_pairs_basic() -> anyhow::Result<()> {
test_key_sequence_text_result( test(("#[\n|]#", "i(<esc>", "(#[|)]#\n")).await?;
Args::default(),
Config::default(),
("#[\n|]#", "i(<esc>", "(#[|)]#\n"),
)
.await?;
test_key_sequence_text_result( test_with_config(
Args::default(), Args::default(),
Config { Config {
editor: helix_view::editor::Config { editor: helix_view::editor::Config {

@ -41,6 +41,7 @@ pub async fn test_key_sequence(
test_key_sequences(app, vec![(in_keys, test_fn)]).await test_key_sequences(app, vec![(in_keys, test_fn)]).await
} }
#[allow(clippy::type_complexity)]
pub async fn test_key_sequences( pub async fn test_key_sequences(
app: &mut Application, app: &mut Application,
inputs: Vec<(Option<&str>, Option<&dyn Fn(&Application)>)>, inputs: Vec<(Option<&str>, Option<&dyn Fn(&Application)>)>,
@ -51,7 +52,7 @@ pub async fn test_key_sequences(
for (in_keys, test_fn) in inputs { for (in_keys, test_fn) in inputs {
if let Some(in_keys) = in_keys { if let Some(in_keys) = in_keys {
for key_event in parse_macro(&in_keys)?.into_iter() { for key_event in parse_macro(in_keys)?.into_iter() {
tx.send(Ok(Event::Key(KeyEvent::from(key_event))))?; tx.send(Ok(Event::Key(KeyEvent::from(key_event))))?;
} }
} }
@ -92,7 +93,7 @@ pub async fn test_key_sequence_with_input_text<T: Into<TestCase>>(
// replace the initial text with the input text // replace the initial text with the input text
doc.apply( doc.apply(
&Transaction::change_by_selection(&doc.text(), &sel, |_| { &Transaction::change_by_selection(doc.text(), &sel, |_| {
(0, doc.text().len_chars(), Some((&test_case.in_text).into())) (0, doc.text().len_chars(), Some((&test_case.in_text).into()))
}) })
.with_selection(test_case.in_selection.clone()), .with_selection(test_case.in_selection.clone()),
@ -105,7 +106,7 @@ pub async fn test_key_sequence_with_input_text<T: Into<TestCase>>(
/// Use this for very simple test cases where there is one input /// Use this for very simple test cases where there is one input
/// document, selection, and sequence of key presses, and you just /// document, selection, and sequence of key presses, and you just
/// want to verify the resulting document and selection. /// want to verify the resulting document and selection.
pub async fn test_key_sequence_text_result<T: Into<TestCase>>( pub async fn test_with_config<T: Into<TestCase>>(
args: Args, args: Args,
config: Config, config: Config,
test_case: T, test_case: T,
@ -126,6 +127,10 @@ pub async fn test_key_sequence_text_result<T: Into<TestCase>>(
.await .await
} }
pub async fn test<T: Into<TestCase>>(test_case: T) -> anyhow::Result<()> {
test_with_config(Args::default(), Config::default(), test_case).await
}
pub fn temp_file_with_contents<S: AsRef<str>>( pub fn temp_file_with_contents<S: AsRef<str>>(
content: S, content: S,
) -> anyhow::Result<tempfile::NamedTempFile> { ) -> anyhow::Result<tempfile::NamedTempFile> {
@ -148,7 +153,7 @@ pub fn platform_line(input: &str) -> String {
// we can assume that the source files in this code base will always // we can assume that the source files in this code base will always
// be LF, so indoc strings will always insert LF // be LF, so indoc strings will always insert LF
let mut output = input.replace("\n", line_end); let mut output = input.replace('\n', line_end);
if !output.ends_with(line_end) { if !output.ends_with(line_end) {
output.push_str(line_end); output.push_str(line_end);

@ -4,39 +4,18 @@ use super::*;
#[tokio::test] #[tokio::test]
async fn insert_mode_cursor_position() -> anyhow::Result<()> { async fn insert_mode_cursor_position() -> anyhow::Result<()> {
test_key_sequence_text_result( test(TestCase {
Args::default(), in_text: String::new(),
Config::default(), in_selection: Selection::single(0, 0),
TestCase { in_keys: "i".into(),
in_text: String::new(), out_text: String::new(),
in_selection: Selection::single(0, 0), out_selection: Selection::single(0, 0),
in_keys: "i".into(), })
out_text: String::new(),
out_selection: Selection::single(0, 0),
},
)
.await?;
test_key_sequence_text_result(
Args::default(),
Config::default(),
("#[\n|]#", "i", "#[|\n]#"),
)
.await?;
test_key_sequence_text_result(
Args::default(),
Config::default(),
("#[\n|]#", "i<esc>", "#[|\n]#"),
)
.await?; .await?;
test_key_sequence_text_result( test(("#[\n|]#", "i", "#[|\n]#")).await?;
Args::default(), test(("#[\n|]#", "i<esc>", "#[|\n]#")).await?;
Config::default(), test(("#[\n|]#", "i<esc>i", "#[|\n]#")).await?;
("#[\n|]#", "i<esc>i", "#[|\n]#"),
)
.await?;
Ok(()) Ok(())
} }
@ -44,62 +23,44 @@ async fn insert_mode_cursor_position() -> anyhow::Result<()> {
/// Range direction is preserved when escaping insert mode to normal /// Range direction is preserved when escaping insert mode to normal
#[tokio::test] #[tokio::test]
async fn insert_to_normal_mode_cursor_position() -> anyhow::Result<()> { async fn insert_to_normal_mode_cursor_position() -> anyhow::Result<()> {
test_key_sequence_text_result( test(("#[f|]#oo\n", "vll<A-;><esc>", "#[|foo]#\n")).await?;
Args::default(), test((
Config::default(), indoc! {"\
("#[f|]#oo\n", "vll<A-;><esc>", "#[|foo]#\n"),
)
.await?;
test_key_sequence_text_result(
Args::default(),
Config::default(),
(
indoc! {"\
#[f|]#oo #[f|]#oo
#(b|)#ar" #(b|)#ar"
}, },
"vll<A-;><esc>", "vll<A-;><esc>",
indoc! {"\ indoc! {"\
#[|foo]# #[|foo]#
#(|bar)#" #(|bar)#"
}, },
), ))
)
.await?; .await?;
test_key_sequence_text_result( test((
Args::default(), indoc! {"\
Config::default(),
(
indoc! {"\
#[f|]#oo #[f|]#oo
#(b|)#ar" #(b|)#ar"
}, },
"a", "a",
indoc! {"\ indoc! {"\
#[fo|]#o #[fo|]#o
#(ba|)#r" #(ba|)#r"
}, },
), ))
)
.await?; .await?;
test_key_sequence_text_result( test((
Args::default(), indoc! {"\
Config::default(),
(
indoc! {"\
#[f|]#oo #[f|]#oo
#(b|)#ar" #(b|)#ar"
}, },
"a<esc>", "a<esc>",
indoc! {"\ indoc! {"\
#[f|]#oo #[f|]#oo
#(b|)#ar" #(b|)#ar"
}, },
), ))
)
.await?; .await?;
Ok(()) Ok(())

Loading…
Cancel
Save