Skip to content

Commit c7a813c

Browse files
committed
A couple tests.
1 parent f2d2d67 commit c7a813c

File tree

3 files changed

+120
-31
lines changed

3 files changed

+120
-31
lines changed

RetailCoder.VBE/UnitTesting/NewTestMethodCommand.cs

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -21,40 +21,40 @@ public NewTestMethodCommand(VBE vbe, RubberduckParserState state)
2121
private const string TestMethodBaseName = "TestMethod";
2222

2323
public static readonly string TestMethodTemplate = string.Concat(
24-
"'@TestMethod\n",
25-
"Public Sub ", NamePlaceholder, "() 'TODO ", RubberduckUI.UnitTest_NewMethod_Rename, "\n",
26-
" On Error GoTo TestFail\n",
27-
" \n",
28-
" 'Arrange:\n\n",
29-
" 'Act:\n\n",
30-
" 'Assert:\n",
31-
" Assert.Inconclusive\n\n",
32-
"TestExit:\n",
33-
" Exit Sub\n",
34-
"TestFail:\n",
35-
" Assert.Fail \"", RubberduckUI.UnitTest_NewMethod_RaisedTestError, ": #\" & Err.Number & \" - \" & Err.Description\n",
36-
"End Sub\n"
24+
"'@TestMethod\r\n",
25+
"Public Sub ", NamePlaceholder, "() 'TODO ", RubberduckUI.UnitTest_NewMethod_Rename, "\r\n",
26+
" On Error GoTo TestFail\r\n",
27+
" \r\n",
28+
" 'Arrange:\r\n\r\n",
29+
" 'Act:\r\n\r\n",
30+
" 'Assert:\r\n",
31+
" Assert.Inconclusive\r\n\r\n",
32+
"TestExit:\r\n",
33+
" Exit Sub\r\n",
34+
"TestFail:\r\n",
35+
" Assert.Fail \"", RubberduckUI.UnitTest_NewMethod_RaisedTestError, ": #\" & Err.Number & \" - \" & Err.Description\r\n",
36+
"End Sub\r\n"
3737
);
3838

3939
public static readonly string TestMethodExpectedErrorTemplate = string.Concat(
40-
"'@TestMethod\n",
41-
"Public Sub ", NamePlaceholder, "() 'TODO ", RubberduckUI.UnitTest_NewMethod_Rename, "\n",
42-
" Const ExpectedError As Long = 0 'TODO ", RubberduckUI.UnitTest_NewMethod_ChangeErrorNo, "\n",
43-
" On Error GoTo TestFail\n",
44-
" \n",
45-
" 'Arrange:\n\n",
46-
" 'Act:\n\n",
47-
"Assert:\n",
48-
" Assert.Fail \"", RubberduckUI.UnitTest_NewMethod_ErrorNotRaised, ".\"\n\n",
49-
"TestExit:\n",
50-
" Exit Sub\n",
51-
"TestFail:\n",
52-
" If Err.Number = ExpectedError Then\n",
53-
" Resume TestExit\n",
54-
" Else\n",
55-
" Resume Assert\n",
56-
" End If\n",
57-
"End Sub\n"
40+
"'@TestMethod\r\n",
41+
"Public Sub ", NamePlaceholder, "() 'TODO ", RubberduckUI.UnitTest_NewMethod_Rename, "\r\n",
42+
" Const ExpectedError As Long = 0 'TODO ", RubberduckUI.UnitTest_NewMethod_ChangeErrorNo, "\r\n",
43+
" On Error GoTo TestFail\r\n",
44+
" \r\n",
45+
" 'Arrange:\r\n\r\n",
46+
" 'Act:\r\n\r\n",
47+
"Assert:\r\n",
48+
" Assert.Fail \"", RubberduckUI.UnitTest_NewMethod_ErrorNotRaised, ".\"\r\n\r\n",
49+
"TestExit:\r\n",
50+
" Exit Sub\r\n",
51+
"TestFail:\r\n",
52+
" If Err.Number = ExpectedError Then\r\n",
53+
" Resume TestExit\r\n",
54+
" Else\r\n",
55+
" Resume Assert\r\n",
56+
" End If\r\n",
57+
"End Sub\r\n"
5858
);
5959

