Skip to content

Commit

Permalink
Merge pull request #2246 from ThunderFrame/next
Browse files Browse the repository at this point in the history
Make test for Class event procedures a case-insensitive test
  • Loading branch information
retailcoder committed Sep 20, 2016
2 parents 81a62a0 + cfebc7a commit 39273ba
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 1 deletion.
2 changes: 1 addition & 1 deletion RetailCoder.VBE/Common/DeclarationExtensions.cs
Expand Up @@ -295,7 +295,7 @@ public static IEnumerable<Declaration> FindBuiltInEventHandlers(this IEnumerable
var classModuleHandlers = declarationList.Where(item =>
item.DeclarationType == DeclarationType.Procedure &&
item.ParentDeclaration.DeclarationType == DeclarationType.ClassModule &&
(item.IdentifierName == "Class_Initialize" || item.IdentifierName == "Class_Terminate"));
(item.IdentifierName.Equals("Class_Initialize", StringComparison.InvariantCultureIgnoreCase) || item.IdentifierName.Equals("Class_Terminate", StringComparison.InvariantCultureIgnoreCase)));

var handlers = declarationList.Where(declaration => !declaration.IsBuiltIn
&& declaration.DeclarationType == DeclarationType.Procedure
Expand Down
85 changes: 85 additions & 0 deletions RubberduckTests/Inspections/ProcedureNotUsedInspectionTests.cs
Expand Up @@ -224,6 +224,91 @@ public void ProcedureNotUsed_NoResultForClassInitialize()
Assert.AreEqual(0, inspectionResults.Count());
}

[TestMethod]
[TestCategory("Inspections")]
public void ProcedureNotUsed_NoResultForCasedClassInitialize()
{
//Input
const string inputCode =
@"Private Sub class_initialize()
End Sub";

//Arrange
var builder = new MockVbeBuilder();
var vbe = builder.ProjectBuilder("TestProject", vbext_ProjectProtection.vbext_pp_none)
.AddComponent("TestClass", vbext_ComponentType.vbext_ct_ClassModule, inputCode)
.MockVbeBuilder().Build();

var mockHost = new Mock<IHostApplication>();
mockHost.SetupAllProperties();
var parser = MockParser.Create(vbe.Object, new RubberduckParserState(new Mock<ISinks>().Object));

parser.Parse(new CancellationTokenSource());
if (parser.State.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }

var inspection = new ProcedureNotUsedInspection(parser.State);
var inspectionResults = inspection.GetInspectionResults();

Assert.AreEqual(0, inspectionResults.Count());
}

[TestMethod]
[TestCategory("Inspections")]
public void ProcedureNotUsed_NoResultForClassTerminate()
{
//Input
const string inputCode =
@"Private Sub Class_Terminate()
End Sub";

//Arrange
var builder = new MockVbeBuilder();
var vbe = builder.ProjectBuilder("TestProject", vbext_ProjectProtection.vbext_pp_none)
.AddComponent("TestClass", vbext_ComponentType.vbext_ct_ClassModule, inputCode)
.MockVbeBuilder().Build();

var mockHost = new Mock<IHostApplication>();
mockHost.SetupAllProperties();
var parser = MockParser.Create(vbe.Object, new RubberduckParserState(new Mock<ISinks>().Object));

parser.Parse(new CancellationTokenSource());
if (parser.State.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }

var inspection = new ProcedureNotUsedInspection(parser.State);
var inspectionResults = inspection.GetInspectionResults();

Assert.AreEqual(0, inspectionResults.Count());
}

[TestMethod]
[TestCategory("Inspections")]
public void ProcedureNotUsed_NoResultForCasedClassTerminate()
{
//Input
const string inputCode =
@"Private Sub class_terminate()
End Sub";

//Arrange
var builder = new MockVbeBuilder();
var vbe = builder.ProjectBuilder("TestProject", vbext_ProjectProtection.vbext_pp_none)
.AddComponent("TestClass", vbext_ComponentType.vbext_ct_ClassModule, inputCode)
.MockVbeBuilder().Build();

var mockHost = new Mock<IHostApplication>();
mockHost.SetupAllProperties();
var parser = MockParser.Create(vbe.Object, new RubberduckParserState(new Mock<ISinks>().Object));

parser.Parse(new CancellationTokenSource());
if (parser.State.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }

var inspection = new ProcedureNotUsedInspection(parser.State);
var inspectionResults = inspection.GetInspectionResults();

Assert.AreEqual(0, inspectionResults.Count());
}


[TestMethod]
[TestCategory("Inspections")]
public void ProcedureNotUsed_Ignored_DoesNotReturnResult()
Expand Down

0 comments on commit 39273ba

Please sign in to comment.