Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/tests/item.rs')
| -rw-r--r-- | crates/ide-completion/src/tests/item.rs | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/crates/ide-completion/src/tests/item.rs b/crates/ide-completion/src/tests/item.rs new file mode 100644 index 0000000000..ed341b361a --- /dev/null +++ b/crates/ide-completion/src/tests/item.rs @@ -0,0 +1,172 @@ +//! Completion tests for item specifics overall. +//! +//! Except for use items which are tested in [super::use_tree] and mod declarations with are tested +//! in [crate::completions::mod_]. +use expect_test::{expect, Expect}; + +use crate::tests::{completion_list, BASE_ITEMS_FIXTURE}; + +fn check(ra_fixture: &str, expect: Expect) { + let actual = completion_list(&format!("{}{}", BASE_ITEMS_FIXTURE, ra_fixture)); + expect.assert_eq(&actual) +} + +#[test] +fn target_type_or_trait_in_impl_block() { + check( + r#" +impl Tra$0 +"#, + expect![[r#" + kw self + kw super + kw crate + tt Trait + en Enum + st Record + st Tuple + md module + st Unit + ma makro!(…) macro_rules! makro + un Union + bt u32 + "#]], + ) +} + +#[test] +fn target_type_in_trait_impl_block() { + check( + r#" +impl Trait for Str$0 +"#, + expect![[r#" + kw self + kw super + kw crate + tt Trait + en Enum + st Record + st Tuple + md module + st Unit + ma makro!(…) macro_rules! makro + un Union + bt u32 + "#]], + ) +} + +#[test] +fn after_trait_name_in_trait_def() { + check( + r"trait A $0", + expect![[r#" + kw where + "#]], + ); +} + +#[test] +fn after_target_name_in_impl() { + check( + r"impl Trait $0", + expect![[r#" + kw where + kw for + "#]], + ); + // FIXME: This should not emit `kw for` + check( + r"impl Trait for Type $0", + expect![[r#" + kw where + kw for + "#]], + ); +} + +#[test] +fn after_struct_name() { + // FIXME: This should emit `kw where` only + check( + r"struct Struct $0", + expect![[r#" + kw pub(crate) + kw pub(super) + kw pub + kw unsafe + kw fn + kw const + kw type + kw impl + kw extern + kw use + kw trait + kw static + kw mod + kw enum + kw struct + kw union + sn tmod (Test module) + sn tfn (Test function) + sn macro_rules + kw self + kw super + kw crate + md module + ma makro!(…) macro_rules! makro + "#]], + ); +} + +#[test] +fn after_fn_name() { + // FIXME: This should emit `kw where` only + check( + r"fn func() $0", + expect![[r#" + kw pub(crate) + kw pub(super) + kw pub + kw unsafe + kw fn + kw const + kw type + kw impl + kw extern + kw use + kw trait + kw static + kw mod + kw enum + kw struct + kw union + sn tmod (Test module) + sn tfn (Test function) + sn macro_rules + kw self + kw super + kw crate + md module + ma makro!(…) macro_rules! makro + "#]], + ); +} + +#[test] +fn before_record_field() { + check( + r#" +struct Foo { + $0 + pub f: i32, +} +"#, + expect![[r#" + kw pub(crate) + kw pub(super) + kw pub + "#]], + ) +} |