From f48664068210b92f4884ee8e6fe8504dabcd4d9a Mon Sep 17 00:00:00 2001 From: Daiki Ihara Date: Fri, 4 Dec 2020 00:05:39 +0900 Subject: Extract tests module to file in ide_db crate --- crates/ide_db/src/traits.rs | 148 +------------------------------------------- 1 file changed, 1 insertion(+), 147 deletions(-) (limited to 'crates/ide_db/src/traits.rs') diff --git a/crates/ide_db/src/traits.rs b/crates/ide_db/src/traits.rs index f57b6dd91..78a43f587 100644 --- a/crates/ide_db/src/traits.rs +++ b/crates/ide_db/src/traits.rs @@ -78,150 +78,4 @@ pub fn get_missing_assoc_items( } #[cfg(test)] -mod tests { - use crate::RootDatabase; - use base_db::{fixture::ChangeFixture, FilePosition}; - use expect_test::{expect, Expect}; - use hir::Semantics; - use syntax::ast::{self, AstNode}; - use test_utils::RangeOrOffset; - - /// Creates analysis from a multi-file fixture, returns positions marked with <|>. - pub(crate) fn position(ra_fixture: &str) -> (RootDatabase, FilePosition) { - let change_fixture = ChangeFixture::parse(ra_fixture); - let mut database = RootDatabase::default(); - database.apply_change(change_fixture.change); - let (file_id, range_or_offset) = - change_fixture.file_position.expect("expected a marker (<|>)"); - let offset = match range_or_offset { - RangeOrOffset::Range(_) => panic!(), - RangeOrOffset::Offset(it) => it, - }; - (database, FilePosition { file_id, offset }) - } - - fn check_trait(ra_fixture: &str, expect: Expect) { - let (db, position) = position(ra_fixture); - let sema = Semantics::new(&db); - let file = sema.parse(position.file_id); - let impl_block: ast::Impl = - sema.find_node_at_offset_with_descend(file.syntax(), position.offset).unwrap(); - let trait_ = crate::traits::resolve_target_trait(&sema, &impl_block); - let actual = match trait_ { - Some(trait_) => trait_.name(&db).to_string(), - None => String::new(), - }; - expect.assert_eq(&actual); - } - - fn check_missing_assoc(ra_fixture: &str, expect: Expect) { - let (db, position) = position(ra_fixture); - let sema = Semantics::new(&db); - let file = sema.parse(position.file_id); - let impl_block: ast::Impl = - sema.find_node_at_offset_with_descend(file.syntax(), position.offset).unwrap(); - let items = crate::traits::get_missing_assoc_items(&sema, &impl_block); - let actual = items - .into_iter() - .map(|item| item.name(&db).unwrap().to_string()) - .collect::>() - .join("\n"); - expect.assert_eq(&actual); - } - - #[test] - fn resolve_trait() { - check_trait( - r#" -pub trait Foo { - fn bar(); -} -impl Foo for u8 { - <|> -} - "#, - expect![["Foo"]], - ); - check_trait( - r#" -pub trait Foo { - fn bar(); -} -impl Foo for u8 { - fn bar() { - fn baz() { - <|> - } - baz(); - } -} - "#, - expect![["Foo"]], - ); - check_trait( - r#" -pub trait Foo { - fn bar(); -} -pub struct Bar; -impl Bar { - <|> -} - "#, - expect![[""]], - ); - } - - #[test] - fn missing_assoc_items() { - check_missing_assoc( - r#" -pub trait Foo { - const FOO: u8; - fn bar(); -} -impl Foo for u8 { - <|> -}"#, - expect![[r#" - FOO - bar"#]], - ); - - check_missing_assoc( - r#" -pub trait Foo { - const FOO: u8; - fn bar(); -} -impl Foo for u8 { - const FOO: u8 = 10; - <|> -}"#, - expect![[r#" - bar"#]], - ); - - check_missing_assoc( - r#" -pub trait Foo { - const FOO: u8; - fn bar(); -} -impl Foo for u8 { - const FOO: u8 = 10; - fn bar() {<|>} -}"#, - expect![[r#""#]], - ); - - check_missing_assoc( - r#" -pub struct Foo; -impl Foo { - fn bar() {<|>} -}"#, - expect![[r#""#]], - ); - } -} +mod tests; -- cgit v1.2.3