@@ -18,21 +18,23 @@ public class TodoExplorerTests
18
18
[ TestCategory ( "Annotations" ) ]
19
19
public void PicksUpComments ( )
20
20
{
21
- var content =
21
+ const string inputCode =
22
22
@"' Todo this is a todo comment
23
23
' Note this is a note comment
24
24
' Bug this is a bug comment
25
25
" ;
26
26
27
27
var builder = new MockVbeBuilder ( ) ;
28
28
var project = builder . ProjectBuilder ( "TestProject1" , ProjectProtection . Unprotected )
29
- . AddComponent ( "Module1" , ComponentType . StandardModule , content ) ;
29
+ . AddComponent ( "Module1" , ComponentType . StandardModule , inputCode )
30
+ . Build ( ) ;
30
31
31
- var vbe = builder . AddProject ( project . Build ( ) ) . Build ( ) ;
32
+ var vbe = builder . AddProject ( project ) . Build ( ) ;
32
33
var parser = MockParser . Create ( vbe . Object ) ;
33
34
using ( var state = parser . State )
34
35
{
35
- var vm = new ToDoExplorerViewModel ( state , GetConfigService ( ) , GetOperatingSystemMock ( ) . Object ) ;
36
+ var cs = GetConfigService ( new [ ] { "TODO" , "NOTE" , "BUG" } ) ;
37
+ var vm = new ToDoExplorerViewModel ( state , cs , GetOperatingSystemMock ( ) . Object ) ;
36
38
37
39
parser . Parse ( new CancellationTokenSource ( ) ) ;
38
40
if ( state . Status >= ParserState . Error )
@@ -42,15 +44,15 @@ public void PicksUpComments()
42
44
43
45
var comments = vm . Items . Select ( s => s . Type ) ;
44
46
45
- Assert . IsTrue ( comments . SequenceEqual ( new [ ] { "TODO " , "NOTE " , "BUG " } ) ) ;
47
+ Assert . IsTrue ( comments . SequenceEqual ( new [ ] { "TODO" , "NOTE" , "BUG" } ) ) ;
46
48
}
47
49
}
48
50
49
51
[ TestMethod ]
50
52
[ TestCategory ( "Annotations" ) ]
51
53
public void PicksUpComments_StrangeCasing ( )
52
54
{
53
- var content =
55
+ const string inputCode =
54
56
@"' tODO this is a todo comment
55
57
' NOTE this is a note comment
56
58
' bug this is a bug comment
@@ -59,13 +61,84 @@ public void PicksUpComments_StrangeCasing()
59
61
60
62
var builder = new MockVbeBuilder ( ) ;
61
63
var project = builder . ProjectBuilder ( "TestProject1" , ProjectProtection . Unprotected )
62
- . AddComponent ( "Module1" , ComponentType . StandardModule , content ) ;
64
+ . AddComponent ( "Module1" , ComponentType . StandardModule , inputCode )
65
+ . Build ( ) ;
66
+
67
+ var vbe = builder . AddProject ( project ) . Build ( ) ;
68
+ var parser = MockParser . Create ( vbe . Object ) ;
69
+ using ( var state = parser . State )
70
+ {
71
+ var cs = GetConfigService ( new [ ] { "TODO" , "NOTE" , "BUG" } ) ;
72
+ var vm = new ToDoExplorerViewModel ( state , cs , GetOperatingSystemMock ( ) . Object ) ;
73
+
74
+ parser . Parse ( new CancellationTokenSource ( ) ) ;
75
+ if ( state . Status >= ParserState . Error )
76
+ {
77
+ Assert . Inconclusive ( "Parser Error" ) ;
78
+ }
79
+
80
+ var comments = vm . Items . Select ( s => s . Type ) ;
81
+
82
+ Assert . IsTrue ( comments . SequenceEqual ( new [ ] { "TODO" , "NOTE" , "BUG" , "BUG" } ) ) ;
83
+ }
84
+ }
85
+
86
+ [ TestMethod ]
87
+ [ TestCategory ( "Annotations" ) ]
88
+ public void PicksUpComments_SpecialCharacters ( )
89
+ {
90
+ const string inputCode =
91
+ @"' To-do - this is a todo comment
92
+ ' N@TE this is a note comment
93
+ ' bug this should work with a trailing space
94
+ ' bug: this should not be seen due to the colon
95
+ " ;
96
+
97
+ var builder = new MockVbeBuilder ( ) ;
98
+ var project = builder . ProjectBuilder ( "TestProject1" , ProjectProtection . Unprotected )
99
+ . AddComponent ( "Module1" , ComponentType . StandardModule , inputCode )
100
+ . Build ( ) ;
101
+
102
+ var vbe = builder . AddProject ( project ) . Build ( ) ;
103
+ var parser = MockParser . Create ( vbe . Object ) ;
104
+ using ( var state = parser . State )
105
+ {
106
+ var cs = GetConfigService ( new [ ] { "TO-DO" , "N@TE" , "BUG " } ) ;
107
+ var vm = new ToDoExplorerViewModel ( state , cs , GetOperatingSystemMock ( ) . Object ) ;
108
+
109
+ parser . Parse ( new CancellationTokenSource ( ) ) ;
110
+ if ( state . Status >= ParserState . Error )
111
+ {
112
+ Assert . Inconclusive ( "Parser Error" ) ;
113
+ }
114
+
115
+ var comments = vm . Items . Select ( s => s . Type ) ;
116
+
117
+ Assert . IsTrue ( comments . SequenceEqual ( new [ ] { "TO-DO" , "N@TE" , "BUG " } ) ) ;
118
+ }
119
+ }
120
+
121
+ [ TestMethod ]
122
+ [ TestCategory ( "Annotations" ) ]
123
+ public void AvoidsFalsePositiveComments ( )
124
+ {
125
+ const string inputCode =
126
+ @"' Todon't should not get picked up
127
+ ' Debug.print() would trigger false positive if word boundaries not used
128
+ ' Denoted
129
+ " ;
130
+
131
+ var builder = new MockVbeBuilder ( ) ;
132
+ var project = builder . ProjectBuilder ( "TestProject1" , ProjectProtection . Unprotected )
133
+ . AddComponent ( "Module1" , ComponentType . StandardModule , inputCode )
134
+ . Build ( ) ;
63
135
64
- var vbe = builder . AddProject ( project . Build ( ) ) . Build ( ) ;
136
+ var vbe = builder . AddProject ( project ) . Build ( ) ;
65
137
var parser = MockParser . Create ( vbe . Object ) ;
66
138
using ( var state = parser . State )
67
139
{
68
- var vm = new ToDoExplorerViewModel ( state , GetConfigService ( ) , GetOperatingSystemMock ( ) . Object ) ;
140
+ var cs = GetConfigService ( new [ ] { "TODO" , "NOTE" , "BUG" } ) ;
141
+ var vm = new ToDoExplorerViewModel ( state , cs , GetOperatingSystemMock ( ) . Object ) ;
69
142
70
143
parser . Parse ( new CancellationTokenSource ( ) ) ;
71
144
if ( state . Status >= ParserState . Error )
@@ -75,30 +148,31 @@ public void PicksUpComments_StrangeCasing()
75
148
76
149
var comments = vm . Items . Select ( s => s . Type ) ;
77
150
78
- Assert . IsTrue ( comments . SequenceEqual ( new [ ] { "TODO " , "NOTE " , "BUG " , "BUG " } ) ) ;
151
+ Assert . IsTrue ( comments . Count ( ) == 0 ) ;
79
152
}
80
153
}
81
154
82
155
[ TestMethod ]
83
156
[ TestCategory ( "Annotations" ) ]
84
157
public void RemoveRemovesComment ( )
85
158
{
86
- var input =
159
+ const string inputCode =
87
160
@"Dim d As Variant ' bug should be Integer" ;
88
161
89
- var expected =
162
+ const string expected =
90
163
@"Dim d As Variant " ;
91
164
92
165
var builder = new MockVbeBuilder ( ) ;
93
166
var project = builder . ProjectBuilder ( "TestProject1" , ProjectProtection . Unprotected )
94
- . AddComponent ( "Module1" , ComponentType . StandardModule , input )
167
+ . AddComponent ( "Module1" , ComponentType . StandardModule , inputCode )
95
168
. Build ( ) ;
96
169
97
170
var vbe = builder . AddProject ( project ) . Build ( ) ;
98
171
var parser = MockParser . Create ( vbe . Object ) ;
99
172
using ( var state = parser . State )
100
173
{
101
- var vm = new ToDoExplorerViewModel ( state , GetConfigService ( ) , GetOperatingSystemMock ( ) . Object ) ;
174
+ var cs = GetConfigService ( new [ ] { "TODO" , "NOTE" , "BUG" } ) ;
175
+ var vm = new ToDoExplorerViewModel ( state , cs , GetOperatingSystemMock ( ) . Object ) ;
102
176
103
177
parser . Parse ( new CancellationTokenSource ( ) ) ;
104
178
if ( state . Status >= ParserState . Error )
@@ -115,24 +189,19 @@ public void RemoveRemovesComment()
115
189
}
116
190
}
117
191
118
- private IGeneralConfigService GetConfigService ( )
192
+ private IGeneralConfigService GetConfigService ( string [ ] markers )
119
193
{
120
194
var configService = new Mock < IGeneralConfigService > ( ) ;
121
- configService . Setup ( c => c . LoadConfiguration ( ) ) . Returns ( GetTodoConfig ) ;
195
+ configService . Setup ( c => c . LoadConfiguration ( ) ) . Returns ( GetTodoConfig ( markers ) ) ;
122
196
123
197
return configService . Object ;
124
198
}
125
199
126
- private Configuration GetTodoConfig ( )
200
+ private Configuration GetTodoConfig ( string [ ] markers )
127
201
{
128
202
var todoSettings = new ToDoListSettings
129
203
{
130
- ToDoMarkers = new [ ]
131
- {
132
- new ToDoMarker ( "NOTE " ) ,
133
- new ToDoMarker ( "TODO " ) ,
134
- new ToDoMarker ( "BUG " )
135
- }
204
+ ToDoMarkers = markers . Select ( m => new ToDoMarker ( m ) ) . ToArray ( )
136
205
} ;
137
206
138
207
var userSettings = new UserSettings ( null , null , todoSettings , null , null , null , null ) ;
0 commit comments