6060
public void NewTestMethod()
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
using System;
2+
using System.Threading;
3+
using Microsoft.Vbe.Interop;
4+
using Microsoft.VisualStudio.TestTools.UnitTesting;
5+
using Moq;
6+
using Rubberduck.Parsing;
7+
using Rubberduck.Parsing.VBA;
8+
using Rubberduck.UI.Command;
9+
using Rubberduck.UnitTesting;
10+
using Rubberduck.VBEditor.Extensions;
11+
using Rubberduck.VBEditor.VBEHost;
12+
using RubberduckTests.Mocks;
13+
14+
namespace RubberduckTests.Commands
15+
{
16+
[TestClass]
17+
public class AddTestMethodCommandTests
18+
{
19+
[TestMethod]
20+
public void AddsTest()
21+
{
22+
var input =
23+
@"Option Explicit
24+
Option Private Module
25+
26+
27+
'@TestModule
28+
Private Assert As Object
29+
{0}";
30+
31+
var builder = new MockVbeBuilder();
32+
VBComponent component;
33+
var vbe = builder.BuildFromSingleStandardModule(string.Format(input, string.Empty), out component);
34+
var mockHost = new Mock<IHostApplication>();
35+
mockHost.SetupAllProperties();
36+
var parser = MockParser.Create(vbe.Object, new RubberduckParserState(new Mock<ISinks>().Object));
37+
38+
parser.Parse(new CancellationTokenSource());
39+
if (parser.State.Status >= ParserState.Error)
40+
{
41+
Assert.Inconclusive("Parser Error");
42+
}
43+
44+
var newTestMethodCommand = new Mock<NewTestMethodCommand>(vbe.Object, parser.State);
45+
var addTestMethodCommand = new AddTestMethodCommand(vbe.Object, parser.State, newTestMethodCommand.Object);
46+
47+
addTestMethodCommand.Execute(null);
48+
49+
Assert.AreEqual(
50+
string.Format(input,
51+
NewTestMethodCommand.TestMethodTemplate.Replace(NewTestMethodCommand.NamePlaceholder, "TestMethod1")) +
52+
Environment.NewLine, vbe.Object.ActiveCodePane.CodeModule.Lines());
53+
}
54+
55+
[TestMethod]
56+
public void AddsExpectedErrorTest()
57+
{
58+
var input =
59+
@"Option Explicit
60+
Option Private Module
61+
62+
63+
'@TestModule
64+
Private Assert As Object
65+
{0}";
66+
67+
var builder = new MockVbeBuilder();
68+
VBComponent component;
69+
var vbe = builder.BuildFromSingleStandardModule(string.Format(input, string.Empty), out component);
70+
var mockHost = new Mock<IHostApplication>();
71+
mockHost.SetupAllProperties();
72+
var parser = MockParser.Create(vbe.Object, new RubberduckParserState(new Mock<ISinks>().Object));
73+
74+
parser.Parse(new CancellationTokenSource());
75+
if (parser.State.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }
76+
77+
var newTestMethodCommand = new Mock<NewTestMethodCommand>(vbe.Object, parser.State);
78+
var addTestMethodCommand = new AddTestMethodExpectedErrorCommand(vbe.Object, parser.State, newTestMethodCommand.Object);
79+
80+
addTestMethodCommand.Execute(null);
81+
82+
Assert.AreEqual(
83+
string.Format(input,
84+
NewTestMethodCommand.TestMethodExpectedErrorTemplate.Replace(NewTestMethodCommand.NamePlaceholder,
85+
"TestMethod1")) + Environment.NewLine, vbe.Object.ActiveCodePane.CodeModule.Lines());
86+
}
87+
}
88+
}

RubberduckTests/RubberduckTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686
<Compile Include="Binding\SimpleNameDefaultBindingTests.cs" />
8787
<Compile Include="Binding\SimpleNameTypeBindingTests.cs" />
8888
<Compile Include="CodeExplorer\CodeExplorerTests.cs" />
89+
<Compile Include="Commands\AddTestMethodCommandTests.cs" />
8990
<Compile Include="ComponentTypeExtensionTests.cs" />
9091
<Compile Include="ConfigurationTests.cs" />
9192
<Compile Include="FindCommands\FindAllImplementationsTests.cs" />

0 commit comments

Comments
 (0)