1
1
mod generated;
2
2
3
+ use expect_test:: expect;
3
4
use hir:: Semantics ;
4
5
use ide_db:: {
5
6
base_db:: { fixture:: WithFixture , FileId , FileRange , SourceDatabaseExt } ,
@@ -10,11 +11,11 @@ use ide_db::{
10
11
source_change:: FileSystemEdit ,
11
12
RootDatabase ,
12
13
} ;
14
+ use stdx:: { format_to, trim_indent} ;
13
15
use syntax:: TextRange ;
14
- use test_utils:: { assert_eq_text, extract_offset, extract_range } ;
16
+ use test_utils:: { assert_eq_text, extract_offset} ;
15
17
16
18
use crate :: { handlers:: Handler , Assist , AssistConfig , AssistContext , AssistKind , Assists } ;
17
- use stdx:: { format_to, trim_indent} ;
18
19
19
20
pub ( crate ) const TEST_CONFIG : AssistConfig = AssistConfig {
20
21
snippet_cap : SnippetCap :: new ( true ) ,
@@ -163,6 +164,22 @@ fn check(handler: Handler, before: &str, expected: ExpectedResult, assist_label:
163
164
} ;
164
165
}
165
166
167
+ fn labels ( assists : & [ Assist ] ) -> String {
168
+ let mut labels = assists
169
+ . iter ( )
170
+ . map ( |assist| {
171
+ let mut label = match & assist. group {
172
+ Some ( g) => g. 0 . clone ( ) ,
173
+ None => assist. label . to_string ( ) ,
174
+ } ;
175
+ label. push ( '\n' ) ;
176
+ label
177
+ } )
178
+ . collect :: < Vec < _ > > ( ) ;
179
+ labels. dedup ( ) ;
180
+ labels. into_iter ( ) . collect :: < String > ( )
181
+ }
182
+
166
183
#[ test]
167
184
fn assist_order_field_struct ( ) {
168
185
let before = "struct Foo { $0bar: u32 }" ;
@@ -181,66 +198,78 @@ fn assist_order_field_struct() {
181
198
182
199
#[ test]
183
200
fn assist_order_if_expr ( ) {
184
- let before = "
185
- pub fn test_some_range(a: int) -> bool {
186
- if let 2..6 = $05$0 {
187
- true
188
- } else {
189
- false
190
- }
191
- }" ;
192
- let ( range, before) = extract_range ( before) ;
193
- let ( db, file_id) = with_single_file ( & before) ;
194
- let frange = FileRange { file_id, range } ;
201
+ let ( db, frange) = RootDatabase :: with_range (
202
+ r#"
203
+ pub fn test_some_range(a: int) -> bool {
204
+ if let 2..6 = $05$0 {
205
+ true
206
+ } else {
207
+ false
208
+ }
209
+ }
210
+ "# ,
211
+ ) ;
212
+
195
213
let assists = Assist :: get ( & db, & TEST_CONFIG , false , frange) ;
196
- let mut assists = assists . iter ( ) ;
214
+ let expected = labels ( & assists ) ;
197
215
198
- assert_eq ! ( assists. next( ) . expect( "expected assist" ) . label, "Extract into function" ) ;
199
- assert_eq ! ( assists. next( ) . expect( "expected assist" ) . label, "Extract into variable" ) ;
200
- assert_eq ! ( assists. next( ) . expect( "expected assist" ) . label, "Replace with match" ) ;
216
+ expect ! [ [ r#"
217
+ Convert integer base
218
+ Extract into variable
219
+ Extract into function
220
+ Replace with match
221
+ "# ] ]
222
+ . assert_eq ( & expected) ;
201
223
}
202
224
203
225
#[ test]
204
226
fn assist_filter_works ( ) {
205
- let before = "
206
- pub fn test_some_range(a: int) -> bool {
207
- if let 2..6 = $05$0 {
208
- true
209
- } else {
210
- false
211
- }
212
- }" ;
213
- let ( range, before) = extract_range ( before) ;
214
- let ( db, file_id) = with_single_file ( & before) ;
215
- let frange = FileRange { file_id, range } ;
216
-
227
+ let ( db, frange) = RootDatabase :: with_range (
228
+ r#"
229
+ pub fn test_some_range(a: int) -> bool {
230
+ if let 2..6 = $05$0 {
231
+ true
232
+ } else {
233
+ false
234
+ }
235
+ }
236
+ "# ,
237
+ ) ;
217
238
{
218
239
let mut cfg = TEST_CONFIG ;
219
240
cfg. allowed = Some ( vec ! [ AssistKind :: Refactor ] ) ;
220
241
221
242
let assists = Assist :: get ( & db, & cfg, false , frange) ;
222
- let mut assists = assists . iter ( ) ;
243
+ let expected = labels ( & assists ) ;
223
244
224
- assert_eq ! ( assists. next( ) . expect( "expected assist" ) . label, "Extract into function" ) ;
225
- assert_eq ! ( assists. next( ) . expect( "expected assist" ) . label, "Extract into variable" ) ;
226
- assert_eq ! ( assists. next( ) . expect( "expected assist" ) . label, "Replace with match" ) ;
245
+ expect ! [ [ r#"
246
+ Convert integer base
247
+ Extract into variable
248
+ Extract into function
249
+ Replace with match
250
+ "# ] ]
251
+ . assert_eq ( & expected) ;
227
252
}
228
253
229
254
{
230
255
let mut cfg = TEST_CONFIG ;
231
256
cfg. allowed = Some ( vec ! [ AssistKind :: RefactorExtract ] ) ;
232
257
let assists = Assist :: get ( & db, & cfg, false , frange) ;
233
- assert_eq ! ( assists. len ( ) , 2 ) ;
258
+ let expected = labels ( & assists) ;
234
259
235
- let mut assists = assists. iter ( ) ;
236
- assert_eq ! ( assists. next( ) . expect( "expected assist" ) . label, "Extract into function" ) ;
237
- assert_eq ! ( assists. next( ) . expect( "expected assist" ) . label, "Extract into variable" ) ;
260
+ expect ! [ [ r#"
261
+ Extract into variable
262
+ Extract into function
263
+ "# ] ]
264
+ . assert_eq ( & expected) ;
238
265
}
239
266
240
267
{
241
268
let mut cfg = TEST_CONFIG ;
242
269
cfg. allowed = Some ( vec ! [ AssistKind :: QuickFix ] ) ;
243
270
let assists = Assist :: get ( & db, & cfg, false , frange) ;
244
- assert ! ( assists. is_empty( ) , "All asserts but quickfixes should be filtered out" ) ;
271
+ let expected = labels ( & assists) ;
272
+
273
+ expect ! [ [ r#""# ] ] . assert_eq ( & expected) ;
245
274
}
246
275
}
0 commit comments