From 74d31e7dda14e9f036d8ee189108708dae2148be Mon Sep 17 00:00:00 2001 From: hosch250 Date: Fri, 29 Jan 2016 23:19:00 -0600 Subject: [PATCH 1/2] Several refactorings are done. Others are just search/replaces to facilitate some manual things later. --- .../AssignedByValParameterInspectionTests.cs | 28 +- .../ConstantNotUsedInspectionTests.cs | 24 +- .../DefaultProjectNameInspectionTests.cs | 12 +- .../ImplicitByRefParameterInspectionTests.cs | 36 +- .../ImplicitPublicMemberInspectionTests.cs | 28 +- ...mplicitVariantReturnTypeInspectionTests.cs | 32 +- .../MultilineParameterInspectionTests.cs | 24 +- .../MultipleDeclarationsInspectionTests.cs | 36 +- .../NonReturningFunctionInspectionTests.cs | 32 +- .../ObsoleteCallStatementInspectionTests.cs | 24 +- .../ObsoleteCommentSyntaxInspectionTests.cs | 28 +- .../ObsoleteGlobalInspectionTests.cs | 24 +- .../ObsoleteLetStatementInspectionTests.cs | 24 +- .../OptionExplicitInspectionTests.cs | 24 +- .../ParameterCanBeByValInspectionTests.cs | 36 +- .../ParameterNotUsedInspectionTests.cs | 392 ++++++------ .../ProcedureNotUsedInspectionTests.cs | 519 +++++++-------- .../VariableIsNeverAssignedInspectionTests.cs | 331 +++++----- .../VariableNeverUsedInspectionTests.cs | 351 ++++++----- .../VariableTypeNotDeclaredInspectionTests.cs | 590 +++++++++--------- 20 files changed, 1364 insertions(+), 1231 deletions(-) diff --git a/RubberduckTests/Inspections/AssignedByValParameterInspectionTests.cs b/RubberduckTests/Inspections/AssignedByValParameterInspectionTests.cs index 758f6baddc..da90ba4f69 100644 --- a/RubberduckTests/Inspections/AssignedByValParameterInspectionTests.cs +++ b/RubberduckTests/Inspections/AssignedByValParameterInspectionTests.cs @@ -33,8 +33,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new AssignedByValParameterInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new AssignedByValParameterInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -58,8 +58,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new AssignedByValParameterInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new AssignedByValParameterInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -84,8 +84,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new AssignedByValParameterInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new AssignedByValParameterInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(2, inspectionResults.Count()); // } @@ -108,8 +108,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new AssignedByValParameterInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new AssignedByValParameterInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(0, inspectionResults.Count()); // } @@ -136,8 +136,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new AssignedByValParameterInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new AssignedByValParameterInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -167,8 +167,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new AssignedByValParameterInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new AssignedByValParameterInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // inspectionResults.First().QuickFixes.First().Fix(); @@ -178,7 +178,7 @@ namespace RubberduckTests.Inspections // [TestMethod] // public void InspectionType() // { -// var inspection = new AssignedByValParameterInspection(); +// var inspection = new AssignedByValParameterInspection(parseResult.State); // Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); // } @@ -186,7 +186,7 @@ namespace RubberduckTests.Inspections // public void InspectionName() // { // const string inspectionName = "AssignedByValParameterInspection"; -// var inspection = new AssignedByValParameterInspection(); +// var inspection = new AssignedByValParameterInspection(parseResult.State); // Assert.AreEqual(inspectionName, inspection.Name); // } diff --git a/RubberduckTests/Inspections/ConstantNotUsedInspectionTests.cs b/RubberduckTests/Inspections/ConstantNotUsedInspectionTests.cs index accc7cac19..17ede4fe01 100644 --- a/RubberduckTests/Inspections/ConstantNotUsedInspectionTests.cs +++ b/RubberduckTests/Inspections/ConstantNotUsedInspectionTests.cs @@ -33,8 +33,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ConstantNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ConstantNotUsedInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -59,8 +59,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ConstantNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ConstantNotUsedInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(2, inspectionResults.Count()); // } @@ -88,8 +88,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ConstantNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ConstantNotUsedInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(0, inspectionResults.Count()); // } @@ -119,8 +119,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ConstantNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ConstantNotUsedInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -149,8 +149,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ConstantNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ConstantNotUsedInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // inspectionResults.First().QuickFixes.First().Fix(); @@ -160,7 +160,7 @@ namespace RubberduckTests.Inspections // [TestMethod] // public void InspectionType() // { -// var inspection = new ConstantNotUsedInspection(); +// var inspection = new ConstantNotUsedInspection(parseResult.State); // Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); // } @@ -168,7 +168,7 @@ namespace RubberduckTests.Inspections // public void InspectionName() // { // const string inspectionName = "ConstantNotUsedInspection"; -// var inspection = new ConstantNotUsedInspection(); +// var inspection = new ConstantNotUsedInspection(parseResult.State); // Assert.AreEqual(inspectionName, inspection.Name); // } diff --git a/RubberduckTests/Inspections/DefaultProjectNameInspectionTests.cs b/RubberduckTests/Inspections/DefaultProjectNameInspectionTests.cs index f1dcb561c0..24852374ea 100644 --- a/RubberduckTests/Inspections/DefaultProjectNameInspectionTests.cs +++ b/RubberduckTests/Inspections/DefaultProjectNameInspectionTests.cs @@ -29,8 +29,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); - // var inspection = new DefaultProjectNameInspection(); - // var inspectionResults = inspection.GetInspectionResults(parseResult); + // var inspection = new DefaultProjectNameInspection(parseResult.State); + // var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -51,8 +51,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); - // var inspection = new DefaultProjectNameInspection(); - // var inspectionResults = inspection.GetInspectionResults(parseResult); + // var inspection = new DefaultProjectNameInspection(parseResult.State); + // var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(0, inspectionResults.Count()); // } @@ -60,7 +60,7 @@ namespace RubberduckTests.Inspections // [TestMethod] // public void InspectionType() // { - // var inspection = new DefaultProjectNameInspection(); + // var inspection = new DefaultProjectNameInspection(parseResult.State); // Assert.AreEqual(CodeInspectionType.MaintainabilityAndReadabilityIssues, inspection.InspectionType); // } @@ -68,7 +68,7 @@ namespace RubberduckTests.Inspections // public void InspectionName() // { // const string inspectionName = "DefaultProjectNameInspection"; - // var inspection = new DefaultProjectNameInspection(); + // var inspection = new DefaultProjectNameInspection(parseResult.State); // Assert.AreEqual(inspectionName, inspection.Name); // } diff --git a/RubberduckTests/Inspections/ImplicitByRefParameterInspectionTests.cs b/RubberduckTests/Inspections/ImplicitByRefParameterInspectionTests.cs index 187de45454..be85774789 100644 --- a/RubberduckTests/Inspections/ImplicitByRefParameterInspectionTests.cs +++ b/RubberduckTests/Inspections/ImplicitByRefParameterInspectionTests.cs @@ -32,8 +32,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitByRefParameterInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitByRefParameterInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -56,8 +56,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitByRefParameterInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitByRefParameterInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(2, inspectionResults.Count()); // } @@ -80,8 +80,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitByRefParameterInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitByRefParameterInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(0, inspectionResults.Count()); // } @@ -104,8 +104,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitByRefParameterInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitByRefParameterInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(0, inspectionResults.Count()); // } @@ -128,8 +128,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitByRefParameterInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitByRefParameterInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -159,8 +159,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitByRefParameterInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitByRefParameterInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -188,8 +188,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitByRefParameterInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitByRefParameterInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // inspectionResults.First().QuickFixes.First().Fix(); @@ -214,8 +214,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitByRefParameterInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitByRefParameterInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.First().QuickFixes.Count()); // } @@ -223,7 +223,7 @@ namespace RubberduckTests.Inspections // [TestMethod] // public void InspectionType() // { -// var inspection = new ImplicitByRefParameterInspection(); +// var inspection = new ImplicitByRefParameterInspection(parseResult.State); // Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); // } @@ -231,7 +231,7 @@ namespace RubberduckTests.Inspections // public void InspectionName() // { // const string inspectionName = "ImplicitByRefParameterInspection"; -// var inspection = new ImplicitByRefParameterInspection(); +// var inspection = new ImplicitByRefParameterInspection(parseResult.State); // Assert.AreEqual(inspectionName, inspection.Name); // } diff --git a/RubberduckTests/Inspections/ImplicitPublicMemberInspectionTests.cs b/RubberduckTests/Inspections/ImplicitPublicMemberInspectionTests.cs index 0d5c337d54..8ee64df4f7 100644 --- a/RubberduckTests/Inspections/ImplicitPublicMemberInspectionTests.cs +++ b/RubberduckTests/Inspections/ImplicitPublicMemberInspectionTests.cs @@ -32,8 +32,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitPublicMemberInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitPublicMemberInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -57,8 +57,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitPublicMemberInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitPublicMemberInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -84,8 +84,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitPublicMemberInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitPublicMemberInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(2, inspectionResults.Count()); // } @@ -108,8 +108,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitPublicMemberInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitPublicMemberInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(0, inspectionResults.Count()); // } @@ -135,8 +135,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitPublicMemberInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitPublicMemberInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -164,8 +164,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitPublicMemberInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitPublicMemberInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // inspectionResults.First().QuickFixes.First().Fix(); @@ -175,7 +175,7 @@ namespace RubberduckTests.Inspections // [TestMethod] // public void InspectionType() // { -// var inspection = new ImplicitPublicMemberInspection(); +// var inspection = new ImplicitPublicMemberInspection(parseResult.State); // Assert.AreEqual(CodeInspectionType.MaintainabilityAndReadabilityIssues, inspection.InspectionType); // } @@ -183,7 +183,7 @@ namespace RubberduckTests.Inspections // public void InspectionName() // { // const string inspectionName = "ImplicitPublicMemberInspection"; -// var inspection = new ImplicitPublicMemberInspection(); +// var inspection = new ImplicitPublicMemberInspection(parseResult.State); // Assert.AreEqual(inspectionName, inspection.Name); // } diff --git a/RubberduckTests/Inspections/ImplicitVariantReturnTypeInspectionTests.cs b/RubberduckTests/Inspections/ImplicitVariantReturnTypeInspectionTests.cs index 7949528a03..5463e7d255 100644 --- a/RubberduckTests/Inspections/ImplicitVariantReturnTypeInspectionTests.cs +++ b/RubberduckTests/Inspections/ImplicitVariantReturnTypeInspectionTests.cs @@ -32,8 +32,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitVariantReturnTypeInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -56,8 +56,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitVariantReturnTypeInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -83,8 +83,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitVariantReturnTypeInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(2, inspectionResults.Count()); // } @@ -107,8 +107,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitVariantReturnTypeInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(0, inspectionResults.Count()); // } @@ -134,8 +134,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitVariantReturnTypeInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -163,8 +163,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitVariantReturnTypeInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // inspectionResults.First().QuickFixes.First().Fix(); @@ -194,8 +194,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ImplicitVariantReturnTypeInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // inspectionResults.First().QuickFixes.First().Fix(); @@ -205,7 +205,7 @@ namespace RubberduckTests.Inspections // [TestMethod] // public void InspectionType() // { -// var inspection = new ImplicitVariantReturnTypeInspection(); +// var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); // Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); // } @@ -213,7 +213,7 @@ namespace RubberduckTests.Inspections // public void InspectionName() // { // const string inspectionName = "ImplicitVariantReturnTypeInspection"; -// var inspection = new ImplicitVariantReturnTypeInspection(); +// var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); // Assert.AreEqual(inspectionName, inspection.Name); // } diff --git a/RubberduckTests/Inspections/MultilineParameterInspectionTests.cs b/RubberduckTests/Inspections/MultilineParameterInspectionTests.cs index f1353d9886..84ded241ec 100644 --- a/RubberduckTests/Inspections/MultilineParameterInspectionTests.cs +++ b/RubberduckTests/Inspections/MultilineParameterInspectionTests.cs @@ -35,8 +35,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new MultilineParameterInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new MultilineParameterInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -59,8 +59,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new MultilineParameterInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new MultilineParameterInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(0, inspectionResults.Count()); // } @@ -91,8 +91,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new MultilineParameterInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new MultilineParameterInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(2, inspectionResults.Count()); // } @@ -118,8 +118,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new MultilineParameterInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new MultilineParameterInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -152,8 +152,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new MultilineParameterInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new MultilineParameterInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // inspectionResults.First().QuickFixes.First().Fix(); @@ -163,7 +163,7 @@ namespace RubberduckTests.Inspections // [TestMethod] // public void InspectionType() // { -// var inspection = new MultilineParameterInspection(); +// var inspection = new MultilineParameterInspection(parseResult.State); // Assert.AreEqual(CodeInspectionType.MaintainabilityAndReadabilityIssues, inspection.InspectionType); // } @@ -171,7 +171,7 @@ namespace RubberduckTests.Inspections // public void InspectionName() // { // const string inspectionName = "MultilineParameterInspection"; -// var inspection = new MultilineParameterInspection(); +// var inspection = new MultilineParameterInspection(parseResult.State); // Assert.AreEqual(inspectionName, inspection.Name); // } diff --git a/RubberduckTests/Inspections/MultipleDeclarationsInspectionTests.cs b/RubberduckTests/Inspections/MultipleDeclarationsInspectionTests.cs index d925be6d0b..6ce5e90ae8 100644 --- a/RubberduckTests/Inspections/MultipleDeclarationsInspectionTests.cs +++ b/RubberduckTests/Inspections/MultipleDeclarationsInspectionTests.cs @@ -33,8 +33,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new MultipleDeclarationsInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new MultipleDeclarationsInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -58,8 +58,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new MultipleDeclarationsInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new MultipleDeclarationsInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -83,8 +83,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new MultipleDeclarationsInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new MultipleDeclarationsInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -109,8 +109,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new MultipleDeclarationsInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new MultipleDeclarationsInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(2, inspectionResults.Count()); // } @@ -135,8 +135,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new MultipleDeclarationsInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new MultipleDeclarationsInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -168,8 +168,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new MultipleDeclarationsInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new MultipleDeclarationsInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // inspectionResults.First().QuickFixes.First().Fix(); @@ -203,8 +203,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new MultipleDeclarationsInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new MultipleDeclarationsInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // inspectionResults.First().QuickFixes.First().Fix(); @@ -238,8 +238,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new MultipleDeclarationsInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new MultipleDeclarationsInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // inspectionResults.First().QuickFixes.First().Fix(); @@ -249,7 +249,7 @@ namespace RubberduckTests.Inspections // [TestMethod] // public void InspectionType() // { -// var inspection = new MultipleDeclarationsInspection(); +// var inspection = new MultipleDeclarationsInspection(parseResult.State); // Assert.AreEqual(CodeInspectionType.MaintainabilityAndReadabilityIssues, inspection.InspectionType); // } @@ -257,7 +257,7 @@ namespace RubberduckTests.Inspections // public void InspectionName() // { // const string inspectionName = "MultipleDeclarationsInspection"; -// var inspection = new MultipleDeclarationsInspection(); +// var inspection = new MultipleDeclarationsInspection(parseResult.State); // Assert.AreEqual(inspectionName, inspection.Name); // } diff --git a/RubberduckTests/Inspections/NonReturningFunctionInspectionTests.cs b/RubberduckTests/Inspections/NonReturningFunctionInspectionTests.cs index d5104701c9..f0b7e3c48f 100644 --- a/RubberduckTests/Inspections/NonReturningFunctionInspectionTests.cs +++ b/RubberduckTests/Inspections/NonReturningFunctionInspectionTests.cs @@ -32,8 +32,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new NonReturningFunctionInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new NonReturningFunctionInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -59,8 +59,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new NonReturningFunctionInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new NonReturningFunctionInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(2, inspectionResults.Count()); // } @@ -84,8 +84,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new NonReturningFunctionInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new NonReturningFunctionInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(0, inspectionResults.Count()); // } @@ -112,8 +112,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new NonReturningFunctionInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new NonReturningFunctionInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -143,8 +143,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new NonReturningFunctionInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new NonReturningFunctionInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -172,8 +172,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new NonReturningFunctionInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new NonReturningFunctionInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // inspectionResults.First().QuickFixes.First().Fix(); @@ -205,8 +205,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new NonReturningFunctionInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new NonReturningFunctionInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(0, inspectionResults.First().QuickFixes.Count()); // } @@ -214,7 +214,7 @@ namespace RubberduckTests.Inspections // [TestMethod] // public void InspectionType() // { -// var inspection = new NonReturningFunctionInspection(); +// var inspection = new NonReturningFunctionInspection(parseResult.State); // Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); // } @@ -222,7 +222,7 @@ namespace RubberduckTests.Inspections // public void InspectionName() // { // const string inspectionName = "NonReturningFunctionInspection"; -// var inspection = new NonReturningFunctionInspection(); +// var inspection = new NonReturningFunctionInspection(parseResult.State); // Assert.AreEqual(inspectionName, inspection.Name); // } diff --git a/RubberduckTests/Inspections/ObsoleteCallStatementInspectionTests.cs b/RubberduckTests/Inspections/ObsoleteCallStatementInspectionTests.cs index f8a7e6fcac..aeaf33a01e 100644 --- a/RubberduckTests/Inspections/ObsoleteCallStatementInspectionTests.cs +++ b/RubberduckTests/Inspections/ObsoleteCallStatementInspectionTests.cs @@ -33,8 +33,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteCallStatementInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteCallStatementInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -58,8 +58,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteCallStatementInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteCallStatementInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(0, inspectionResults.Count()); // } @@ -87,8 +87,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteCallStatementInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteCallStatementInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(2, inspectionResults.Count()); // } @@ -116,8 +116,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteCallStatementInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteCallStatementInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -155,8 +155,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteCallStatementInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteCallStatementInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // foreach (var inspectionResult in inspectionResults) // { @@ -170,7 +170,7 @@ namespace RubberduckTests.Inspections // [TestMethod] // public void InspectionType() // { -// var inspection = new ObsoleteCallStatementInspection(); +// var inspection = new ObsoleteCallStatementInspection(parseResult.State); // Assert.AreEqual(CodeInspectionType.LanguageOpportunities, inspection.InspectionType); // } @@ -178,7 +178,7 @@ namespace RubberduckTests.Inspections // public void InspectionName() // { // const string inspectionName = "ObsoleteCallStatementInspection"; -// var inspection = new ObsoleteCallStatementInspection(); +// var inspection = new ObsoleteCallStatementInspection(parseResult.State); // Assert.AreEqual(inspectionName, inspection.Name); // } diff --git a/RubberduckTests/Inspections/ObsoleteCommentSyntaxInspectionTests.cs b/RubberduckTests/Inspections/ObsoleteCommentSyntaxInspectionTests.cs index 18a6a87013..f3974acd55 100644 --- a/RubberduckTests/Inspections/ObsoleteCommentSyntaxInspectionTests.cs +++ b/RubberduckTests/Inspections/ObsoleteCommentSyntaxInspectionTests.cs @@ -30,8 +30,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteCommentSyntaxInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -52,8 +52,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteCommentSyntaxInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(0, inspectionResults.Count()); // } @@ -76,8 +76,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteCommentSyntaxInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(2, inspectionResults.Count()); // } @@ -100,8 +100,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteCommentSyntaxInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -127,8 +127,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteCommentSyntaxInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // inspectionResults.First().QuickFixes.First().Fix(); @@ -156,8 +156,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteCommentSyntaxInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // inspectionResults.First().QuickFixes.ElementAt(1).Fix(); @@ -167,7 +167,7 @@ namespace RubberduckTests.Inspections // [TestMethod] // public void InspectionType() // { -// var inspection = new ObsoleteCommentSyntaxInspection(); +// var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); // Assert.AreEqual(CodeInspectionType.LanguageOpportunities, inspection.InspectionType); // } @@ -175,7 +175,7 @@ namespace RubberduckTests.Inspections // public void InspectionName() // { // const string inspectionName = "ObsoleteCommentSyntaxInspection"; -// var inspection = new ObsoleteCommentSyntaxInspection(); +// var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); // Assert.AreEqual(inspectionName, inspection.Name); // } diff --git a/RubberduckTests/Inspections/ObsoleteGlobalInspectionTests.cs b/RubberduckTests/Inspections/ObsoleteGlobalInspectionTests.cs index d9392f2bad..af840bccc5 100644 --- a/RubberduckTests/Inspections/ObsoleteGlobalInspectionTests.cs +++ b/RubberduckTests/Inspections/ObsoleteGlobalInspectionTests.cs @@ -31,8 +31,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteGlobalInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteGlobalInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -55,8 +55,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteGlobalInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteGlobalInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(2, inspectionResults.Count()); // } @@ -78,8 +78,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteGlobalInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteGlobalInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(0, inspectionResults.Count()); // } @@ -102,8 +102,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteGlobalInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteGlobalInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -129,8 +129,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteGlobalInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteGlobalInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // inspectionResults.First().QuickFixes.First().Fix(); @@ -140,7 +140,7 @@ namespace RubberduckTests.Inspections // [TestMethod] // public void InspectionType() // { -// var inspection = new ObsoleteGlobalInspection(); +// var inspection = new ObsoleteGlobalInspection(parseResult.State); // Assert.AreEqual(CodeInspectionType.LanguageOpportunities, inspection.InspectionType); // } @@ -148,7 +148,7 @@ namespace RubberduckTests.Inspections // public void InspectionName() // { // const string inspectionName = "ObsoleteGlobalInspection"; -// var inspection = new ObsoleteGlobalInspection(); +// var inspection = new ObsoleteGlobalInspection(parseResult.State); // Assert.AreEqual(inspectionName, inspection.Name); // } diff --git a/RubberduckTests/Inspections/ObsoleteLetStatementInspectionTests.cs b/RubberduckTests/Inspections/ObsoleteLetStatementInspectionTests.cs index e69b5e5968..8116991e0f 100644 --- a/RubberduckTests/Inspections/ObsoleteLetStatementInspectionTests.cs +++ b/RubberduckTests/Inspections/ObsoleteLetStatementInspectionTests.cs @@ -36,8 +36,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteLetStatementInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteLetStatementInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -65,8 +65,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteLetStatementInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteLetStatementInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(2, inspectionResults.Count()); // } @@ -93,8 +93,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteLetStatementInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteLetStatementInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(0, inspectionResults.Count()); // } @@ -122,8 +122,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteLetStatementInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteLetStatementInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -159,8 +159,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ObsoleteLetStatementInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ObsoleteLetStatementInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // inspectionResults.First().QuickFixes.First().Fix(); @@ -170,7 +170,7 @@ namespace RubberduckTests.Inspections // [TestMethod] // public void InspectionType() // { -// var inspection = new ObsoleteLetStatementInspection(); +// var inspection = new ObsoleteLetStatementInspection(parseResult.State); // Assert.AreEqual(CodeInspectionType.LanguageOpportunities, inspection.InspectionType); // } @@ -178,7 +178,7 @@ namespace RubberduckTests.Inspections // public void InspectionName() // { // const string inspectionName = "ObsoleteLetStatementInspection"; -// var inspection = new ObsoleteLetStatementInspection(); +// var inspection = new ObsoleteLetStatementInspection(parseResult.State); // Assert.AreEqual(inspectionName, inspection.Name); // } diff --git a/RubberduckTests/Inspections/OptionExplicitInspectionTests.cs b/RubberduckTests/Inspections/OptionExplicitInspectionTests.cs index 76c31460c3..f0f95785a3 100644 --- a/RubberduckTests/Inspections/OptionExplicitInspectionTests.cs +++ b/RubberduckTests/Inspections/OptionExplicitInspectionTests.cs @@ -30,8 +30,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new OptionExplicitInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new OptionExplicitInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -52,8 +52,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new OptionExplicitInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new OptionExplicitInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(0, inspectionResults.Count()); // } @@ -75,8 +75,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new OptionExplicitInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new OptionExplicitInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(2, inspectionResults.Count()); // } @@ -99,8 +99,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new OptionExplicitInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new OptionExplicitInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -126,8 +126,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new OptionExplicitInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new OptionExplicitInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // inspectionResults.First().QuickFixes.First().Fix(); @@ -137,7 +137,7 @@ namespace RubberduckTests.Inspections // [TestMethod] // public void InspectionType() // { -// var inspection = new OptionExplicitInspection(); +// var inspection = new OptionExplicitInspection(parseResult.State); // Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); // } @@ -145,7 +145,7 @@ namespace RubberduckTests.Inspections // public void InspectionName() // { // const string inspectionName = "OptionExplicitInspection"; -// var inspection = new OptionExplicitInspection(); +// var inspection = new OptionExplicitInspection(parseResult.State); // Assert.AreEqual(inspectionName, inspection.Name); // } diff --git a/RubberduckTests/Inspections/ParameterCanBeByValInspectionTests.cs b/RubberduckTests/Inspections/ParameterCanBeByValInspectionTests.cs index 20ee133656..1961081a0b 100644 --- a/RubberduckTests/Inspections/ParameterCanBeByValInspectionTests.cs +++ b/RubberduckTests/Inspections/ParameterCanBeByValInspectionTests.cs @@ -32,8 +32,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ParameterCanBeByValInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ParameterCanBeByValInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -56,8 +56,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ParameterCanBeByValInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ParameterCanBeByValInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -80,8 +80,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ParameterCanBeByValInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ParameterCanBeByValInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(2, inspectionResults.Count()); // } @@ -104,8 +104,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ParameterCanBeByValInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ParameterCanBeByValInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(0, inspectionResults.Count()); // } @@ -129,8 +129,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ParameterCanBeByValInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ParameterCanBeByValInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(0, inspectionResults.Count()); // } @@ -153,8 +153,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ParameterCanBeByValInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); +// var inspection = new ParameterCanBeByValInspection(parseResult.State); +// var inspectionResults = inspection.GetInspectionResults(); // Assert.AreEqual(1, inspectionResults.Count()); // } @@ -182,8 +182,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ParameterCanBeByValInspection(); -// inspection.GetInspectionResults(parseResult).First().QuickFixes.First().Fix(); +// var inspection = new ParameterCanBeByValInspection(parseResult.State); +// inspection.GetInspectionResults().First().QuickFixes.First().Fix(); // Assert.AreEqual(expectedCode, module.Lines()); // } @@ -211,8 +211,8 @@ namespace RubberduckTests.Inspections // mockHost.SetupAllProperties(); // var parseResult = new RubberduckParser().Parse(project); -// var inspection = new ParameterCanBeByValInspection(); -// inspection.GetInspectionResults(parseResult).First().QuickFixes.First().Fix(); +// var inspection = new ParameterCanBeByValInspection(parseResult.State); +// inspection.GetInspectionResults().First().QuickFixes.First().Fix(); // Assert.AreEqual(expectedCode, module.Lines()); // } @@ -220,7 +220,7 @@ namespace RubberduckTests.Inspections // [TestMethod] // public void InspectionType() // { -// var inspection = new ParameterCanBeByValInspection(); +// var inspection = new ParameterCanBeByValInspection(parseResult.State); // Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); // } @@ -228,7 +228,7 @@ namespace RubberduckTests.Inspections // public void InspectionName() // { // const string inspectionName = "ParameterCanBeByValInspection"; -// var inspection = new ParameterCanBeByValInspection(); +// var inspection = new ParameterCanBeByValInspection(parseResult.State); // Assert.AreEqual(inspectionName, inspection.Name); // } diff --git a/RubberduckTests/Inspections/ParameterNotUsedInspectionTests.cs b/RubberduckTests/Inspections/ParameterNotUsedInspectionTests.cs index 114d6ba1ed..5211d4dbfb 100644 --- a/RubberduckTests/Inspections/ParameterNotUsedInspectionTests.cs +++ b/RubberduckTests/Inspections/ParameterNotUsedInspectionTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -6,191 +7,216 @@ using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.Extensions; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] -// public class ParameterNotUsedInspectionTests -// { -// [TestMethod] -// public void ParameterNotUsed_ReturnsResult() -// { -// const string inputCode = -//@"Private Sub Foo(ByVal arg1 as Integer) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ParameterNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ParameterNotUsed_ReturnsResult_MultipleSubs() -// { -// const string inputCode = -//@"Private Sub Foo(ByVal arg1 as Integer) -//End Sub -// -//Private Sub Goo(ByVal arg1 as Integer) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ParameterNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ParameterUsed_DoesNotReturnResult() -// { -// const string inputCode = -//@"Private Sub Foo(ByVal arg1 as Integer) -// arg1 = 9 -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ParameterNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ParameterNotUsed_ReturnsResult_SomeParamsUsed() -// { -// const string inputCode = -//@"Private Sub Foo(ByVal arg1 as Integer, ByVal arg2 as String) -// arg1 = 9 -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ParameterNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ParameterNotUsed_ReturnsResult_InterfaceImplementation() -// { -// //Input -// const string inputCode1 = -//@"Public Sub DoSomething(ByVal a As Integer) -//End Sub"; -// const string inputCode2 = -//@"Implements IClass1 -// -//Private Sub IClass1_DoSomething(ByVal a As Integer) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("IClass1", vbext_ComponentType.vbext_ct_ClassModule, inputCode1) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode2) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ParameterNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ParameterNotUsed_QuickFixWorks() -// { -// const string inputCode = -//@"Private Sub Foo(ByVal arg1 as Integer) -//End Sub"; - -// const string expectedCode = -//@"Private Sub Foo() -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ParameterNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// inspectionResults.First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void InspectionType() -// { -// var inspection = new ParameterNotUsedInspection(); -// Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); -// } - -// [TestMethod] -// public void InspectionName() -// { -// const string inspectionName = "ParameterNotUsedInspection"; -// var inspection = new ParameterNotUsedInspection(); - -// Assert.AreEqual(inspectionName, inspection.Name); -// } -// } + [TestClass] + public class ParameterNotUsedInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void ParameterNotUsed_ReturnsResult() + { + const string inputCode = +@"Private Sub Foo(ByVal arg1 as Integer) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ParameterNotUsedInspection(vbe.Object, parseResult.State, null); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ParameterNotUsed_ReturnsResult_MultipleSubs() + { + const string inputCode = +@"Private Sub Foo(ByVal arg1 as Integer) +End Sub + +Private Sub Goo(ByVal arg1 as Integer) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ParameterNotUsedInspection(vbe.Object, parseResult.State, null); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void ParameterUsed_DoesNotReturnResult() + { + const string inputCode = +@"Private Sub Foo(ByVal arg1 as Integer) + arg1 = 9 +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ParameterNotUsedInspection(vbe.Object, parseResult.State, null); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void ParameterNotUsed_ReturnsResult_SomeParamsUsed() + { + const string inputCode = +@"Private Sub Foo(ByVal arg1 as Integer, ByVal arg2 as String) + arg1 = 9 +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ParameterNotUsedInspection(vbe.Object, parseResult.State, null); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ParameterNotUsed_ReturnsResult_InterfaceImplementation() + { + //Input + const string inputCode1 = +@"Public Sub DoSomething(ByVal a As Integer) +End Sub"; + const string inputCode2 = +@"Implements IClass1 + +Private Sub IClass1_DoSomething(ByVal a As Integer) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) + .AddComponent("IClass1", vbext_ComponentType.vbext_ct_ClassModule, inputCode1) + .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode2) + .Build(); + var vbe = builder.AddProject(project).Build(); + + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ParameterNotUsedInspection(vbe.Object, parseResult.State, null); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ParameterNotUsed_QuickFixWorks() + { + const string inputCode = +@"Private Sub Foo(ByVal arg1 as Integer) +End Sub"; + + const string expectedCode = +@"Private Sub Foo() +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ParameterNotUsedInspection(vbe.Object, parseResult.State, null); + var inspectionResults = inspection.GetInspectionResults(); + + inspectionResults.First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new ParameterNotUsedInspection(null, null, null); + Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "ParameterNotUsedInspection"; + var inspection = new ParameterNotUsedInspection(null, null, null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file diff --git a/RubberduckTests/Inspections/ProcedureNotUsedInspectionTests.cs b/RubberduckTests/Inspections/ProcedureNotUsedInspectionTests.cs index ed049c3314..c5235011ee 100644 --- a/RubberduckTests/Inspections/ProcedureNotUsedInspectionTests.cs +++ b/RubberduckTests/Inspections/ProcedureNotUsedInspectionTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -6,251 +7,283 @@ using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.Extensions; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] -// public class ProcedureNotUsedInspectionTests -// { -// [TestMethod] -// public void ProcedureNotUsed_ReturnsResult() -// { -// const string inputCode = -//@"Private Sub Foo() -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ProcedureNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ProcedureNotUsed_ReturnsResult_MultipleSubs() -// { -// const string inputCode = -//@"Private Sub Foo() -//End Sub -// -//Private Sub Goo() -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ProcedureNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ProcedureUsed_DoesNotReturnResult() -// { -// const string inputCode = -//@"Private Sub Foo() -// Goo -//End Sub -// -//Private Sub Goo() -// Foo -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ProcedureNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ProcedureNotUsed_ReturnsResult_SomeProceduresUsed() -// { -// const string inputCode = -//@"Private Sub Foo() -//End Sub -// -//Private Sub Goo() -// Foo -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ProcedureNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ProcedureNotUsed_DoesNotReturnResult_InterfaceImplementation() -// { -// //Input -// const string inputCode1 = -//@"Public Sub DoSomething(ByVal a As Integer) -//End Sub"; -// const string inputCode2 = -//@"Implements IClass1 -// -//Private Sub IClass1_DoSomething(ByVal a As Integer) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("IClass1", vbext_ComponentType.vbext_ct_ClassModule, inputCode1) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode2) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ProcedureNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ProcedureNotUsed_DoesNotReturnResult_EventImplementation() -// { -// //Input -// const string inputCode1 = -//@"Public Event Foo(ByVal arg1 As Integer, ByVal arg2 As String)"; -// const string inputCode2 = -//@"Private WithEvents abc As Class1 -// -//Private Sub abc_Foo(ByVal arg1 As Integer, ByVal arg2 As String) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode1) -// .AddComponent("Class2", vbext_ComponentType.vbext_ct_ClassModule, inputCode2) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ProcedureNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ProcedureNotUsed_ReturnsResult_PublicModuleMember() -// { -// //Input -// const string inputCode = -//@"Private Sub Class_Initialize() -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ProcedureNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ProcedureNotUsed_QuickFixWorks() -// { -// const string inputCode = -//@"Private Sub Foo(ByVal arg1 as Integer) -//End Sub"; - -// const string expectedCode = @""; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ProcedureNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// inspectionResults.First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void InspectionType() -// { -// var inspection = new ProcedureNotUsedInspection(); -// Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); -// } - -// [TestMethod] -// public void InspectionName() -// { -// const string inspectionName = "ProcedureNotUsedInspection"; -// var inspection = new ProcedureNotUsedInspection(); - -// Assert.AreEqual(inspectionName, inspection.Name); -// } -// } + [TestClass] + public class ProcedureNotUsedInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void ProcedureNotUsed_ReturnsResult() + { + const string inputCode = +@"Private Sub Foo() +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ProcedureNotUsedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ProcedureNotUsed_ReturnsResult_MultipleSubs() + { + const string inputCode = +@"Private Sub Foo() +End Sub + +Private Sub Goo() +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ProcedureNotUsedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void ProcedureUsed_DoesNotReturnResult() + { + const string inputCode = +@"Private Sub Foo() + Goo +End Sub + +Private Sub Goo() + Foo +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ProcedureNotUsedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void ProcedureNotUsed_ReturnsResult_SomeProceduresUsed() + { + const string inputCode = +@"Private Sub Foo() +End Sub + +Private Sub Goo() + Foo +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ProcedureNotUsedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ProcedureNotUsed_DoesNotReturnResult_InterfaceImplementation() + { + //Input + const string inputCode1 = +@"Public Sub DoSomething(ByVal a As Integer) +End Sub"; + const string inputCode2 = +@"Implements IClass1 + +Private Sub IClass1_DoSomething(ByVal a As Integer) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) + .AddComponent("IClass1", vbext_ComponentType.vbext_ct_ClassModule, inputCode1) + .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode2) + .Build(); + var vbe = builder.AddProject(project).Build(); + + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ProcedureNotUsedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void ProcedureNotUsed_DoesNotReturnResult_EventImplementation() + { + //Input + const string inputCode1 = +@"Public Event Foo(ByVal arg1 As Integer, ByVal arg2 As String)"; + const string inputCode2 = +@"Private WithEvents abc As Class1 + +Private Sub abc_Foo(ByVal arg1 As Integer, ByVal arg2 As String) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) + .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode1) + .AddComponent("Class2", vbext_ComponentType.vbext_ct_ClassModule, inputCode2) + .Build(); + var vbe = builder.AddProject(project).Build(); + + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ProcedureNotUsedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void ProcedureNotUsed_ReturnsResult_PublicModuleMember() + { + //Input + const string inputCode = +@"Private Sub Class_Initialize() +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ProcedureNotUsedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void ProcedureNotUsed_QuickFixWorks() + { + const string inputCode = +@"Private Sub Foo(ByVal arg1 as Integer) +End Sub"; + + const string expectedCode = @""; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ProcedureNotUsedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + inspectionResults.First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new ProcedureNotUsedInspection(null); + Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "ProcedureNotUsedInspection"; + var inspection = new ProcedureNotUsedInspection(null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file diff --git a/RubberduckTests/Inspections/VariableIsNeverAssignedInspectionTests.cs b/RubberduckTests/Inspections/VariableIsNeverAssignedInspectionTests.cs index d02f1d1727..15695e96f1 100644 --- a/RubberduckTests/Inspections/VariableIsNeverAssignedInspectionTests.cs +++ b/RubberduckTests/Inspections/VariableIsNeverAssignedInspectionTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -6,163 +7,183 @@ using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.Extensions; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] -// public class VariableIsNeverAssignedInspectionTests -// { -// [TestMethod] -// public void VariableNotAssigned_ReturnsResult() -// { -// const string inputCode = -//@"Sub Foo() -// Dim var1 As String -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableNotAssignedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void UnassignedVariable_ReturnsResult_MultipleVariables() -// { -// const string inputCode = -//@"Sub Foo() -// Dim var1 As String -// Dim var2 As Date -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableNotAssignedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void UnassignedVariable_DoesNotReturnResult() -// { -// const string inputCode = -//@"Function Foo() As Boolean -// Dim var1 as String -// var1 = ""test"" -//End Function"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableNotAssignedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void UnassignedVariable_ReturnsResult_MultipleVariables_SomeAssigned() -// { -// const string inputCode = -//@"Sub Foo() -// Dim var1 as Integer -// var1 = 8 -// -// Dim var2 as String -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableNotAssignedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void UnassignedVariable_QuickFixWorks() -// { -// const string inputCode = -//@"Sub Foo() -// Dim var1 as Integer -//End Sub"; - -// const string expectedCode = -//@"Sub Foo() -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableNotAssignedInspection(); -// inspection.GetInspectionResults(parseResult).First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void InspectionType() -// { -// var inspection = new VariableNotAssignedInspection(); -// Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); -// } - -// [TestMethod] -// public void InspectionName() -// { -// const string inspectionName = "VariableNotAssignedInspection"; -// var inspection = new VariableNotAssignedInspection(); - -// Assert.AreEqual(inspectionName, inspection.Name); -// } -// } + [TestClass] + public class VariableIsNeverAssignedInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void VariableNotAssigned_ReturnsResult() + { + const string inputCode = +@"Sub Foo() + Dim var1 As String +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableNotAssignedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void UnassignedVariable_ReturnsResult_MultipleVariables() + { + const string inputCode = +@"Sub Foo() + Dim var1 As String + Dim var2 As Date +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableNotAssignedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void UnassignedVariable_DoesNotReturnResult() + { + const string inputCode = +@"Function Foo() As Boolean + Dim var1 as String + var1 = ""test"" +End Function"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableNotAssignedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void UnassignedVariable_ReturnsResult_MultipleVariables_SomeAssigned() + { + const string inputCode = +@"Sub Foo() + Dim var1 as Integer + var1 = 8 + + Dim var2 as String +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableNotAssignedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void UnassignedVariable_QuickFixWorks() + { + const string inputCode = +@"Sub Foo() + Dim var1 as Integer +End Sub"; + + const string expectedCode = +@"Sub Foo() +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableNotAssignedInspection(parseResult.State); + inspection.GetInspectionResults().First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new VariableNotAssignedInspection(null); + Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "VariableNotAssignedInspection"; + var inspection = new VariableNotAssignedInspection(null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file diff --git a/RubberduckTests/Inspections/VariableNeverUsedInspectionTests.cs b/RubberduckTests/Inspections/VariableNeverUsedInspectionTests.cs index 39dbf2f825..6fdf5ef027 100644 --- a/RubberduckTests/Inspections/VariableNeverUsedInspectionTests.cs +++ b/RubberduckTests/Inspections/VariableNeverUsedInspectionTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -6,173 +7,193 @@ using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.Extensions; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] -// public class VariableNeverUsedInspectionTests -// { -// [TestMethod] -// public void VariableNotAssigned_ReturnsResult() -// { -// const string inputCode = -//@"Sub Foo() -// Dim var1 As String -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void UnassignedVariable_ReturnsResult_MultipleVariables() -// { -// const string inputCode = -//@"Sub Foo() -// Dim var1 As String -// Dim var2 As Date -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void UnassignedVariable_DoesNotReturnResult() -// { -// const string inputCode = -//@"Function Foo() As Boolean -// Dim var1 as String -// var1 = ""test"" -// -// Goo var1 -//End Function -// -//Sub Goo(ByVal arg1 As String) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void UnassignedVariable_ReturnsResult_MultipleVariables_SomeAssigned() -// { -// const string inputCode = -//@"Sub Foo() -// Dim var1 as Integer -// var1 = 8 -// -// Dim var2 as String -// -// Goo var1 -//End Sub -// -//Sub Goo(ByVal arg1 As Integer) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableNotUsedInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void UnassignedVariable_ReturnsResult_QuickFixWorks() -// { -// const string inputCode = -//@"Sub Foo() -// Dim var1 As String -//End Sub"; - -// const string expectedCode = -//@"Sub Foo() -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableNotUsedInspection(); -// inspection.GetInspectionResults(parseResult).First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void InspectionType() -// { -// var inspection = new VariableNotUsedInspection(); -// Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); -// } - -// [TestMethod] -// public void InspectionName() -// { -// const string inspectionName = "VariableNotUsedInspection"; -// var inspection = new VariableNotUsedInspection(); - -// Assert.AreEqual(inspectionName, inspection.Name); -// } -// } + [TestClass] + public class VariableNeverUsedInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void VariableNotAssigned_ReturnsResult() + { + const string inputCode = +@"Sub Foo() + Dim var1 As String +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableNotUsedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void UnassignedVariable_ReturnsResult_MultipleVariables() + { + const string inputCode = +@"Sub Foo() + Dim var1 As String + Dim var2 As Date +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableNotUsedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void UnassignedVariable_DoesNotReturnResult() + { + const string inputCode = +@"Function Foo() As Boolean + Dim var1 as String + var1 = ""test"" + + Goo var1 +End Function + +Sub Goo(ByVal arg1 As String) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableNotUsedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void UnassignedVariable_ReturnsResult_MultipleVariables_SomeAssigned() + { + const string inputCode = +@"Sub Foo() + Dim var1 as Integer + var1 = 8 + + Dim var2 as String + + Goo var1 +End Sub + +Sub Goo(ByVal arg1 As Integer) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableNotUsedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void UnassignedVariable_ReturnsResult_QuickFixWorks() + { + const string inputCode = +@"Sub Foo() + Dim var1 As String +End Sub"; + + const string expectedCode = +@"Sub Foo() +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableNotUsedInspection(parseResult.State); + inspection.GetInspectionResults().First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new VariableNotUsedInspection(null); + Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "VariableNotUsedInspection"; + var inspection = new VariableNotUsedInspection(null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file diff --git a/RubberduckTests/Inspections/VariableTypeNotDeclaredInspectionTests.cs b/RubberduckTests/Inspections/VariableTypeNotDeclaredInspectionTests.cs index d912db486a..4881001a86 100644 --- a/RubberduckTests/Inspections/VariableTypeNotDeclaredInspectionTests.cs +++ b/RubberduckTests/Inspections/VariableTypeNotDeclaredInspectionTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -6,287 +7,318 @@ using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.Extensions; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] -// public class VariableTypeNotDeclaredInspectionTests -// { -// [TestMethod] -// public void VariableTypeNotDeclared_ReturnsResult_Parameter() -// { -// const string inputCode = -//@"Sub Foo(arg1) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableTypeNotDeclaredInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void VariableTypeNotDeclared_ReturnsResult_MultipleParams() -// { -// const string inputCode = -//@"Sub Foo(arg1, arg2) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableTypeNotDeclaredInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void VariableTypeNotDeclared_DoesNotReturnResult_Parameter() -// { -// const string inputCode = -//@"Sub Foo(arg1 As Date) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableTypeNotDeclaredInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void VariableTypeNotDeclared_ReturnsResult_SomeTypesNotDeclared_Parameters() -// { -// const string inputCode = -//@"Sub Foo(arg1, arg2 As String) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableTypeNotDeclaredInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void VariableTypeNotDeclared_ReturnsResult_QuickFixWorks_Parameter() -// { -// const string inputCode = -//@"Sub Foo(arg1) -//End Sub"; - -// const string expectedCode = -//@"Sub Foo(arg1 As Variant) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableTypeNotDeclaredInspection(); -// inspection.GetInspectionResults(parseResult).First().QuickFixes.First().Fix(); - -// var actual = module.Lines(); -// Assert.AreEqual(expectedCode, actual); -// } - -// [TestMethod] -// public void VariableTypeNotDeclared_ReturnsResult_Variable() -// { -// const string inputCode = -//@"Sub Foo() -// Dim var1 -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableTypeNotDeclaredInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void VariableTypeNotDeclared_ReturnsResult_MultipleVariables() -// { -// const string inputCode = -//@"Sub Foo() -// Dim var1 -// Dim var2 -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableTypeNotDeclaredInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void VariableTypeNotDeclared_DoesNotReturnResult_Variable() -// { -// const string inputCode = -//@"Sub Foo() -// Dim var1 As Integer -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableTypeNotDeclaredInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void VariableTypeNotDeclared_ReturnsResult_SomeTypesNotDeclared_Variables() -// { -// const string inputCode = -//@"Sub Foo() -// Dim var1 -// Dim var2 As Date -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableTypeNotDeclaredInspection(); -// var inspectionResults = inspection.GetInspectionResults(parseResult); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void VariableTypeNotDeclared_ReturnsResult_QuickFixWorks_Variable() -// { -// const string inputCode = -//@"Sub Foo() -// Dim var1 -//End Sub"; - -// const string expectedCode = -//@"Sub Foo() -// Dim var1 As Variant -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new VariableTypeNotDeclaredInspection(); -// inspection.GetInspectionResults(parseResult).First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void InspectionType() -// { -// var inspection = new VariableTypeNotDeclaredInspection(); -// Assert.AreEqual(CodeInspectionType.LanguageOpportunities, inspection.InspectionType); -// } - -// [TestMethod] -// public void InspectionName() -// { -// const string inspectionName = "VariableTypeNotDeclaredInspection"; -// var inspection = new VariableTypeNotDeclaredInspection(); - -// Assert.AreEqual(inspectionName, inspection.Name); -// } -// } + [TestClass] + public class VariableTypeNotDeclaredInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void VariableTypeNotDeclared_ReturnsResult_Parameter() + { + const string inputCode = +@"Sub Foo(arg1) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableTypeNotDeclaredInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void VariableTypeNotDeclared_ReturnsResult_MultipleParams() + { + const string inputCode = +@"Sub Foo(arg1, arg2) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableTypeNotDeclaredInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void VariableTypeNotDeclared_DoesNotReturnResult_Parameter() + { + const string inputCode = +@"Sub Foo(arg1 As Date) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableTypeNotDeclaredInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void VariableTypeNotDeclared_ReturnsResult_SomeTypesNotDeclared_Parameters() + { + const string inputCode = +@"Sub Foo(arg1, arg2 As String) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableTypeNotDeclaredInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void VariableTypeNotDeclared_ReturnsResult_QuickFixWorks_Parameter() + { + const string inputCode = +@"Sub Foo(arg1) +End Sub"; + + const string expectedCode = +@"Sub Foo(arg1 As Variant) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableTypeNotDeclaredInspection(parseResult.State); + inspection.GetInspectionResults().First().QuickFixes.First().Fix(); + + var actual = module.Lines(); + Assert.AreEqual(expectedCode, actual); + } + + [TestMethod] + public void VariableTypeNotDeclared_ReturnsResult_Variable() + { + const string inputCode = +@"Sub Foo() + Dim var1 +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableTypeNotDeclaredInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void VariableTypeNotDeclared_ReturnsResult_MultipleVariables() + { + const string inputCode = +@"Sub Foo() + Dim var1 + Dim var2 +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableTypeNotDeclaredInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void VariableTypeNotDeclared_DoesNotReturnResult_Variable() + { + const string inputCode = +@"Sub Foo() + Dim var1 As Integer +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableTypeNotDeclaredInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void VariableTypeNotDeclared_ReturnsResult_SomeTypesNotDeclared_Variables() + { + const string inputCode = +@"Sub Foo() + Dim var1 + Dim var2 As Date +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableTypeNotDeclaredInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void VariableTypeNotDeclared_ReturnsResult_QuickFixWorks_Variable() + { + const string inputCode = +@"Sub Foo() + Dim var1 +End Sub"; + + const string expectedCode = +@"Sub Foo() + Dim var1 As Variant +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new VariableTypeNotDeclaredInspection(parseResult.State); + inspection.GetInspectionResults().First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new VariableTypeNotDeclaredInspection(null); + Assert.AreEqual(CodeInspectionType.LanguageOpportunities, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "VariableTypeNotDeclaredInspection"; + var inspection = new VariableTypeNotDeclaredInspection(null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file From 356edf7afac3e01ce58455b54d5e43d3c7a7e062 Mon Sep 17 00:00:00 2001 From: hosch250 Date: Sat, 30 Jan 2016 00:09:14 -0600 Subject: [PATCH 2/2] The rest of the inspections. --- .../AssignedByValParameterInspectionTests.cs | 385 +++++++------ .../ConstantNotUsedInspectionTests.cs | 347 ++++++------ .../DefaultProjectNameInspectionTests.cs | 148 ++--- .../ImplicitByRefParameterInspectionTests.cs | 482 ++++++++-------- .../ImplicitPublicMemberInspectionTests.cs | 379 +++++++------ ...mplicitVariantReturnTypeInspectionTests.cs | 442 ++++++++------- .../MultilineParameterInspectionTests.cs | 353 ++++++------ .../MultipleDeclarationsInspectionTests.cs | 533 +++++++++--------- .../NonReturningFunctionInspectionTests.cs | 465 ++++++++------- .../ObsoleteCallStatementInspectionTests.cs | 367 ++++++------ .../ObsoleteCommentSyntaxInspectionTests.cs | 364 ++++++------ .../ObsoleteGlobalInspectionTests.cs | 307 +++++----- .../ObsoleteLetStatementInspectionTests.cs | 367 ++++++------ .../OptionExplicitInspectionTests.cs | 307 +++++----- .../ParameterCanBeByValInspectionTests.cs | 474 ++++++++-------- 15 files changed, 3043 insertions(+), 2677 deletions(-) diff --git a/RubberduckTests/Inspections/AssignedByValParameterInspectionTests.cs b/RubberduckTests/Inspections/AssignedByValParameterInspectionTests.cs index da90ba4f69..3682aa027c 100644 --- a/RubberduckTests/Inspections/AssignedByValParameterInspectionTests.cs +++ b/RubberduckTests/Inspections/AssignedByValParameterInspectionTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -6,189 +7,211 @@ using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.Extensions; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] -// public class AssignedByValParameterInspectionTests -// { -// [TestMethod] -// public void AssignedByValParameter_ReturnsResult_Sub() -// { -// const string inputCode = -//@"Public Sub Foo(ByVal arg1 As String) -// Let arg1 = ""test"" -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new AssignedByValParameterInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void AssignedByValParameter_ReturnsResult_Function() -// { -// const string inputCode = -//@"Function Foo(ByVal arg1 As Integer) As Boolean -// Let arg1 = 9 -//End Function"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new AssignedByValParameterInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void AssignedByValParameter_ReturnsResult_MultipleParams() -// { -// const string inputCode = -//@"Public Sub Foo(ByVal arg1 As String, ByVal arg2 As Integer) -// Let arg1 = ""test"" -// Let arg2 = 9 -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new AssignedByValParameterInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void AssignedByValParameter_DoesNotReturnResult() -// { -// const string inputCode = -//@"Public Sub Foo(ByVal arg1 As String) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new AssignedByValParameterInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void AssignedByValParameter_ReturnsResult_SomeAssignedByValParams() -// { -// const string inputCode = -//@"Public Sub Foo(ByVal arg1 As String, ByVal arg2 As Integer) -// Let arg1 = ""test"" -// -// Dim var1 As Integer -// var1 = arg2 -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new AssignedByValParameterInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void AssignedByValParameter_QuickFixWorks() -// { -// const string inputCode = -//@"Public Sub Foo(ByVal arg1 As String) -// Let arg1 = ""test"" -//End Sub"; - -// const string expectedCode = -//@"Public Sub Foo(ByRef arg1 As String) -// Let arg1 = ""test"" -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new AssignedByValParameterInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// inspectionResults.First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void InspectionType() -// { -// var inspection = new AssignedByValParameterInspection(parseResult.State); -// Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); -// } - -// [TestMethod] -// public void InspectionName() -// { -// const string inspectionName = "AssignedByValParameterInspection"; -// var inspection = new AssignedByValParameterInspection(parseResult.State); - -// Assert.AreEqual(inspectionName, inspection.Name); -// } -// } + [TestClass] + public class AssignedByValParameterInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void AssignedByValParameter_ReturnsResult_Sub() + { + const string inputCode = +@"Public Sub Foo(ByVal arg1 As String) + Let arg1 = ""test"" +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new AssignedByValParameterInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void AssignedByValParameter_ReturnsResult_Function() + { + const string inputCode = +@"Function Foo(ByVal arg1 As Integer) As Boolean + Let arg1 = 9 +End Function"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new AssignedByValParameterInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void AssignedByValParameter_ReturnsResult_MultipleParams() + { + const string inputCode = +@"Public Sub Foo(ByVal arg1 As String, ByVal arg2 As Integer) + Let arg1 = ""test"" + Let arg2 = 9 +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new AssignedByValParameterInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void AssignedByValParameter_DoesNotReturnResult() + { + const string inputCode = +@"Public Sub Foo(ByVal arg1 As String) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new AssignedByValParameterInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void AssignedByValParameter_ReturnsResult_SomeAssignedByValParams() + { + const string inputCode = +@"Public Sub Foo(ByVal arg1 As String, ByVal arg2 As Integer) + Let arg1 = ""test"" + + Dim var1 As Integer + var1 = arg2 +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new AssignedByValParameterInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void AssignedByValParameter_QuickFixWorks() + { + const string inputCode = +@"Public Sub Foo(ByVal arg1 As String) + Let arg1 = ""test"" +End Sub"; + + const string expectedCode = +@"Public Sub Foo(ByRef arg1 As String) + Let arg1 = ""test"" +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new AssignedByValParameterInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + inspectionResults.First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new AssignedByValParameterInspection(null); + Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "AssignedByValParameterInspection"; + var inspection = new AssignedByValParameterInspection(null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file diff --git a/RubberduckTests/Inspections/ConstantNotUsedInspectionTests.cs b/RubberduckTests/Inspections/ConstantNotUsedInspectionTests.cs index 17ede4fe01..72f58267f6 100644 --- a/RubberduckTests/Inspections/ConstantNotUsedInspectionTests.cs +++ b/RubberduckTests/Inspections/ConstantNotUsedInspectionTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -6,171 +7,191 @@ using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.Extensions; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] -// public class ConstantNotUsedInspectionTests -// { -// [TestMethod] -// public void ConstantNotUsed_ReturnsResult() -// { -// const string inputCode = -//@"Public Sub Foo() -// Const const1 As Integer = 9 -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ConstantNotUsedInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ConstantNotUsed_ReturnsResult_MultipleConsts() -// { -// const string inputCode = -//@"Public Sub Foo() -// Const const1 As Integer = 9 -// Const const2 As String = ""test"" -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ConstantNotUsedInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ConstantNotUsed_DoesNotReturnResult() -// { -// const string inputCode = -//@"Public Sub Foo() -// Const const1 As Integer = 9 -// Goo const1 -//End Sub -// -//Public Sub Goo(ByVal arg1 As Integer) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ConstantNotUsedInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ConstantNotUsed_ReturnsResult_SomeConstantsUsed() -// { -// const string inputCode = -//@"Public Sub Foo() -// Const const1 As Integer = 9 -// Goo const1 -// -// Const const2 As String = ""test"" -//End Sub -// -//Public Sub Goo(ByVal arg1 As Integer) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ConstantNotUsedInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ConstantNotUsed_QuickFixWorks() -// { -// const string inputCode = -//@"Public Sub Foo() -// Const const1 As Integer = 9 -//End Sub"; - -// const string expectedCode = -//@"Public Sub Foo() -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ConstantNotUsedInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// inspectionResults.First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void InspectionType() -// { -// var inspection = new ConstantNotUsedInspection(parseResult.State); -// Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); -// } - -// [TestMethod] -// public void InspectionName() -// { -// const string inspectionName = "ConstantNotUsedInspection"; -// var inspection = new ConstantNotUsedInspection(parseResult.State); - -// Assert.AreEqual(inspectionName, inspection.Name); -// } -// } + [TestClass] + public class ConstantNotUsedInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void ConstantNotUsed_ReturnsResult() + { + const string inputCode = +@"Public Sub Foo() + Const const1 As Integer = 9 +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ConstantNotUsedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ConstantNotUsed_ReturnsResult_MultipleConsts() + { + const string inputCode = +@"Public Sub Foo() + Const const1 As Integer = 9 + Const const2 As String = ""test"" +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ConstantNotUsedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void ConstantNotUsed_DoesNotReturnResult() + { + const string inputCode = +@"Public Sub Foo() + Const const1 As Integer = 9 + Goo const1 +End Sub + +Public Sub Goo(ByVal arg1 As Integer) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ConstantNotUsedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void ConstantNotUsed_ReturnsResult_SomeConstantsUsed() + { + const string inputCode = +@"Public Sub Foo() + Const const1 As Integer = 9 + Goo const1 + + Const const2 As String = ""test"" +End Sub + +Public Sub Goo(ByVal arg1 As Integer) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ConstantNotUsedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ConstantNotUsed_QuickFixWorks() + { + const string inputCode = +@"Public Sub Foo() + Const const1 As Integer = 9 +End Sub"; + + const string expectedCode = +@"Public Sub Foo() +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ConstantNotUsedInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + inspectionResults.First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new ConstantNotUsedInspection(null); + Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "ConstantNotUsedInspection"; + var inspection = new ConstantNotUsedInspection(null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file diff --git a/RubberduckTests/Inspections/DefaultProjectNameInspectionTests.cs b/RubberduckTests/Inspections/DefaultProjectNameInspectionTests.cs index 24852374ea..ac95115933 100644 --- a/RubberduckTests/Inspections/DefaultProjectNameInspectionTests.cs +++ b/RubberduckTests/Inspections/DefaultProjectNameInspectionTests.cs @@ -1,76 +1,96 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using Rubberduck.Inspections; using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] - //public class DefaultProjectNameInspectionTests - //{ - // [TestMethod] - // public void DefaultProjectName_ReturnsResult() - // { - // const string inputCode = @""; - - // //Arrange - // var builder = new MockVbeBuilder(); - // var project = builder.ProjectBuilder("VBAProject", vbext_ProjectProtection.vbext_pp_none) - // .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) - // .Build().Object; - - // var codePaneFactory = new CodePaneWrapperFactory(); - // var mockHost = new Mock(); - // mockHost.SetupAllProperties(); - // var parseResult = new RubberduckParser().Parse(project); - - // var inspection = new DefaultProjectNameInspection(parseResult.State); - // var inspectionResults = inspection.GetInspectionResults(); - - // Assert.AreEqual(1, inspectionResults.Count()); - // } - - // [TestMethod] - // public void DefaultProjectName_DoesNotReturnResult() - // { - // const string inputCode = @""; - - // //Arrange - // var builder = new MockVbeBuilder(); - // var project = builder.ProjectBuilder("TestProject", vbext_ProjectProtection.vbext_pp_none) - // .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) - // .Build().Object; - - // var codePaneFactory = new CodePaneWrapperFactory(); - // var mockHost = new Mock(); - // mockHost.SetupAllProperties(); - // var parseResult = new RubberduckParser().Parse(project); - - // var inspection = new DefaultProjectNameInspection(parseResult.State); - // var inspectionResults = inspection.GetInspectionResults(); - - // Assert.AreEqual(0, inspectionResults.Count()); - // } - - // [TestMethod] - // public void InspectionType() - // { - // var inspection = new DefaultProjectNameInspection(parseResult.State); - // Assert.AreEqual(CodeInspectionType.MaintainabilityAndReadabilityIssues, inspection.InspectionType); - // } - - // [TestMethod] - // public void InspectionName() - // { - // const string inspectionName = "DefaultProjectNameInspection"; - // var inspection = new DefaultProjectNameInspection(parseResult.State); - - // Assert.AreEqual(inspectionName, inspection.Name); - // } - //} + [TestClass] + public class DefaultProjectNameInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void DefaultProjectName_ReturnsResult() + { + const string inputCode = @""; + + //Arrange + var builder = new MockVbeBuilder(); + var project = builder.ProjectBuilder("VBAProject", vbext_ProjectProtection.vbext_pp_none) + .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) + .Build(); + var vbe = builder.AddProject(project).Build(); + + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new DefaultProjectNameInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void DefaultProjectName_DoesNotReturnResult() + { + const string inputCode = @""; + + //Arrange + var builder = new MockVbeBuilder(); + var project = builder.ProjectBuilder("TestProject", vbext_ProjectProtection.vbext_pp_none) + .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) + .Build(); + var vbe = builder.AddProject(project).Build(); + + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new DefaultProjectNameInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new DefaultProjectNameInspection(null); + Assert.AreEqual(CodeInspectionType.MaintainabilityAndReadabilityIssues, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "DefaultProjectNameInspection"; + var inspection = new DefaultProjectNameInspection(null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file diff --git a/RubberduckTests/Inspections/ImplicitByRefParameterInspectionTests.cs b/RubberduckTests/Inspections/ImplicitByRefParameterInspectionTests.cs index be85774789..c6c413fa33 100644 --- a/RubberduckTests/Inspections/ImplicitByRefParameterInspectionTests.cs +++ b/RubberduckTests/Inspections/ImplicitByRefParameterInspectionTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -6,234 +7,263 @@ using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.Extensions; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] -// public class ImplicitByRefParameterInspectionTests -// { -// [TestMethod] -// public void ImplicitByRefParameter_ReturnsResult() -// { -// const string inputCode = -//@"Sub Foo(arg1 As Integer) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitByRefParameterInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ImplicitByRefParameter_ReturnsResult_MultipleParams() -// { -// const string inputCode = -//@"Sub Foo(arg1 As Integer, arg2 As Date) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitByRefParameterInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ImplicitByRefParameter_DoesNotReturnResult_ByRef() -// { -// const string inputCode = -//@"Sub Foo(ByRef arg1 As Integer) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitByRefParameterInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ImplicitByRefParameter_DoesNotReturnResult_ByVal() -// { -// const string inputCode = -//@"Sub Foo(ByVal arg1 As Integer) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitByRefParameterInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ImplicitByRefParameter_ReturnsResult_SomePassedByRefImplicitely() -// { -// const string inputCode = -//@"Sub Foo(ByVal arg1 As Integer, arg2 As Date) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitByRefParameterInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ImplicitByRefParameter_ReturnsResult_InterfaceImplementation() -// { -// //Input -// const string inputCode1 = -//@"Sub Foo(arg1 As Integer) -//End Sub"; -// const string inputCode2 = -//@"Implements IClass1 -// -//Sub IClass1_Foo(arg1 As Integer) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("IClass1", vbext_ComponentType.vbext_ct_ClassModule, inputCode1) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode2) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitByRefParameterInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ImplicitByRefParameter_QuickFixWorks_PassByRef() -// { -// const string inputCode = -//@"Sub Foo(arg1 As Integer) -//End Sub"; - -// const string expectedCode = -//@"Sub Foo(ByRef arg1 As Integer) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitByRefParameterInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// inspectionResults.First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void ImplicitByRefParameter_QuickFixWorks_ParamArrayMustBePassedByRef() -// { -// const string inputCode = -//@"Sub Foo(ParamArray arg1 As Integer) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitByRefParameterInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.First().QuickFixes.Count()); -// } - -// [TestMethod] -// public void InspectionType() -// { -// var inspection = new ImplicitByRefParameterInspection(parseResult.State); -// Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); -// } - -// [TestMethod] -// public void InspectionName() -// { -// const string inspectionName = "ImplicitByRefParameterInspection"; -// var inspection = new ImplicitByRefParameterInspection(parseResult.State); - -// Assert.AreEqual(inspectionName, inspection.Name); -// } -// } + [TestClass] + public class ImplicitByRefParameterInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void ImplicitByRefParameter_ReturnsResult() + { + const string inputCode = +@"Sub Foo(arg1 As Integer) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitByRefParameterInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ImplicitByRefParameter_ReturnsResult_MultipleParams() + { + const string inputCode = +@"Sub Foo(arg1 As Integer, arg2 As Date) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitByRefParameterInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void ImplicitByRefParameter_DoesNotReturnResult_ByRef() + { + const string inputCode = +@"Sub Foo(ByRef arg1 As Integer) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitByRefParameterInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void ImplicitByRefParameter_DoesNotReturnResult_ByVal() + { + const string inputCode = +@"Sub Foo(ByVal arg1 As Integer) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitByRefParameterInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void ImplicitByRefParameter_ReturnsResult_SomePassedByRefImplicitely() + { + const string inputCode = +@"Sub Foo(ByVal arg1 As Integer, arg2 As Date) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitByRefParameterInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ImplicitByRefParameter_ReturnsResult_InterfaceImplementation() + { + //Input + const string inputCode1 = +@"Sub Foo(arg1 As Integer) +End Sub"; + const string inputCode2 = +@"Implements IClass1 + +Sub IClass1_Foo(arg1 As Integer) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) + .AddComponent("IClass1", vbext_ComponentType.vbext_ct_ClassModule, inputCode1) + .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode2) + .Build(); + var vbe = builder.AddProject(project).Build(); + + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitByRefParameterInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ImplicitByRefParameter_QuickFixWorks_PassByRef() + { + const string inputCode = +@"Sub Foo(arg1 As Integer) +End Sub"; + + const string expectedCode = +@"Sub Foo(ByRef arg1 As Integer) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitByRefParameterInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + inspectionResults.First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void ImplicitByRefParameter_QuickFixWorks_ParamArrayMustBePassedByRef() + { + const string inputCode = +@"Sub Foo(ParamArray arg1 As Integer) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitByRefParameterInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.First().QuickFixes.Count()); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new ImplicitByRefParameterInspection(null); + Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "ImplicitByRefParameterInspection"; + var inspection = new ImplicitByRefParameterInspection(null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file diff --git a/RubberduckTests/Inspections/ImplicitPublicMemberInspectionTests.cs b/RubberduckTests/Inspections/ImplicitPublicMemberInspectionTests.cs index 8ee64df4f7..29107cf544 100644 --- a/RubberduckTests/Inspections/ImplicitPublicMemberInspectionTests.cs +++ b/RubberduckTests/Inspections/ImplicitPublicMemberInspectionTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -6,186 +7,208 @@ using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.Extensions; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] -// public class ImplicitPublicMemberInspectionTests -// { -// [TestMethod] -// public void ImplicitPublicMember_ReturnsResult_Sub() -// { -// const string inputCode = -//@"Sub Foo() -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitPublicMemberInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ImplicitPublicMember_ReturnsResult_Function() -// { -// const string inputCode = -//@"Function Foo() As Boolean -// Foo = True -//End Function"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitPublicMemberInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ImplicitPublicMember_ReturnsResult_MultipleSubs() -// { -// const string inputCode = -//@"Sub Foo() -//End Sub -// -//Sub Goo() -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitPublicMemberInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ImplicitPublicMember_DoesNotReturnResult() -// { -// const string inputCode = -//@"Private Sub Foo() -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitPublicMemberInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ImplicitPublicMember_ReturnsResult_SomeImplicitlyPublicSubs() -// { -// const string inputCode = -//@"Private Sub Foo() -//End Sub -// -//Sub Goo() -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitPublicMemberInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ImplicitPublicMember_QuickFixWorks() -// { -// const string inputCode = -//@"Sub Foo(ByVal arg1 as Integer) -//End Sub"; - -// const string expectedCode = -//@"Public Sub Foo(ByVal arg1 as Integer) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitPublicMemberInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// inspectionResults.First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void InspectionType() -// { -// var inspection = new ImplicitPublicMemberInspection(parseResult.State); -// Assert.AreEqual(CodeInspectionType.MaintainabilityAndReadabilityIssues, inspection.InspectionType); -// } - -// [TestMethod] -// public void InspectionName() -// { -// const string inspectionName = "ImplicitPublicMemberInspection"; -// var inspection = new ImplicitPublicMemberInspection(parseResult.State); - -// Assert.AreEqual(inspectionName, inspection.Name); -// } -// } + [TestClass] + public class ImplicitPublicMemberInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void ImplicitPublicMember_ReturnsResult_Sub() + { + const string inputCode = +@"Sub Foo() +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitPublicMemberInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ImplicitPublicMember_ReturnsResult_Function() + { + const string inputCode = +@"Function Foo() As Boolean + Foo = True +End Function"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitPublicMemberInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ImplicitPublicMember_ReturnsResult_MultipleSubs() + { + const string inputCode = +@"Sub Foo() +End Sub + +Sub Goo() +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitPublicMemberInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void ImplicitPublicMember_DoesNotReturnResult() + { + const string inputCode = +@"Private Sub Foo() +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitPublicMemberInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void ImplicitPublicMember_ReturnsResult_SomeImplicitlyPublicSubs() + { + const string inputCode = +@"Private Sub Foo() +End Sub + +Sub Goo() +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitPublicMemberInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ImplicitPublicMember_QuickFixWorks() + { + const string inputCode = +@"Sub Foo(ByVal arg1 as Integer) +End Sub"; + + const string expectedCode = +@"Public Sub Foo(ByVal arg1 as Integer) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitPublicMemberInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + inspectionResults.First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new ImplicitPublicMemberInspection(null); + Assert.AreEqual(CodeInspectionType.MaintainabilityAndReadabilityIssues, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "ImplicitPublicMemberInspection"; + var inspection = new ImplicitPublicMemberInspection(null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file diff --git a/RubberduckTests/Inspections/ImplicitVariantReturnTypeInspectionTests.cs b/RubberduckTests/Inspections/ImplicitVariantReturnTypeInspectionTests.cs index 5463e7d255..92b72e6484 100644 --- a/RubberduckTests/Inspections/ImplicitVariantReturnTypeInspectionTests.cs +++ b/RubberduckTests/Inspections/ImplicitVariantReturnTypeInspectionTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -6,216 +7,241 @@ using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.Extensions; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] -// public class ImplicitVariantReturnTypeInspectionTests -// { -// [TestMethod] -// public void ImplicitVariantReturnType_ReturnsResult_Function() -// { -// const string inputCode = -//@"Function Foo() -//End Function"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ImplicitVariantReturnType_ReturnsResult_PropertyGet() -// { -// const string inputCode = -//@"Property Get Foo() -//End Property"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ImplicitVariantReturnType_ReturnsResult_MultipleFunctions() -// { -// const string inputCode = -//@"Function Foo() -//End Function -// -//Function Goo() -//End Function"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ImplicitVariantReturnType_DoesNotReturnResult() -// { -// const string inputCode = -//@"Function Foo() As Boolean -//End Function"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ImplicitVariantReturnType_ReturnsResult_MultipleSubs_SomeReturning() -// { -// const string inputCode = -//@"Function Foo() -//End Function -// -//Function Goo() As String -//End Function"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ImplicitVariantReturnType_QuickFixWorks_Function() -// { -// const string inputCode = -//@"Function Foo() -//End Function"; - -// const string expectedCode = -//@"Function Foo() As Variant -//End Function"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// inspectionResults.First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void ImplicitVariantReturnType_QuickFixWorks_PropertyGet() -// { -// const string inputCode = -//@"Property Get Foo() -//End Property"; - -// const string expectedCode = -//@"Property Get Foo() As Variant -//End Property"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// inspectionResults.First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void InspectionType() -// { -// var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); -// Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); -// } - -// [TestMethod] -// public void InspectionName() -// { -// const string inspectionName = "ImplicitVariantReturnTypeInspection"; -// var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); - -// Assert.AreEqual(inspectionName, inspection.Name); -// } -// } + [TestClass] + public class ImplicitVariantReturnTypeInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void ImplicitVariantReturnType_ReturnsResult_Function() + { + const string inputCode = +@"Function Foo() +End Function"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ImplicitVariantReturnType_ReturnsResult_PropertyGet() + { + const string inputCode = +@"Property Get Foo() +End Property"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ImplicitVariantReturnType_ReturnsResult_MultipleFunctions() + { + const string inputCode = +@"Function Foo() +End Function + +Function Goo() +End Function"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void ImplicitVariantReturnType_DoesNotReturnResult() + { + const string inputCode = +@"Function Foo() As Boolean +End Function"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void ImplicitVariantReturnType_ReturnsResult_MultipleSubs_SomeReturning() + { + const string inputCode = +@"Function Foo() +End Function + +Function Goo() As String +End Function"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ImplicitVariantReturnType_QuickFixWorks_Function() + { + const string inputCode = +@"Function Foo() +End Function"; + + const string expectedCode = +@"Function Foo() As Variant +End Function"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + inspectionResults.First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void ImplicitVariantReturnType_QuickFixWorks_PropertyGet() + { + const string inputCode = +@"Property Get Foo() +End Property"; + + const string expectedCode = +@"Property Get Foo() As Variant +End Property"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ImplicitVariantReturnTypeInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + inspectionResults.First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new ImplicitVariantReturnTypeInspection(null); + Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "ImplicitVariantReturnTypeInspection"; + var inspection = new ImplicitVariantReturnTypeInspection(null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file diff --git a/RubberduckTests/Inspections/MultilineParameterInspectionTests.cs b/RubberduckTests/Inspections/MultilineParameterInspectionTests.cs index 84ded241ec..cbc53f1be0 100644 --- a/RubberduckTests/Inspections/MultilineParameterInspectionTests.cs +++ b/RubberduckTests/Inspections/MultilineParameterInspectionTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -6,174 +7,194 @@ using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.Extensions; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] -// public class MultilineParameterInspectionTests -// { -// [TestMethod] -// public void MultilineParameter_ReturnsResult() -// { -// const string inputCode = -//@"Public Sub Foo(ByVal _ -// Var1 _ -// As _ -// Integer) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new MultilineParameterInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void MultilineParameter_DoesNotReturnResult() -// { -// const string inputCode = -//@"Public Sub Foo(ByVal Var1 As Integer) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new MultilineParameterInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void MultilineParameter_ReturnsMultipleResults() -// { -// const string inputCode = -//@"Public Sub Foo( _ -// ByVal _ -// Var1 _ -// As _ -// Integer, _ -// ByVal _ -// Var2 _ -// As _ -// Date) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new MultilineParameterInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void MultilineParameter_ReturnsResults_SomeParams() -// { -// const string inputCode = -//@"Public Sub Foo(ByVal _ -// Var1 _ -// As _ -// Integer, ByVal Var2 As Date) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new MultilineParameterInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void MultilineParameter_QuickFixWorks() -// { -// const string inputCode = -//@"Public Sub Foo( _ -// ByVal _ -// Var1 _ -// As _ -// Integer) -//End Sub"; - -// const string expectedCode = -//@"Public Sub Foo( _ -// ByVal Var1 As Integer) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new MultilineParameterInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// inspectionResults.First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void InspectionType() -// { -// var inspection = new MultilineParameterInspection(parseResult.State); -// Assert.AreEqual(CodeInspectionType.MaintainabilityAndReadabilityIssues, inspection.InspectionType); -// } - -// [TestMethod] -// public void InspectionName() -// { -// const string inspectionName = "MultilineParameterInspection"; -// var inspection = new MultilineParameterInspection(parseResult.State); - -// Assert.AreEqual(inspectionName, inspection.Name); -// } -// } + [TestClass] + public class MultilineParameterInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void MultilineParameter_ReturnsResult() + { + const string inputCode = +@"Public Sub Foo(ByVal _ + Var1 _ + As _ + Integer) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new MultilineParameterInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void MultilineParameter_DoesNotReturnResult() + { + const string inputCode = +@"Public Sub Foo(ByVal Var1 As Integer) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new MultilineParameterInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void MultilineParameter_ReturnsMultipleResults() + { + const string inputCode = +@"Public Sub Foo( _ + ByVal _ + Var1 _ + As _ + Integer, _ + ByVal _ + Var2 _ + As _ + Date) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new MultilineParameterInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void MultilineParameter_ReturnsResults_SomeParams() + { + const string inputCode = +@"Public Sub Foo(ByVal _ + Var1 _ + As _ + Integer, ByVal Var2 As Date) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new MultilineParameterInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void MultilineParameter_QuickFixWorks() + { + const string inputCode = +@"Public Sub Foo( _ + ByVal _ + Var1 _ + As _ + Integer) +End Sub"; + + const string expectedCode = +@"Public Sub Foo( _ + ByVal Var1 As Integer) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new MultilineParameterInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + inspectionResults.First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new MultilineParameterInspection(null); + Assert.AreEqual(CodeInspectionType.MaintainabilityAndReadabilityIssues, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "MultilineParameterInspection"; + var inspection = new MultilineParameterInspection(null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file diff --git a/RubberduckTests/Inspections/MultipleDeclarationsInspectionTests.cs b/RubberduckTests/Inspections/MultipleDeclarationsInspectionTests.cs index 6ce5e90ae8..8e6efdd95d 100644 --- a/RubberduckTests/Inspections/MultipleDeclarationsInspectionTests.cs +++ b/RubberduckTests/Inspections/MultipleDeclarationsInspectionTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -6,260 +7,288 @@ using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.Extensions; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] -// public class MultipleDeclarationsInspectionTests -// { -// [TestMethod] -// public void MultipleDeclarations_ReturnsResult_Variables() -// { -// const string inputCode = -//@"Public Sub Foo() -// Dim var1 As Integer, var2 As String -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new MultipleDeclarationsInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void MultipleDeclarations_ReturnsResult_Constants() -// { -// const string inputCode = -//@"Public Sub Foo() -// Const var1 As Integer = 9, var2 As String = ""test"" -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new MultipleDeclarationsInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void MultipleDeclarations_ReturnsResult_StaticVariables() -// { -// const string inputCode = -//@"Public Sub Foo() -// Static var1 As Integer, var2 As String -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new MultipleDeclarationsInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void MultipleDeclarations_ReturnsResult_MultipleDeclarations() -// { -// const string inputCode = -//@"Public Sub Foo() -// Dim var1 As Integer, var2 As String -// Dim var3 As Boolean, var4 As Date -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new MultipleDeclarationsInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void MultipleDeclarations_ReturnsResult_SomeDeclarationsSeparate() -// { -// const string inputCode = -//@"Public Sub Foo() -// Dim var1 As Integer, var2 As String -// Dim var3 As Boolean -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new MultipleDeclarationsInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void MultipleDeclarations_QuickFixWorks_Variables() -// { -// const string inputCode = -//@"Public Sub Foo() -// Dim var1 As Integer, var2 As String -//End Sub"; - -// const string expectedCode = -//@"Public Sub Foo() -//Dim var1 As Integer -//Dim var2 As String -// -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new MultipleDeclarationsInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// inspectionResults.First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void MultipleDeclarations_QuickFixWorks_Constants() -// { -// const string inputCode = -//@"Public Sub Foo() -// Const var1 As Integer = 9, var2 As String = ""test"" -//End Sub"; - -// const string expectedCode = -//@"Public Sub Foo() -//Const var1 As Integer = 9 -//Const var2 As String = ""test"" -// -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new MultipleDeclarationsInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// inspectionResults.First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void MultipleDeclarations_QuickFixWorks_StaticVariables() -// { -// const string inputCode = -//@"Public Sub Foo() -// Static var1 As Integer, var2 As String -//End Sub"; - -// const string expectedCode = -//@"Public Sub Foo() -//Static var1 As Integer -//Static var2 As String -// -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new MultipleDeclarationsInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// inspectionResults.First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void InspectionType() -// { -// var inspection = new MultipleDeclarationsInspection(parseResult.State); -// Assert.AreEqual(CodeInspectionType.MaintainabilityAndReadabilityIssues, inspection.InspectionType); -// } - -// [TestMethod] -// public void InspectionName() -// { -// const string inspectionName = "MultipleDeclarationsInspection"; -// var inspection = new MultipleDeclarationsInspection(parseResult.State); - -// Assert.AreEqual(inspectionName, inspection.Name); -// } -// } + [TestClass] + public class MultipleDeclarationsInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void MultipleDeclarations_ReturnsResult_Variables() + { + const string inputCode = +@"Public Sub Foo() + Dim var1 As Integer, var2 As String +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new MultipleDeclarationsInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void MultipleDeclarations_ReturnsResult_Constants() + { + const string inputCode = +@"Public Sub Foo() + Const var1 As Integer = 9, var2 As String = ""test"" +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new MultipleDeclarationsInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void MultipleDeclarations_ReturnsResult_StaticVariables() + { + const string inputCode = +@"Public Sub Foo() + Static var1 As Integer, var2 As String +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new MultipleDeclarationsInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void MultipleDeclarations_ReturnsResult_MultipleDeclarations() + { + const string inputCode = +@"Public Sub Foo() + Dim var1 As Integer, var2 As String + Dim var3 As Boolean, var4 As Date +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new MultipleDeclarationsInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void MultipleDeclarations_ReturnsResult_SomeDeclarationsSeparate() + { + const string inputCode = +@"Public Sub Foo() + Dim var1 As Integer, var2 As String + Dim var3 As Boolean +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new MultipleDeclarationsInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void MultipleDeclarations_QuickFixWorks_Variables() + { + const string inputCode = +@"Public Sub Foo() + Dim var1 As Integer, var2 As String +End Sub"; + + const string expectedCode = +@"Public Sub Foo() +Dim var1 As Integer +Dim var2 As String + +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new MultipleDeclarationsInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + inspectionResults.First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void MultipleDeclarations_QuickFixWorks_Constants() + { + const string inputCode = +@"Public Sub Foo() + Const var1 As Integer = 9, var2 As String = ""test"" +End Sub"; + + const string expectedCode = +@"Public Sub Foo() +Const var1 As Integer = 9 +Const var2 As String = ""test"" + +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new MultipleDeclarationsInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + inspectionResults.First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void MultipleDeclarations_QuickFixWorks_StaticVariables() + { + const string inputCode = +@"Public Sub Foo() + Static var1 As Integer, var2 As String +End Sub"; + + const string expectedCode = +@"Public Sub Foo() +Static var1 As Integer +Static var2 As String + +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new MultipleDeclarationsInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + inspectionResults.First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new MultipleDeclarationsInspection(null); + Assert.AreEqual(CodeInspectionType.MaintainabilityAndReadabilityIssues, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "MultipleDeclarationsInspection"; + var inspection = new MultipleDeclarationsInspection(null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file diff --git a/RubberduckTests/Inspections/NonReturningFunctionInspectionTests.cs b/RubberduckTests/Inspections/NonReturningFunctionInspectionTests.cs index f0b7e3c48f..edf5404a53 100644 --- a/RubberduckTests/Inspections/NonReturningFunctionInspectionTests.cs +++ b/RubberduckTests/Inspections/NonReturningFunctionInspectionTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -6,225 +7,255 @@ using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.Extensions; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] -// public class NonReturningFunctionInspectionTests -// { -// [TestMethod] -// public void NonReturningFunction_ReturnsResult() -// { -// const string inputCode = -//@"Function Foo() As Boolean -//End Function"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new NonReturningFunctionInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void NonReturningFunction_ReturnsResult_MultipleFunctions() -// { -// const string inputCode = -//@"Function Foo() As Boolean -//End Function -// -//Function Goo() As String -//End Function"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new NonReturningFunctionInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void NonReturningFunction_DoesNotReturnResult() -// { -// const string inputCode = -//@"Function Foo() As Boolean -// Foo = True -//End Function"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new NonReturningFunctionInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void NonReturningFunction_ReturnsResult_MultipleSubs_SomeReturning() -// { -// const string inputCode = -//@"Function Foo() As Boolean -// Foo = True -//End Function -// -//Function Goo() As String -//End Function"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new NonReturningFunctionInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void NonReturningFunction_ReturnsResult_InterfaceImplementation() -// { -// //Input -// const string inputCode1 = -//@"Function Foo() As Boolean -//End Function"; -// const string inputCode2 = -//@"Implements IClass1 -// -//Function IClass1_Foo() As Boolean -//End Function"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("IClass1", vbext_ComponentType.vbext_ct_ClassModule, inputCode1) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode2) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new NonReturningFunctionInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void NonReturningFunction_QuickFixWorks() -// { -// const string inputCode = -//@"Function Foo() As Boolean -//End Function"; - -// const string expectedCode = -//@"Sub Foo() -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new NonReturningFunctionInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// inspectionResults.First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void NonReturningFunction_ReturnsResult_InterfaceImplementation_NoQuickFix() -// { -// //Input -// const string inputCode1 = -//@"Function Foo() As Boolean -//End Function"; -// const string inputCode2 = -//@"Implements IClass1 -// -//Function IClass1_Foo() As Boolean -//End Function"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("IClass1", vbext_ComponentType.vbext_ct_ClassModule, inputCode1) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode2) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new NonReturningFunctionInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(0, inspectionResults.First().QuickFixes.Count()); -// } - -// [TestMethod] -// public void InspectionType() -// { -// var inspection = new NonReturningFunctionInspection(parseResult.State); -// Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); -// } - -// [TestMethod] -// public void InspectionName() -// { -// const string inspectionName = "NonReturningFunctionInspection"; -// var inspection = new NonReturningFunctionInspection(parseResult.State); - -// Assert.AreEqual(inspectionName, inspection.Name); -// } -// } + [TestClass] + public class NonReturningFunctionInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void NonReturningFunction_ReturnsResult() + { + const string inputCode = +@"Function Foo() As Boolean +End Function"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new NonReturningFunctionInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void NonReturningFunction_ReturnsResult_MultipleFunctions() + { + const string inputCode = +@"Function Foo() As Boolean +End Function + +Function Goo() As String +End Function"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new NonReturningFunctionInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void NonReturningFunction_DoesNotReturnResult() + { + const string inputCode = +@"Function Foo() As Boolean + Foo = True +End Function"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new NonReturningFunctionInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void NonReturningFunction_ReturnsResult_MultipleSubs_SomeReturning() + { + const string inputCode = +@"Function Foo() As Boolean + Foo = True +End Function + +Function Goo() As String +End Function"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new NonReturningFunctionInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void NonReturningFunction_ReturnsResult_InterfaceImplementation() + { + //Input + const string inputCode1 = +@"Function Foo() As Boolean +End Function"; + const string inputCode2 = +@"Implements IClass1 + +Function IClass1_Foo() As Boolean +End Function"; + + //Arrange + var builder = new MockVbeBuilder(); + var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) + .AddComponent("IClass1", vbext_ComponentType.vbext_ct_ClassModule, inputCode1) + .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode2) + .Build(); + var vbe = builder.AddProject(project).Build(); + + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new NonReturningFunctionInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void NonReturningFunction_QuickFixWorks() + { + const string inputCode = +@"Function Foo() As Boolean +End Function"; + + const string expectedCode = +@"Sub Foo() +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new NonReturningFunctionInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + inspectionResults.First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void NonReturningFunction_ReturnsResult_InterfaceImplementation_NoQuickFix() + { + //Input + const string inputCode1 = +@"Function Foo() As Boolean +End Function"; + const string inputCode2 = +@"Implements IClass1 + +Function IClass1_Foo() As Boolean +End Function"; + + //Arrange + var builder = new MockVbeBuilder(); + var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) + .AddComponent("IClass1", vbext_ComponentType.vbext_ct_ClassModule, inputCode1) + .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode2) + .Build(); + var vbe = builder.AddProject(project).Build(); + + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new NonReturningFunctionInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.First().QuickFixes.Count()); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new NonReturningFunctionInspection(null); + Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "NonReturningFunctionInspection"; + var inspection = new NonReturningFunctionInspection(null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file diff --git a/RubberduckTests/Inspections/ObsoleteCallStatementInspectionTests.cs b/RubberduckTests/Inspections/ObsoleteCallStatementInspectionTests.cs index aeaf33a01e..2d9833d385 100644 --- a/RubberduckTests/Inspections/ObsoleteCallStatementInspectionTests.cs +++ b/RubberduckTests/Inspections/ObsoleteCallStatementInspectionTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -6,181 +7,201 @@ using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.Extensions; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] -// public class ObsoleteCallStatementInspectionTests -// { -// [TestMethod] -// public void ObsoleteCallStatement_ReturnsResult() -// { -// const string inputCode = -//@"Sub Foo() -// Call Foo -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteCallStatementInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ObsoleteCallStatement_DoesNotReturnResult() -// { -// const string inputCode = -//@"Sub Foo() -// Foo -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteCallStatementInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ObsoleteCallStatement_ReturnsMultipleResults() -// { -// const string inputCode = -//@"Sub Foo() -// Call Goo(1, ""test"") -//End Sub -// -//Sub Goo(arg1 As Integer, arg1 As String) -// Call Foo -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteCallStatementInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ObsoleteCallStatement_ReturnsResults_SomeObsoleteCallStatements() -// { -// const string inputCode = -//@"Sub Foo() -// Call Goo(1, ""test"") -//End Sub -// -//Sub Goo(arg1 As Integer, arg1 As String) -// Foo -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteCallStatementInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ObsoleteCallStatement_QuickFixWorks_RemoveCallStatement() -// { -// const string inputCode = -//@"Sub Foo() -// Call Goo(1, ""test"") -//End Sub -// -//Sub Goo(arg1 As Integer, arg1 As String) -// Call Foo -//End Sub"; - -// const string expectedCode = -//@"Sub Foo() -// Goo 1, ""test"" -//End Sub -// -//Sub Goo(arg1 As Integer, arg1 As String) -// Foo -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteCallStatementInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// foreach (var inspectionResult in inspectionResults) -// { -// inspectionResult.QuickFixes.First().Fix(); -// } - -// var actual = module.Lines(); -// Assert.AreEqual(expectedCode, actual); -// } - -// [TestMethod] -// public void InspectionType() -// { -// var inspection = new ObsoleteCallStatementInspection(parseResult.State); -// Assert.AreEqual(CodeInspectionType.LanguageOpportunities, inspection.InspectionType); -// } - -// [TestMethod] -// public void InspectionName() -// { -// const string inspectionName = "ObsoleteCallStatementInspection"; -// var inspection = new ObsoleteCallStatementInspection(parseResult.State); - -// Assert.AreEqual(inspectionName, inspection.Name); -// } -// } + [TestClass] + public class ObsoleteCallStatementInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void ObsoleteCallStatement_ReturnsResult() + { + const string inputCode = +@"Sub Foo() + Call Foo +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteCallStatementInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ObsoleteCallStatement_DoesNotReturnResult() + { + const string inputCode = +@"Sub Foo() + Foo +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteCallStatementInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void ObsoleteCallStatement_ReturnsMultipleResults() + { + const string inputCode = +@"Sub Foo() + Call Goo(1, ""test"") +End Sub + +Sub Goo(arg1 As Integer, arg1 As String) + Call Foo +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteCallStatementInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void ObsoleteCallStatement_ReturnsResults_SomeObsoleteCallStatements() + { + const string inputCode = +@"Sub Foo() + Call Goo(1, ""test"") +End Sub + +Sub Goo(arg1 As Integer, arg1 As String) + Foo +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteCallStatementInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ObsoleteCallStatement_QuickFixWorks_RemoveCallStatement() + { + const string inputCode = +@"Sub Foo() + Call Goo(1, ""test"") +End Sub + +Sub Goo(arg1 As Integer, arg1 As String) + Call Foo +End Sub"; + + const string expectedCode = +@"Sub Foo() + Goo 1, ""test"" +End Sub + +Sub Goo(arg1 As Integer, arg1 As String) + Foo +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteCallStatementInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + foreach (var inspectionResult in inspectionResults) + { + inspectionResult.QuickFixes.First().Fix(); + } + + var actual = module.Lines(); + Assert.AreEqual(expectedCode, actual); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new ObsoleteCallStatementInspection(null); + Assert.AreEqual(CodeInspectionType.LanguageOpportunities, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "ObsoleteCallStatementInspection"; + var inspection = new ObsoleteCallStatementInspection(null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file diff --git a/RubberduckTests/Inspections/ObsoleteCommentSyntaxInspectionTests.cs b/RubberduckTests/Inspections/ObsoleteCommentSyntaxInspectionTests.cs index f3974acd55..e8cba6c982 100644 --- a/RubberduckTests/Inspections/ObsoleteCommentSyntaxInspectionTests.cs +++ b/RubberduckTests/Inspections/ObsoleteCommentSyntaxInspectionTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -6,178 +7,201 @@ using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.Extensions; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] -// public class ObsoleteCommentSyntaxInspectionTests -// { -// [TestMethod] -// public void ObsoleteCommentSyntax_ReturnsResult() -// { -// const string inputCode = @"Rem test"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ObsoleteCommentSyntax_DoesNotReturnResult() -// { -// const string inputCode = @"' test"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ObsoleteCommentSyntax_ReturnsMultipleResults() -// { -// const string inputCode = -//@"Rem test1 -//Rem test2"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ObsoleteCommentSyntax_ReturnsResults_SomeObsoleteCommentSyntax() -// { -// const string inputCode = -//@"Rem test1 -//' test2"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ObsoleteCommentSyntax_QuickFixWorks_UpdateComment() -// { -// const string inputCode = -//@"Rem test1"; - -// const string expectedCode = -//@"' test1"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// inspectionResults.First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void ObsoleteCommentSyntax_QuickFixWorks_RemoveComment() -// { -// const string inputCode = -//@"Rem test1"; - -// const string expectedCode = -//@""; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// inspectionResults.First().QuickFixes.ElementAt(1).Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void InspectionType() -// { -// var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); -// Assert.AreEqual(CodeInspectionType.LanguageOpportunities, inspection.InspectionType); -// } - -// [TestMethod] -// public void InspectionName() -// { -// const string inspectionName = "ObsoleteCommentSyntaxInspection"; -// var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); - -// Assert.AreEqual(inspectionName, inspection.Name); -// } -// } + [TestClass] + public class ObsoleteCommentSyntaxInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void ObsoleteCommentSyntax_ReturnsResult() + { + const string inputCode = @"Rem test"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ObsoleteCommentSyntax_DoesNotReturnResult() + { + const string inputCode = @"' test"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void ObsoleteCommentSyntax_ReturnsMultipleResults() + { + const string inputCode = +@"Rem test1 +Rem test2"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void ObsoleteCommentSyntax_ReturnsResults_SomeObsoleteCommentSyntax() + { + const string inputCode = +@"Rem test1 +' test2"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ObsoleteCommentSyntax_QuickFixWorks_UpdateComment() + { + const string inputCode = +@"Rem test1"; + + const string expectedCode = +@"' test1"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + inspectionResults.First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void ObsoleteCommentSyntax_QuickFixWorks_RemoveComment() + { + const string inputCode = +@"Rem test1"; + + const string expectedCode = +@""; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteCommentSyntaxInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + inspectionResults.First().QuickFixes.ElementAt(1).Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new ObsoleteCommentSyntaxInspection(null); + Assert.AreEqual(CodeInspectionType.LanguageOpportunities, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "ObsoleteCommentSyntaxInspection"; + var inspection = new ObsoleteCommentSyntaxInspection(null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file diff --git a/RubberduckTests/Inspections/ObsoleteGlobalInspectionTests.cs b/RubberduckTests/Inspections/ObsoleteGlobalInspectionTests.cs index af840bccc5..835b312daa 100644 --- a/RubberduckTests/Inspections/ObsoleteGlobalInspectionTests.cs +++ b/RubberduckTests/Inspections/ObsoleteGlobalInspectionTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -6,151 +7,171 @@ using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.Extensions; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] -// public class ObsoleteGlobalInspectionTests -// { -// [TestMethod] -// public void ObsoleteGlobal_ReturnsResult() -// { -// const string inputCode = -//@"Global var1 As Integer"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_StdModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteGlobalInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ObsoleteGlobal_ReturnsResult_MultipleGlobals() -// { -// const string inputCode = -//@"Global var1 As Integer -//Global var2 As String"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_StdModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteGlobalInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ObsoleteGlobal_DoesNotReturnResult() -// { -// const string inputCode = -//@"Public var1 As Integer"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteGlobalInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ObsoleteGlobal_ReturnsResult_SomeConstantsUsed() -// { -// const string inputCode = -//@"Public var1 As Integer -//Global var2 As Date"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteGlobalInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ObsoleteGlobal_QuickFixWorks() -// { -// const string inputCode = -//@"Global var1 As Integer"; - -// const string expectedCode = -//@"Public var1 As Integer"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteGlobalInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// inspectionResults.First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void InspectionType() -// { -// var inspection = new ObsoleteGlobalInspection(parseResult.State); -// Assert.AreEqual(CodeInspectionType.LanguageOpportunities, inspection.InspectionType); -// } - -// [TestMethod] -// public void InspectionName() -// { -// const string inspectionName = "ObsoleteGlobalInspection"; -// var inspection = new ObsoleteGlobalInspection(parseResult.State); - -// Assert.AreEqual(inspectionName, inspection.Name); -// } -// } + [TestClass] + public class ObsoleteGlobalInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void ObsoleteGlobal_ReturnsResult() + { + const string inputCode = +@"Global var1 As Integer"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteGlobalInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ObsoleteGlobal_ReturnsResult_MultipleGlobals() + { + const string inputCode = +@"Global var1 As Integer +Global var2 As String"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteGlobalInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void ObsoleteGlobal_DoesNotReturnResult() + { + const string inputCode = +@"Public var1 As Integer"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteGlobalInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void ObsoleteGlobal_ReturnsResult_SomeConstantsUsed() + { + const string inputCode = +@"Public var1 As Integer +Global var2 As Date"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteGlobalInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ObsoleteGlobal_QuickFixWorks() + { + const string inputCode = +@"Global var1 As Integer"; + + const string expectedCode = +@"Public var1 As Integer"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteGlobalInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + inspectionResults.First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new ObsoleteGlobalInspection(null); + Assert.AreEqual(CodeInspectionType.LanguageOpportunities, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "ObsoleteGlobalInspection"; + var inspection = new ObsoleteGlobalInspection(null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file diff --git a/RubberduckTests/Inspections/ObsoleteLetStatementInspectionTests.cs b/RubberduckTests/Inspections/ObsoleteLetStatementInspectionTests.cs index 8116991e0f..38ed87d30b 100644 --- a/RubberduckTests/Inspections/ObsoleteLetStatementInspectionTests.cs +++ b/RubberduckTests/Inspections/ObsoleteLetStatementInspectionTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -6,181 +7,201 @@ using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.Extensions; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] -// public class ObsoleteLetStatementInspectionTests -// { -// [TestMethod] -// public void ObsoleteLetStatement_ReturnsResult() -// { -// const string inputCode = -//@"Public Sub Foo() -// Dim var1 As Integer -// Dim var2 As Integer -// -// Let var2 = var1 -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteLetStatementInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ObsoleteLetStatement_ReturnsResult_MultipleLets() -// { -// const string inputCode = -//@"Public Sub Foo() -// Dim var1 As Integer -// Dim var2 As Integer -// -// Let var2 = var1 -// Let var1 = var2 -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteLetStatementInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ObsoleteLetStatement_DoesNotReturnResult() -// { -// const string inputCode = -//@"Public Sub Foo() -// Dim var1 As Integer -// Dim var2 As Integer -// -// var2 = var1 -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteLetStatementInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ObsoleteLetStatement_ReturnsResult_SomeConstantsUsed() -// { -// const string inputCode = -//@"Public Sub Foo() -// Dim var1 As Integer -// Dim var2 As Integer -// -// Let var2 = var1 -// var1 = var2 -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteLetStatementInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ObsoleteLetStatement_QuickFixWorks() -// { -// const string inputCode = -//@"Public Sub Foo() -// Dim var1 As Integer -// Dim var2 As Integer -// -// Let var2 = var1 -//End Sub"; - -// const string expectedCode = -//@"Public Sub Foo() -// Dim var1 As Integer -// Dim var2 As Integer -// -// var2 = var1 -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ObsoleteLetStatementInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// inspectionResults.First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void InspectionType() -// { -// var inspection = new ObsoleteLetStatementInspection(parseResult.State); -// Assert.AreEqual(CodeInspectionType.LanguageOpportunities, inspection.InspectionType); -// } - -// [TestMethod] -// public void InspectionName() -// { -// const string inspectionName = "ObsoleteLetStatementInspection"; -// var inspection = new ObsoleteLetStatementInspection(parseResult.State); - -// Assert.AreEqual(inspectionName, inspection.Name); -// } -// } + [TestClass] + public class ObsoleteLetStatementInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void ObsoleteLetStatement_ReturnsResult() + { + const string inputCode = +@"Public Sub Foo() + Dim var1 As Integer + Dim var2 As Integer + + Let var2 = var1 +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteLetStatementInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ObsoleteLetStatement_ReturnsResult_MultipleLets() + { + const string inputCode = +@"Public Sub Foo() + Dim var1 As Integer + Dim var2 As Integer + + Let var2 = var1 + Let var1 = var2 +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteLetStatementInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void ObsoleteLetStatement_DoesNotReturnResult() + { + const string inputCode = +@"Public Sub Foo() + Dim var1 As Integer + Dim var2 As Integer + + var2 = var1 +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteLetStatementInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void ObsoleteLetStatement_ReturnsResult_SomeConstantsUsed() + { + const string inputCode = +@"Public Sub Foo() + Dim var1 As Integer + Dim var2 As Integer + + Let var2 = var1 + var1 = var2 +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteLetStatementInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ObsoleteLetStatement_QuickFixWorks() + { + const string inputCode = +@"Public Sub Foo() + Dim var1 As Integer + Dim var2 As Integer + + Let var2 = var1 +End Sub"; + + const string expectedCode = +@"Public Sub Foo() + Dim var1 As Integer + Dim var2 As Integer + + var2 = var1 +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ObsoleteLetStatementInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + inspectionResults.First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new ObsoleteLetStatementInspection(null); + Assert.AreEqual(CodeInspectionType.LanguageOpportunities, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "ObsoleteLetStatementInspection"; + var inspection = new ObsoleteLetStatementInspection(null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file diff --git a/RubberduckTests/Inspections/OptionExplicitInspectionTests.cs b/RubberduckTests/Inspections/OptionExplicitInspectionTests.cs index f0f95785a3..d0b9f1492e 100644 --- a/RubberduckTests/Inspections/OptionExplicitInspectionTests.cs +++ b/RubberduckTests/Inspections/OptionExplicitInspectionTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -6,148 +7,174 @@ using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.Extensions; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] -// public class OptionExplicitInspectionTests -// { -// [TestMethod] -// public void NotAlreadySpecified_ReturnsResult() -// { -// const string inputCode = @""; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new OptionExplicitInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void AlreadySpecified_DoesNotReturnResult() -// { -// const string inputCode = @"Option Explicit"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new OptionExplicitInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void NotAlreadySpecified_ReturnsMultipleResults() -// { -// const string inputCode = @""; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .AddComponent("Class2", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new OptionExplicitInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void PartiallySpecified_ReturnsResults() -// { -// const string inputCode1 = @""; -// const string inputCode2 = @"Option Explicit"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode1) -// .AddComponent("Class2", vbext_ComponentType.vbext_ct_ClassModule, inputCode2) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new OptionExplicitInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void NotAlreadySpecified_QuickFixWorks() -// { -// const string inputCode = @""; -// const string expectedCode = -//@"Option Explicit -// -//"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new OptionExplicitInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// inspectionResults.First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void InspectionType() -// { -// var inspection = new OptionExplicitInspection(parseResult.State); -// Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); -// } - -// [TestMethod] -// public void InspectionName() -// { -// const string inspectionName = "OptionExplicitInspection"; -// var inspection = new OptionExplicitInspection(parseResult.State); - -// Assert.AreEqual(inspectionName, inspection.Name); -// } -// } + [TestClass] + public class OptionExplicitInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void NotAlreadySpecified_ReturnsResult() + { + const string inputCode = @""; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new OptionExplicitInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void AlreadySpecified_DoesNotReturnResult() + { + const string inputCode = @"Option Explicit"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new OptionExplicitInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void NotAlreadySpecified_ReturnsMultipleResults() + { + const string inputCode = @""; + + //Arrange + var builder = new MockVbeBuilder(); + var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) + .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) + .AddComponent("Class2", vbext_ComponentType.vbext_ct_ClassModule, inputCode) + .Build(); + var vbe = builder.AddProject(project).Build(); + + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new OptionExplicitInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void PartiallySpecified_ReturnsResults() + { + const string inputCode1 = @""; + const string inputCode2 = @"Option Explicit"; + + //Arrange + var builder = new MockVbeBuilder(); + var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) + .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode1) + .AddComponent("Class2", vbext_ComponentType.vbext_ct_ClassModule, inputCode2) + .Build(); + var vbe = builder.AddProject(project).Build(); + + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new OptionExplicitInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void NotAlreadySpecified_QuickFixWorks() + { + const string inputCode = @""; + const string expectedCode = +@"Option Explicit + +"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new OptionExplicitInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + inspectionResults.First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new OptionExplicitInspection(null); + Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "OptionExplicitInspection"; + var inspection = new OptionExplicitInspection(null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file diff --git a/RubberduckTests/Inspections/ParameterCanBeByValInspectionTests.cs b/RubberduckTests/Inspections/ParameterCanBeByValInspectionTests.cs index 1961081a0b..ce0cbae633 100644 --- a/RubberduckTests/Inspections/ParameterCanBeByValInspectionTests.cs +++ b/RubberduckTests/Inspections/ParameterCanBeByValInspectionTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Threading; using Microsoft.Vbe.Interop; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -6,231 +7,258 @@ using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor.Extensions; using Rubberduck.VBEditor.VBEHost; -using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; using RubberduckTests.Mocks; namespace RubberduckTests.Inspections { -// [TestClass] -// public class ParameterCanBeByValInspectionTests -// { -// [TestMethod] -// public void ParameterCanByByVal_ReturnsResult_PassedByNotSpecified() -// { -// const string inputCode = -//@"Sub Foo(arg1 As String) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ParameterCanBeByValInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ParameterCanByByVal_ReturnsResult_PassedByRef_Unassigned() -// { -// const string inputCode = -//@"Sub Foo(ByRef arg1 As String) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ParameterCanBeByValInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ParameterCanByByVal_ReturnsResult_Multiple() -// { -// const string inputCode = -//@"Sub Foo(arg1 As String, arg2 As Date) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ParameterCanBeByValInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(2, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ParameterCanByByVal_DoesNotReturnResult_PassedByValExplicitly() -// { -// const string inputCode = -//@"Sub Foo(ByVal arg1 As String) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ParameterCanBeByValInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ParameterCanByByVal_DoesNotReturnResult_PassedByRefAndAssigned() -// { -// const string inputCode = -//@"Sub Foo(ByRef arg1 As String) -// arg1 = ""test"" -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ParameterCanBeByValInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(0, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ParameterCanByByVal_ReturnsResult_SomeParams() -// { -// const string inputCode = -//@"Sub Foo(arg1 As String, ByVal arg2 As Integer) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ParameterCanBeByValInspection(parseResult.State); -// var inspectionResults = inspection.GetInspectionResults(); - -// Assert.AreEqual(1, inspectionResults.Count()); -// } - -// [TestMethod] -// public void ParameterCanByByVal_ReturnsResult_QuickFixWorks_PassedByUnspecified() -// { -// const string inputCode = -//@"Sub Foo(arg1 As String) -//End Sub"; - -// const string expectedCode = -//@"Sub Foo(ByVal arg1 As String) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ParameterCanBeByValInspection(parseResult.State); -// inspection.GetInspectionResults().First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void ParameterCanByByVal_ReturnsResult_QuickFixWorks_PassedByRefUnassigned() -// { -// const string inputCode = -//@"Sub Foo(arg1 As String) -//End Sub"; - -// const string expectedCode = -//@"Sub Foo(ByVal arg1 As String) -//End Sub"; - -// //Arrange -// var builder = new MockVbeBuilder(); -// var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) -// .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) -// .Build().Object; -// var module = project.VBComponents.Item(0).CodeModule; - -// var codePaneFactory = new CodePaneWrapperFactory(); -// var mockHost = new Mock(); -// mockHost.SetupAllProperties(); -// var parseResult = new RubberduckParser().Parse(project); - -// var inspection = new ParameterCanBeByValInspection(parseResult.State); -// inspection.GetInspectionResults().First().QuickFixes.First().Fix(); - -// Assert.AreEqual(expectedCode, module.Lines()); -// } - -// [TestMethod] -// public void InspectionType() -// { -// var inspection = new ParameterCanBeByValInspection(parseResult.State); -// Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); -// } - -// [TestMethod] -// public void InspectionName() -// { -// const string inspectionName = "ParameterCanBeByValInspection"; -// var inspection = new ParameterCanBeByValInspection(parseResult.State); - -// Assert.AreEqual(inspectionName, inspection.Name); -// } -// } + [TestClass] + public class ParameterCanBeByValInspectionTests + { + private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(0, 1); + + void State_StateChanged(object sender, ParserStateEventArgs e) + { + if (e.State == ParserState.Ready) + { + _semaphore.Release(); + } + } + + [TestMethod] + public void ParameterCanByByVal_ReturnsResult_PassedByNotSpecified() + { + const string inputCode = +@"Sub Foo(arg1 As String) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ParameterCanBeByValInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ParameterCanByByVal_ReturnsResult_PassedByRef_Unassigned() + { + const string inputCode = +@"Sub Foo(ByRef arg1 As String) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ParameterCanBeByValInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ParameterCanByByVal_ReturnsResult_Multiple() + { + const string inputCode = +@"Sub Foo(arg1 As String, arg2 As Date) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ParameterCanBeByValInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(2, inspectionResults.Count()); + } + + [TestMethod] + public void ParameterCanByByVal_DoesNotReturnResult_PassedByValExplicitly() + { + const string inputCode = +@"Sub Foo(ByVal arg1 As String) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ParameterCanBeByValInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void ParameterCanByByVal_DoesNotReturnResult_PassedByRefAndAssigned() + { + const string inputCode = +@"Sub Foo(ByRef arg1 As String) + arg1 = ""test"" +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ParameterCanBeByValInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(0, inspectionResults.Count()); + } + + [TestMethod] + public void ParameterCanByByVal_ReturnsResult_SomeParams() + { + const string inputCode = +@"Sub Foo(arg1 As String, ByVal arg2 As Integer) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ParameterCanBeByValInspection(parseResult.State); + var inspectionResults = inspection.GetInspectionResults(); + + Assert.AreEqual(1, inspectionResults.Count()); + } + + [TestMethod] + public void ParameterCanByByVal_ReturnsResult_QuickFixWorks_PassedByUnspecified() + { + const string inputCode = +@"Sub Foo(arg1 As String) +End Sub"; + + const string expectedCode = +@"Sub Foo(ByVal arg1 As String) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ParameterCanBeByValInspection(parseResult.State); + inspection.GetInspectionResults().First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void ParameterCanByByVal_ReturnsResult_QuickFixWorks_PassedByRefUnassigned() + { + const string inputCode = +@"Sub Foo(arg1 As String) +End Sub"; + + const string expectedCode = +@"Sub Foo(ByVal arg1 As String) +End Sub"; + + //Arrange + var builder = new MockVbeBuilder(); + VBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); + var project = vbe.Object.VBProjects.Item(0); + var module = project.VBComponents.Item(0).CodeModule; + var mockHost = new Mock(); + mockHost.SetupAllProperties(); + var parseResult = new RubberduckParser(vbe.Object, new RubberduckParserState()); + + parseResult.State.StateChanged += State_StateChanged; + parseResult.State.OnParseRequested(); + _semaphore.Wait(); + parseResult.State.StateChanged -= State_StateChanged; + + var inspection = new ParameterCanBeByValInspection(parseResult.State); + inspection.GetInspectionResults().First().QuickFixes.First().Fix(); + + Assert.AreEqual(expectedCode, module.Lines()); + } + + [TestMethod] + public void InspectionType() + { + var inspection = new ParameterCanBeByValInspection(null); + Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType); + } + + [TestMethod] + public void InspectionName() + { + const string inspectionName = "ParameterCanBeByValInspection"; + var inspection = new ParameterCanBeByValInspection(null); + + Assert.AreEqual(inspectionName, inspection.Name); + } + } } \ No newline at end of file