Move tests

This commit is contained in:
Aleksey Kladov 2020-07-17 13:28:21 +02:00
parent 2ca0e9e00e
commit 2c268b9a5f
2 changed files with 71 additions and 74 deletions

View file

@ -418,3 +418,74 @@ pub(crate) fn description_from_symbol(db: &RootDatabase, symbol: &FileSymbol) ->
}
}
}
#[cfg(test)]
mod tests {
use expect::expect;
use crate::{mock_analysis::single_file, Query};
#[test]
fn test_nav_for_symbol() {
let (analysis, _) = single_file(
r#"
enum FooInner { }
fn foo() { enum FooInner { } }
"#,
);
let navs = analysis.symbol_search(Query::new("FooInner".to_string())).unwrap();
expect![[r#"
[
NavigationTarget {
file_id: FileId(
1,
),
full_range: 0..17,
focus_range: Some(
5..13,
),
name: "FooInner",
kind: ENUM_DEF,
container_name: None,
description: Some(
"enum FooInner",
),
docs: None,
},
NavigationTarget {
file_id: FileId(
1,
),
full_range: 29..46,
focus_range: Some(
34..42,
),
name: "FooInner",
kind: ENUM_DEF,
container_name: Some(
"foo",
),
description: Some(
"enum FooInner",
),
docs: None,
},
]
"#]]
.assert_debug_eq(&navs);
}
#[test]
fn test_world_symbols_are_case_sensitive() {
let (analysis, _) = single_file(
r#"
fn foo() {}
struct Foo;
"#,
);
let navs = analysis.symbol_search(Query::new("foo".to_string())).unwrap();
assert_eq!(navs.len(), 2)
}
}

View file

@ -526,77 +526,3 @@ fn analysis_is_send() {
fn is_send<T: Send>() {}
is_send::<Analysis>();
}
#[cfg(test)]
mod tests {
use crate::{display::NavigationTarget, mock_analysis::single_file, Query};
use ra_syntax::{
SmolStr,
SyntaxKind::{FN_DEF, STRUCT_DEF},
};
#[test]
fn test_world_symbols_with_no_container() {
let code = r#"
enum FooInner { }
"#;
let mut symbols = get_symbols_matching(code, "FooInner");
let s = symbols.pop().unwrap();
assert_eq!(s.name, "FooInner");
assert!(s.container_name.is_none());
}
#[test]
fn test_world_symbols_include_container_name() {
let code = r#"
fn foo() {
enum FooInner { }
}
"#;
let mut symbols = get_symbols_matching(code, "FooInner");
let s = symbols.pop().unwrap();
assert_eq!(s.name, "FooInner");
assert_eq!(s.container_name, Some(SmolStr::new("foo")));
let code = r#"
mod foo {
struct FooInner;
}
"#;
let mut symbols = get_symbols_matching(code, "FooInner");
let s = symbols.pop().unwrap();
assert_eq!(s.name, "FooInner");
assert_eq!(s.container_name, Some(SmolStr::new("foo")));
}
#[test]
fn test_world_symbols_are_case_sensitive() {
let code = r#"
fn foo() {}
struct Foo;
"#;
let symbols = get_symbols_matching(code, "Foo");
let fn_match = symbols.iter().find(|s| s.name == "foo").map(|s| s.kind);
let struct_match = symbols.iter().find(|s| s.name == "Foo").map(|s| s.kind);
assert_eq!(fn_match, Some(FN_DEF));
assert_eq!(struct_match, Some(STRUCT_DEF));
}
fn get_symbols_matching(text: &str, query: &str) -> Vec<NavigationTarget> {
let (analysis, _) = single_file(text);
analysis.symbol_search(Query::new(query.into())).unwrap()
}
}