Skip to content

Commit 6ca1cc5

Browse files
committed
Add new TODO marker tests
1 parent 361098a commit 6ca1cc5

File tree

1 file changed

+79
-9
lines changed

1 file changed

+79
-9
lines changed

RubberduckTests/TodoExplorer/TodoExplorerTests.cs

Lines changed: 79 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,18 @@ public class TodoExplorerTests
1818
[TestCategory("Annotations")]
1919
public void PicksUpComments()
2020
{
21-
var content =
21+
const string inputCode =
2222
@"' Todo this is a todo comment
2323
' Note this is a note comment
2424
' Bug this is a bug comment
2525
";
2626

2727
var builder = new MockVbeBuilder();
2828
var project = builder.ProjectBuilder("TestProject1", ProjectProtection.Unprotected)
29-
.AddComponent("Module1", ComponentType.StandardModule, content);
29+
.AddComponent("Module1", ComponentType.StandardModule, inputCode)
30+
.Build();
3031

31-
var vbe = builder.AddProject(project.Build()).Build();
32+
var vbe = builder.AddProject(project).Build();
3233
var parser = MockParser.Create(vbe.Object);
3334
using (var state = parser.State)
3435
{
@@ -51,7 +52,7 @@ public void PicksUpComments()
5152
[TestCategory("Annotations")]
5253
public void PicksUpComments_StrangeCasing()
5354
{
54-
var content =
55+
const string inputCode =
5556
@"' tODO this is a todo comment
5657
' NOTE this is a note comment
5758
' bug this is a bug comment
@@ -60,9 +61,10 @@ public void PicksUpComments_StrangeCasing()
6061

6162
var builder = new MockVbeBuilder();
6263
var project = builder.ProjectBuilder("TestProject1", ProjectProtection.Unprotected)
63-
.AddComponent("Module1", ComponentType.StandardModule, content);
64+
.AddComponent("Module1", ComponentType.StandardModule, inputCode)
65+
.Build();
6466

65-
var vbe = builder.AddProject(project.Build()).Build();
67+
var vbe = builder.AddProject(project).Build();
6668
var parser = MockParser.Create(vbe.Object);
6769
using (var state = parser.State)
6870
{
@@ -81,19 +83,87 @@ public void PicksUpComments_StrangeCasing()
8183
}
8284
}
8385

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 colon separator
94+
";
95+
96+
var builder = new MockVbeBuilder();
97+
var project = builder.ProjectBuilder("TestProject1", ProjectProtection.Unprotected)
98+
.AddComponent("Module1", ComponentType.StandardModule, inputCode)
99+
.Build();
100+
101+
var vbe = builder.AddProject(project).Build();
102+
var parser = MockParser.Create(vbe.Object);
103+
using (var state = parser.State)
104+
{
105+
var cs = GetConfigService(new[] { "TO-DO", "N@TE", "BUG" });
106+
var vm = new ToDoExplorerViewModel(state, cs, GetOperatingSystemMock().Object);
107+
108+
parser.Parse(new CancellationTokenSource());
109+
if (state.Status >= ParserState.Error)
110+
{
111+
Assert.Inconclusive("Parser Error");
112+
}
113+
114+
var comments = vm.Items.Select(s => s.Type);
115+
116+
Assert.IsTrue(comments.SequenceEqual(new[] { "TO-DO", "N@TE", "BUG" }));
117+
}
118+
}
119+
120+
[TestMethod]
121+
[TestCategory("Annotations")]
122+
public void AvoidsFalsePositiveComments()
123+
{
124+
const string inputCode =
125+
@"' Todon't should not get picked up
126+
' Debug.print() would trigger false positive if word boundaries not used
127+
' Denoted
128+
";
129+
130+
var builder = new MockVbeBuilder();
131+
var project = builder.ProjectBuilder("TestProject1", ProjectProtection.Unprotected)
132+
.AddComponent("Module1", ComponentType.StandardModule, inputCode)
133+
.Build();
134+
135+
var vbe = builder.AddProject(project).Build();
136+
var parser = MockParser.Create(vbe.Object);
137+
using (var state = parser.State)
138+
{
139+
var cs = GetConfigService(new[] { "TODO", "NOTE", "BUG" });
140+
var vm = new ToDoExplorerViewModel(state, cs, GetOperatingSystemMock().Object);
141+
142+
parser.Parse(new CancellationTokenSource());
143+
if (state.Status >= ParserState.Error)
144+
{
145+
Assert.Inconclusive("Parser Error");
146+
}
147+
148+
var comments = vm.Items.Select(s => s.Type);
149+
150+
Assert.IsTrue(comments.Count() == 0);
151+
}
152+
}
153+
84154
[TestMethod]
85155
[TestCategory("Annotations")]
86156
public void RemoveRemovesComment()
87157
{
88-
var input =
158+
const string inputCode =
89159
@"Dim d As Variant ' bug should be Integer";
90160

91-
var expected =
161+
const string expected =
92162
@"Dim d As Variant ";
93163

94164
var builder = new MockVbeBuilder();
95165
var project = builder.ProjectBuilder("TestProject1", ProjectProtection.Unprotected)
96-
.AddComponent("Module1", ComponentType.StandardModule, input)
166+
.AddComponent("Module1", ComponentType.StandardModule, inputCode)
97167
.Build();
98168

99169
var vbe = builder.AddProject(project).Build();

0 commit comments

Comments
 (0)