aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide/src/completion/test_utils.rs
diff options
context:
space:
mode:
authorMikhail Rakhmanov <[email protected]>2020-06-11 23:17:30 +0100
committerMikhail Rakhmanov <[email protected]>2020-06-11 23:17:30 +0100
commita2b4385f161134955fd729087f142d54c3a5e035 (patch)
tree57340237a1bc00f3b5383881bc289d224e4c6ee3 /crates/ra_ide/src/completion/test_utils.rs
parentf46bc12199dc88b88bd826f49d5c5af6e9caf727 (diff)
Add few smoke tests for patterns and refactoring
Diffstat (limited to 'crates/ra_ide/src/completion/test_utils.rs')
-rw-r--r--crates/ra_ide/src/completion/test_utils.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/crates/ra_ide/src/completion/test_utils.rs b/crates/ra_ide/src/completion/test_utils.rs
index bf22452a2..e9e89104e 100644
--- a/crates/ra_ide/src/completion/test_utils.rs
+++ b/crates/ra_ide/src/completion/test_utils.rs
@@ -5,6 +5,8 @@ use crate::{
5 mock_analysis::{analysis_and_position, single_file_with_position}, 5 mock_analysis::{analysis_and_position, single_file_with_position},
6 CompletionItem, 6 CompletionItem,
7}; 7};
8use hir::Semantics;
9use ra_syntax::{AstNode, NodeOrToken, SyntaxElement, SyntaxToken};
8 10
9pub(crate) fn do_completion(code: &str, kind: CompletionKind) -> Vec<CompletionItem> { 11pub(crate) fn do_completion(code: &str, kind: CompletionKind) -> Vec<CompletionItem> {
10 do_completion_with_options(code, kind, &CompletionConfig::default()) 12 do_completion_with_options(code, kind, &CompletionConfig::default())
@@ -27,3 +29,15 @@ pub(crate) fn do_completion_with_options(
27 kind_completions.sort_by_key(|c| c.label().to_owned()); 29 kind_completions.sort_by_key(|c| c.label().to_owned());
28 kind_completions 30 kind_completions
29} 31}
32
33pub(crate) fn check_pattern_is_applicable(code: &str, check: fn(SyntaxElement) -> bool) {
34 let (analysis, pos) = single_file_with_position(code);
35 analysis
36 .with_db(|db| {
37 let sema = Semantics::new(db);
38 let original_file = sema.parse(pos.file_id);
39 let token = original_file.syntax().token_at_offset(pos.offset).left_biased().unwrap();
40 assert!(check(NodeOrToken::Token(token)));
41 })
42 .unwrap();
43}