diff options
author | Aleksey Kladov <[email protected]> | 2020-07-03 12:21:14 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2020-07-03 12:21:48 +0100 |
commit | 503de8e229473802b92ecd120430c12f6c8b49eb (patch) | |
tree | f3ed7492299741f22df0de4d791ec49362c67533 /crates/ra_ide/src/completion/test_utils.rs | |
parent | 57576ac420989070e695bac195d516a410191ad9 (diff) |
Add function to test completion edit
Diffstat (limited to 'crates/ra_ide/src/completion/test_utils.rs')
-rw-r--r-- | crates/ra_ide/src/completion/test_utils.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/crates/ra_ide/src/completion/test_utils.rs b/crates/ra_ide/src/completion/test_utils.rs index 5938415b3..9c036eac7 100644 --- a/crates/ra_ide/src/completion/test_utils.rs +++ b/crates/ra_ide/src/completion/test_utils.rs | |||
@@ -1,8 +1,10 @@ | |||
1 | //! Runs completion for testing purposes. | 1 | //! Runs completion for testing purposes. |
2 | 2 | ||
3 | use hir::Semantics; | 3 | use hir::Semantics; |
4 | use itertools::Itertools; | ||
4 | use ra_syntax::{AstNode, NodeOrToken, SyntaxElement}; | 5 | use ra_syntax::{AstNode, NodeOrToken, SyntaxElement}; |
5 | use stdx::format_to; | 6 | use stdx::format_to; |
7 | use test_utils::assert_eq_text; | ||
6 | 8 | ||
7 | use crate::{ | 9 | use crate::{ |
8 | completion::{completion_item::CompletionKind, CompletionConfig}, | 10 | completion::{completion_item::CompletionKind, CompletionConfig}, |
@@ -54,6 +56,17 @@ pub(crate) fn completion_list_with_options( | |||
54 | .collect() | 56 | .collect() |
55 | } | 57 | } |
56 | 58 | ||
59 | pub(crate) fn check_edit(what: &str, ra_fixture_before: &str, ra_fixture_after: &str) { | ||
60 | let (analysis, position) = analysis_and_position(ra_fixture_before); | ||
61 | let completions: Vec<CompletionItem> = | ||
62 | analysis.completions(&CompletionConfig::default(), position).unwrap().unwrap().into(); | ||
63 | let (completion,) = | ||
64 | completions.into_iter().filter(|it| it.label() == what).collect_tuple().unwrap(); | ||
65 | let mut actual = analysis.file_text(position.file_id).unwrap().to_string(); | ||
66 | completion.text_edit().apply(&mut actual); | ||
67 | assert_eq_text!(ra_fixture_after, &actual) | ||
68 | } | ||
69 | |||
57 | pub(crate) fn check_pattern_is_applicable(code: &str, check: fn(SyntaxElement) -> bool) { | 70 | pub(crate) fn check_pattern_is_applicable(code: &str, check: fn(SyntaxElement) -> bool) { |
58 | let (analysis, pos) = analysis_and_position(code); | 71 | let (analysis, pos) = analysis_and_position(code); |
59 | analysis | 72 | analysis |