3
3
using Rubberduck . Parsing . Symbols ;
4
4
using Rubberduck . Parsing . VBA ;
5
5
using Rubberduck . UnitTesting ;
6
- using Rubberduck . VBEditor . Utility ;
7
6
8
7
namespace Rubberduck . UI . Command
9
8
{
10
9
public class RunSelectedTestMethodCommand : CommandBase
11
10
{
12
11
private readonly ITestEngine _engine ;
13
- private readonly ISelectionProvider _selectionProvider ;
12
+ private readonly ISelectedDeclarationProvider _selectedDeclarationProvider ;
14
13
private readonly IDeclarationFinderProvider _finderProvider ;
15
14
16
- public RunSelectedTestMethodCommand ( ITestEngine engine , ISelectionProvider selectionProvider , IDeclarationFinderProvider finderProvider )
15
+ public RunSelectedTestMethodCommand ( ITestEngine engine , ISelectedDeclarationProvider selectedDeclarationProvider , IDeclarationFinderProvider finderProvider )
17
16
{
18
17
_engine = engine ;
19
- _selectionProvider = selectionProvider ;
18
+ _selectedDeclarationProvider = selectedDeclarationProvider ;
20
19
_finderProvider = finderProvider ;
21
20
22
21
AddToCanExecuteEvaluation ( SpecialEvaluateCanExecute ) ;
@@ -43,15 +42,17 @@ protected override void OnExecute(object parameter)
43
42
44
43
private Declaration FindDeclarationFromSelection ( )
45
44
{
46
- var active = _selectionProvider ? . ActiveSelection ( ) ;
47
- if ( ! active . HasValue )
48
- {
49
- return null ;
50
- }
45
+ var selectedMember = _selectedDeclarationProvider . SelectedMember ( ) ;
46
+ return IsTestMethod ( selectedMember )
47
+ ? selectedMember
48
+ : null ;
49
+ }
51
50
52
- return _finderProvider . DeclarationFinder . FindDeclarationsContainingSelection ( active . Value )
53
- . SingleOrDefault ( declaration => declaration . DeclarationType == DeclarationType . Procedure &&
54
- declaration . Annotations . Any ( annotation => annotation is TestMethodAnnotation ) ) ;
51
+ private bool IsTestMethod ( Declaration member )
52
+ {
53
+ return member . DeclarationType == DeclarationType . Procedure
54
+ && member . Annotations . Any ( parseTreeAnnotation =>
55
+ parseTreeAnnotation . Annotation is TestMethodAnnotation ) ;
55
56
}
56
57
}
57
58
}
0 commit comments