From 6310786ca5531f8d7f93eb07ab3a96d0f7addd25 Mon Sep 17 00:00:00 2001 From: Alexander Gonzalez Date: Mon, 26 Jul 2021 15:34:44 -0400 Subject: [PATCH] test: Add hover_range tests --- crates/ide/src/hover.rs | 106 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index 692c3ff676a..735c535e5eb 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -652,6 +652,21 @@ mod tests { expect.assert_debug_eq(&hover.info.actions) } + fn check_hover_range(ra_fixture: &str, expect: Expect) { + let (analysis, range) = fixture::range(ra_fixture); + let hover = analysis + .hover_range( + &HoverConfig { + links_in_hover: false, + documentation: Some(HoverDocFormat::Markdown), + }, + range, + ) + .unwrap() + .unwrap(); + expect.assert_eq(hover.info.markup.as_str()) + } + #[test] fn hover_shows_type_of_an_expression() { check( @@ -3911,4 +3926,95 @@ struct Foo; "#]], ); } + + #[test] + fn hover_range_math() { + check_hover_range( + r#" +fn f() { let expr = $01 + 2 * 3$0 } + "#, + expect![[r#" + ```rust + i32 + ```"#]], + ); + + check_hover_range( + r#" +fn f() { let expr = 1 $0+ 2 * $03 } + "#, + expect![[r#" + ```rust + i32 + ```"#]], + ); + + check_hover_range( + r#" +fn f() { let expr = 1 + $02 * 3$0 } + "#, + expect![[r#" + ```rust + i32 + ```"#]], + ); + } + + #[test] + fn hover_range_arrays() { + check_hover_range( + r#" +fn f() { let expr = $0[1, 2, 3, 4]$0 } + "#, + expect![[r#" + ```rust + [i32; 4] + ```"#]], + ); + + check_hover_range( + r#" +fn f() { let expr = [1, 2, $03, 4]$0 } + "#, + expect![[r#" + ```rust + [i32; 4] + ```"#]], + ); + + check_hover_range( + r#" +fn f() { let expr = [1, 2, $03$0, 4] } + "#, + expect![[r#" + ```rust + i32 + ```"#]], + ); + } + + #[test] + fn hover_range_functions() { + check_hover_range( + r#" +fn f(a: &[T]) { } +fn b() { $0f$0(&[1, 2, 3, 4, 5]); } + "#, + expect![[r#" + ```rust + fn f(&[i32]) + ```"#]], + ); + + check_hover_range( + r#" +fn f(a: &[T]) { } +fn b() { f($0&[1, 2, 3, 4, 5]$0); } + "#, + expect![[r#" + ```rust + &[i32; 5] + ```"#]], + ); + } }