1
- using NUnit . Framework ;
1
+ using System . Collections . Generic ;
2
+ using NUnit . Framework ;
2
3
using Rubberduck . Inspections . CodePathAnalysis ;
3
4
using Rubberduck . Inspections . Concrete ;
4
5
using RubberduckTests . Mocks ;
5
6
using System . Linq ;
6
7
using System . Threading ;
8
+ using Rubberduck . Parsing . Inspections . Abstract ;
7
9
8
10
namespace RubberduckTests . Inspections
9
11
{
10
12
[ TestFixture ]
11
13
public class AssignmentNotUsedInspectionTests
12
14
{
15
+ private IEnumerable < IInspectionResult > GetInspectionResults ( string code )
16
+ {
17
+ var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( code , out _ ) ;
18
+ using ( var state = MockParser . CreateAndParse ( vbe . Object ) )
19
+ {
20
+
21
+ var inspection = new AssignmentNotUsedInspection ( state , new Walker ( ) ) ;
22
+ var inspector = InspectionsHelper . GetInspector ( inspection ) ;
23
+ return inspector . FindIssuesAsync ( state , CancellationToken . None ) . Result ;
24
+ }
25
+ }
26
+
27
+ [ Test ]
28
+ [ Category ( "Inspections" ) ]
29
+ public void IgnoresExplicitArrays ( )
30
+ {
31
+ const string code = @"
32
+ Sub Foo()
33
+ Dim bar(1 To 10) As String
34
+ bar(1) = 42
35
+ End Sub
36
+ " ;
37
+ var results = GetInspectionResults ( code ) ;
38
+ Assert . AreEqual ( 0 , results . Count ( ) ) ;
39
+ }
40
+
41
+ [ Test ]
42
+ [ Category ( "Inspections" ) ]
43
+ public void IgnoresImplicitArrays ( )
44
+ {
45
+ const string code = @"
46
+ Sub Foo()
47
+ Dim bar As Variant
48
+ bar(1) = ""Z""
49
+ End Sub
50
+ " ;
51
+ var results = GetInspectionResults ( code ) ;
52
+ Assert . AreEqual ( 0 , results . Count ( ) ) ;
53
+ }
54
+
55
+ [ Test ]
56
+ [ Category ( "Inspections" ) ]
57
+ public void IgnoresImplicitReDimmedArray ( )
58
+ {
59
+ const string code = @"
60
+ Sub test()
61
+ Dim foo As Variant
62
+ ReDim foo(1 To 10)
63
+ foo(1) = 42
64
+ End Sub
65
+ " ;
66
+ var results = GetInspectionResults ( code ) ;
67
+ Assert . AreEqual ( 0 , results . Count ( ) ) ;
68
+ }
69
+
13
70
[ Test ]
14
71
[ Category ( "Inspections" ) ]
15
72
public void MarksSequentialAssignments ( )
16
73
{
17
- const string inputcode =
18
- @" Sub Foo()
74
+ const string code = @"
75
+ Sub Foo()
19
76
Dim i As Integer
20
77
i = 9
21
78
i = 8
@@ -24,37 +81,21 @@ End Sub
24
81
25
82
Sub Bar(ByVal i As Integer)
26
83
End Sub" ;
27
- var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( inputcode , out _ ) ;
28
- using ( var state = MockParser . CreateAndParse ( vbe . Object ) )
29
- {
30
-
31
- var inspection = new AssignmentNotUsedInspection ( state , new Walker ( ) ) ;
32
- var inspector = InspectionsHelper . GetInspector ( inspection ) ;
33
- var results = inspector . FindIssuesAsync ( state , CancellationToken . None ) . Result ;
34
-
35
- Assert . AreEqual ( 1 , results . Count ( ) ) ;
36
- }
84
+ var results = GetInspectionResults ( code ) ;
85
+ Assert . AreEqual ( 1 , results . Count ( ) ) ;
37
86
}
38
87
39
88
[ Test ]
40
89
[ Category ( "Inspections" ) ]
41
90
public void MarksLastAssignmentInDeclarationBlock ( )
42
91
{
43
- const string inputcode =
44
- @" Sub Foo()
92
+ const string code = @"
93
+ Sub Foo()
45
94
Dim i As Integer
46
95
i = 9
47
96
End Sub" ;
48
- var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( inputcode , out _ ) ;
49
- using ( var state = MockParser . CreateAndParse ( vbe . Object ) )
50
- {
51
-
52
- var inspection = new AssignmentNotUsedInspection ( state , new Walker ( ) ) ;
53
- var inspector = InspectionsHelper . GetInspector ( inspection ) ;
54
- var results = inspector . FindIssuesAsync ( state , CancellationToken . None ) . Result ;
55
-
56
- Assert . AreEqual ( 1 , results . Count ( ) ) ;
57
- }
97
+ var results = GetInspectionResults ( code ) ;
98
+ Assert . AreEqual ( 1 , results . Count ( ) ) ;
58
99
}
59
100
60
101
[ Test ]
@@ -63,8 +104,8 @@ Dim i As Integer
63
104
// I just want feedback before I start mucking around that deep.
64
105
public void DoesNotMarkLastAssignmentInNonDeclarationBlock ( )
65
106
{
66
- const string inputcode =
67
- @" Sub Foo()
107
+ const string code = @"
108
+ Sub Foo()
68
109
Dim i As Integer
69
110
i = 0
70
111
If i = 9 Then
@@ -73,120 +114,80 @@ Dim i As Integer
73
114
i = 8
74
115
End If
75
116
End Sub" ;
76
- var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( inputcode , out _ ) ;
77
- using ( var state = MockParser . CreateAndParse ( vbe . Object ) )
78
- {
79
-
80
- var inspection = new AssignmentNotUsedInspection ( state , new Walker ( ) ) ;
81
- var inspector = InspectionsHelper . GetInspector ( inspection ) ;
82
- var results = inspector . FindIssuesAsync ( state , CancellationToken . None ) . Result ;
83
-
84
- Assert . AreEqual ( 0 , results . Count ( ) ) ;
85
- }
117
+ var results = GetInspectionResults ( code ) ;
118
+ Assert . AreEqual ( 0 , results . Count ( ) ) ;
86
119
}
87
120
88
121
[ Test ]
89
122
[ Category ( "Inspections" ) ]
90
123
public void DoesNotMarkAssignmentWithReferenceAfter ( )
91
124
{
92
- const string inputcode =
93
- @" Sub Foo()
125
+ const string code = @"
126
+ Sub Foo()
94
127
Dim i As Integer
95
128
i = 9
96
129
Bar i
97
130
End Sub
98
131
99
132
Sub Bar(ByVal i As Integer)
100
133
End Sub" ;
101
- var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( inputcode , out _ ) ;
102
- using ( var state = MockParser . CreateAndParse ( vbe . Object ) )
103
- {
104
-
105
- var inspection = new AssignmentNotUsedInspection ( state , new Walker ( ) ) ;
106
- var inspector = InspectionsHelper . GetInspector ( inspection ) ;
107
- var results = inspector . FindIssuesAsync ( state , CancellationToken . None ) . Result ;
108
-
109
- Assert . AreEqual ( 0 , results . Count ( ) ) ;
110
- }
134
+ var results = GetInspectionResults ( code ) ;
135
+ Assert . AreEqual ( 0 , results . Count ( ) ) ;
111
136
}
112
137
113
138
[ Test ]
114
139
[ Category ( "Inspections" ) ]
115
140
public void DoesNotMarkAssignment_UsedInForNext ( )
116
141
{
117
- const string inputcode =
118
- @" Sub foo()
142
+ const string code = @"
143
+ Sub foo()
119
144
Dim i As Integer
120
145
i = 1
121
146
For counter = i To 2
122
147
Next
123
148
End Sub" ;
124
- var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( inputcode , out _ ) ;
125
- using ( var state = MockParser . CreateAndParse ( vbe . Object ) )
126
- {
127
-
128
- var inspection = new AssignmentNotUsedInspection ( state , new Walker ( ) ) ;
129
- var inspector = InspectionsHelper . GetInspector ( inspection ) ;
130
- var results = inspector . FindIssuesAsync ( state , CancellationToken . None ) . Result ;
131
-
132
- Assert . AreEqual ( 0 , results . Count ( ) ) ;
133
- }
149
+ var results = GetInspectionResults ( code ) ;
150
+ Assert . AreEqual ( 0 , results . Count ( ) ) ;
134
151
}
135
152
136
153
[ Test ]
137
154
[ Category ( "Inspections" ) ]
138
155
public void DoesNotMarkAssignment_UsedInWhileWend ( )
139
156
{
140
- const string inputcode =
141
- @" Sub foo()
157
+ const string code = @"
158
+ Sub foo()
142
159
Dim i As Integer
143
160
i = 0
144
161
145
162
While i < 10
146
163
i = i + 1
147
164
Wend
148
165
End Sub" ;
149
- var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( inputcode , out _ ) ;
150
- using ( var state = MockParser . CreateAndParse ( vbe . Object ) )
151
- {
152
-
153
- var inspection = new AssignmentNotUsedInspection ( state , new Walker ( ) ) ;
154
- var inspector = InspectionsHelper . GetInspector ( inspection ) ;
155
- var results = inspector . FindIssuesAsync ( state , CancellationToken . None ) . Result ;
156
-
157
- Assert . AreEqual ( 0 , results . Count ( ) ) ;
158
- }
166
+ var results = GetInspectionResults ( code ) ;
167
+ Assert . AreEqual ( 0 , results . Count ( ) ) ;
159
168
}
160
169
161
170
[ Test ]
162
171
[ Category ( "Inspections" ) ]
163
172
public void DoesNotMarkAssignment_UsedInDoWhile ( )
164
173
{
165
- const string inputcode =
166
- @" Sub foo()
174
+ const string code = @"
175
+ Sub foo()
167
176
Dim i As Integer
168
177
i = 0
169
178
Do While i < 10
170
179
Loop
171
180
End Sub" ;
172
- var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( inputcode , out _ ) ;
173
- using ( var state = MockParser . CreateAndParse ( vbe . Object ) )
174
- {
175
-
176
- var inspection = new AssignmentNotUsedInspection ( state , new Walker ( ) ) ;
177
- var inspector = InspectionsHelper . GetInspector ( inspection ) ;
178
- var results = inspector . FindIssuesAsync ( state , CancellationToken . None ) . Result ;
179
-
180
- Assert . AreEqual ( 0 , results . Count ( ) ) ;
181
- }
181
+ var results = GetInspectionResults ( code ) ;
182
+ Assert . AreEqual ( 0 , results . Count ( ) ) ;
182
183
}
183
184
184
185
[ Test ]
185
186
[ Category ( "Inspections" ) ]
186
187
public void DoesNotMarkAssignment_UsedInSelectCase ( )
187
188
{
188
- const string inputcode =
189
- @" Sub foo()
189
+ const string code = @"
190
+ Sub foo()
190
191
Dim i As Integer
191
192
i = 0
192
193
Select Case i
@@ -200,16 +201,8 @@ Case Else
200
201
i = -1
201
202
End Select
202
203
End Sub" ;
203
- var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( inputcode , out _ ) ;
204
- using ( var state = MockParser . CreateAndParse ( vbe . Object ) )
205
- {
206
-
207
- var inspection = new AssignmentNotUsedInspection ( state , new Walker ( ) ) ;
208
- var inspector = InspectionsHelper . GetInspector ( inspection ) ;
209
- var results = inspector . FindIssuesAsync ( state , CancellationToken . None ) . Result ;
210
-
211
- Assert . AreEqual ( 0 , results . Count ( ) ) ;
212
- }
204
+ var results = GetInspectionResults ( code ) ;
205
+ Assert . AreEqual ( 0 , results . Count ( ) ) ;
213
206
}
214
207
}
215
208
}
0 commit comments