@@ -172,6 +172,254 @@ End Function
172
172
Assert . AreEqual ( expectedModuleCode , actualModuleCode ) ;
173
173
}
174
174
175
+ [ Test ]
176
+ [ Category ( "QuickFixes" ) ]
177
+ public void OrdinaryIndexedDefaultMemberAccessExpression_QuickFixWorks ( )
178
+ {
179
+ var class1Code = @"
180
+ Public Function Foo(bar As String) As Class2
181
+ Attribute Foo.VB_UserMemId = 0
182
+ End Function
183
+ " ;
184
+
185
+ var class2Code = @"
186
+ Public Function Baz(bar As String) As Class2
187
+ Attribute Baz.VB_UserMemId = 0
188
+ End Function
189
+ " ;
190
+
191
+ var moduleCode = @"
192
+ Private Function Foo() As Class2
193
+ Dim cls As New Class1
194
+ Set Foo = cls(""newClassObject"")
195
+ End Function
196
+ " ;
197
+
198
+ var expectedModuleCode = @"
199
+ Private Function Foo() As Class2
200
+ Dim cls As New Class1
201
+ Set Foo = cls.Foo(""newClassObject"")
202
+ End Function
203
+ " ;
204
+
205
+ var vbe = MockVbeBuilder . BuildFromModules (
206
+ ( "Class1" , class1Code , ComponentType . ClassModule ) ,
207
+ ( "Class2" , class2Code , ComponentType . ClassModule ) ,
208
+ ( "Module1" , moduleCode , ComponentType . StandardModule ) ) ;
209
+
210
+ var actualModuleCode = ApplyQuickFixToAllInspectionResults ( vbe . Object , "Module1" , state => new IndexedDefaultMemberAccessInspection ( state ) , CodeKind . AttributesCode ) ;
211
+ Assert . AreEqual ( expectedModuleCode , actualModuleCode ) ;
212
+ }
213
+
214
+ [ Test ]
215
+ [ Category ( "QuickFixes" ) ]
216
+ public void RecursiveIndexedDefaultMemberAccessExpression_QuickFixWorks ( )
217
+ {
218
+ var class1Code = @"
219
+ Public Function Foo() As Class2
220
+ Attribute Foo.VB_UserMemId = 0
221
+ End Function
222
+ " ;
223
+
224
+ var class2Code = @"
225
+ Public Function Baz(bar As String) As Class2
226
+ Attribute Baz.VB_UserMemId = 0
227
+ End Function
228
+ " ;
229
+
230
+ var moduleCode = @"
231
+ Private Function Foo() As Class2
232
+ Dim cls As New Class1
233
+ Set Foo = cls(""newClassObject"")
234
+ End Function
235
+ " ;
236
+
237
+ var expectedModuleCode = @"
238
+ Private Function Foo() As Class2
239
+ Dim cls As New Class1
240
+ Set Foo = cls.Foo().Baz(""newClassObject"")
241
+ End Function
242
+ " ;
243
+
244
+ var vbe = MockVbeBuilder . BuildFromModules (
245
+ ( "Class1" , class1Code , ComponentType . ClassModule ) ,
246
+ ( "Class2" , class2Code , ComponentType . ClassModule ) ,
247
+ ( "Module1" , moduleCode , ComponentType . StandardModule ) ) ;
248
+
249
+ var actualModuleCode = ApplyQuickFixToAllInspectionResults ( vbe . Object , "Module1" , state => new IndexedRecursiveDefaultMemberAccessInspection ( state ) , CodeKind . AttributesCode ) ;
250
+ Assert . AreEqual ( expectedModuleCode , actualModuleCode ) ;
251
+ }
252
+
253
+ [ Test ]
254
+ [ Category ( "QuickFixes" ) ]
255
+ public void DoubleOrdinaryIndexedDefaultMemberAccessExpression_QuickFixWorks ( )
256
+ {
257
+ var class1Code = @"
258
+ Public Function Foo(bar As String) As Class2
259
+ Attribute Foo.VB_UserMemId = 0
260
+ End Function
261
+ " ;
262
+
263
+ var class2Code = @"
264
+ Public Function Baz(bar As String) As Class2
265
+ Attribute Baz.VB_UserMemId = 0
266
+ End Function
267
+ " ;
268
+
269
+ var moduleCode = @"
270
+ Private Function Foo() As Class2
271
+ Dim cls As New Class1
272
+ Set Foo = cls(""newClassObject"")(""whatever"")
273
+ End Function
274
+ " ;
275
+
276
+ var expectedModuleCode = @"
277
+ Private Function Foo() As Class2
278
+ Dim cls As New Class1
279
+ Set Foo = cls.Foo(""newClassObject"").Baz(""whatever"")
280
+ End Function
281
+ " ;
282
+
283
+ var vbe = MockVbeBuilder . BuildFromModules (
284
+ ( "Class1" , class1Code , ComponentType . ClassModule ) ,
285
+ ( "Class2" , class2Code , ComponentType . ClassModule ) ,
286
+ ( "Module1" , moduleCode , ComponentType . StandardModule ) ) ;
287
+
288
+ var actualModuleCode = ApplyQuickFixToAllInspectionResults ( vbe . Object , "Module1" , state => new IndexedDefaultMemberAccessInspection ( state ) , CodeKind . AttributesCode ) ;
289
+ Assert . AreEqual ( expectedModuleCode , actualModuleCode ) ;
290
+ }
291
+
292
+ [ Test ]
293
+ [ Category ( "Inspections" ) ]
294
+ public void DoubleRecursiveIndexedDefaultMemberAccessExpression_QuickFixWorks ( )
295
+ {
296
+ var class1Code = @"
297
+ Public Function Foo() As Class2
298
+ Attribute Foo.VB_UserMemId = 0
299
+ End Function
300
+ " ;
301
+
302
+ var class2Code = @"
303
+ Public Function Baz(bar As String) As Class1
304
+ Attribute Baz.VB_UserMemId = 0
305
+ End Function
306
+ " ;
307
+
308
+ var moduleCode = @"
309
+ Private Function Foo() As Class2
310
+ Dim cls As New Class1
311
+ Set Foo = cls(""newClassObject"")(""whatever"")
312
+ End Function
313
+ " ;
314
+
315
+ var expectedModuleCode = @"
316
+ Private Function Foo() As Class2
317
+ Dim cls As New Class1
318
+ Set Foo = cls.Foo().Baz(""newClassObject"").Foo().Baz(""whatever"")
319
+ End Function
320
+ " ;
321
+
322
+ var vbe = MockVbeBuilder . BuildFromModules (
323
+ ( "Class1" , class1Code , ComponentType . ClassModule ) ,
324
+ ( "Class2" , class2Code , ComponentType . ClassModule ) ,
325
+ ( "Module1" , moduleCode , ComponentType . StandardModule ) ) ;
326
+
327
+ var actualModuleCode = ApplyQuickFixToAllInspectionResults ( vbe . Object , "Module1" , state => new IndexedRecursiveDefaultMemberAccessInspection ( state ) , CodeKind . AttributesCode ) ;
328
+ Assert . AreEqual ( expectedModuleCode , actualModuleCode ) ;
329
+ }
330
+
331
+ [ Test ]
332
+ [ Category ( "QuickFixes" ) ]
333
+ public void OrdinaryIndexedDefaultMemberAccessOnDefaultMemberArrayAccess_QuickFixWorks ( )
334
+ {
335
+ var class1Code = @"
336
+ Public Function Foo() As Class2()
337
+ Attribute Foo.VB_UserMemId = 0
338
+ End Function
339
+ " ;
340
+
341
+ var class2Code = @"
342
+ Public Function Baz(bar As String) As Class2
343
+ Attribute Baz.VB_UserMemId = 0
344
+ End Function
345
+ " ;
346
+
347
+ var class3Code = @"
348
+ Public Function Baz() As Class2
349
+ Attribute Baz.VB_UserMemId = 0
350
+ End Function
351
+ " ;
352
+
353
+ var moduleCode = @"
354
+ Private Function Foo() As Class2
355
+ Dim cls As New Class1
356
+ Set Foo = cls(0)(""newClassObject"")
357
+ End Function
358
+ " ;
359
+
360
+ var expectedModuleCode = @"
361
+ Private Function Foo() As Class2
362
+ Dim cls As New Class1
363
+ Set Foo = cls(0).Baz(""newClassObject"")
364
+ End Function
365
+ " ;
366
+
367
+ var vbe = MockVbeBuilder . BuildFromModules (
368
+ ( "Class1" , class1Code , ComponentType . ClassModule ) ,
369
+ ( "Class2" , class2Code , ComponentType . ClassModule ) ,
370
+ ( "Class3" , class3Code , ComponentType . ClassModule ) ,
371
+ ( "Module1" , moduleCode , ComponentType . StandardModule ) ) ;
372
+
373
+ var actualModuleCode = ApplyQuickFixToAllInspectionResults ( vbe . Object , "Module1" , state => new IndexedDefaultMemberAccessInspection ( state ) , CodeKind . AttributesCode ) ;
374
+ Assert . AreEqual ( expectedModuleCode , actualModuleCode ) ;
375
+ }
376
+
377
+ [ Test ]
378
+ [ Category ( "Inspections" ) ]
379
+ public void RecursiveIndexedDefaultMemberAccessOnDefaultMemberArrayAccess_QuickFixWorks ( )
380
+ {
381
+ var class1Code = @"
382
+ Public Function Foo() As Class3()
383
+ Attribute Foo.VB_UserMemId = 0
384
+ End Function
385
+ " ;
386
+
387
+ var class2Code = @"
388
+ Public Function Baz(bar As String) As Class2
389
+ Attribute Baz.VB_UserMemId = 0
390
+ End Function
391
+ " ;
392
+
393
+ var class3Code = @"
394
+ Public Function Bar() As Class2
395
+ Attribute Bar.VB_UserMemId = 0
396
+ End Function
397
+ " ;
398
+
399
+ var moduleCode = @"
400
+ Private Function Foo() As Class2
401
+ Dim cls As New Class1
402
+ Set Foo = cls(0)(""newClassObject"")
403
+ End Function
404
+ " ;
405
+
406
+ var expectedModuleCode = @"
407
+ Private Function Foo() As Class2
408
+ Dim cls As New Class1
409
+ Set Foo = cls(0).Bar().Baz(""newClassObject"")
410
+ End Function
411
+ " ;
412
+
413
+ var vbe = MockVbeBuilder . BuildFromModules (
414
+ ( "Class1" , class1Code , ComponentType . ClassModule ) ,
415
+ ( "Class2" , class2Code , ComponentType . ClassModule ) ,
416
+ ( "Class3" , class3Code , ComponentType . ClassModule ) ,
417
+ ( "Module1" , moduleCode , ComponentType . StandardModule ) ) ;
418
+
419
+ var actualModuleCode = ApplyQuickFixToAllInspectionResults ( vbe . Object , "Module1" , state => new IndexedRecursiveDefaultMemberAccessInspection ( state ) , CodeKind . AttributesCode ) ;
420
+ Assert . AreEqual ( expectedModuleCode , actualModuleCode ) ;
421
+ }
422
+
175
423
protected override IQuickFix QuickFix ( RubberduckParserState state )
176
424
{
177
425
return new ExpandDefaultMemberQuickFix ( state ) ;
0 commit comments