Skip to content

Commit

Permalink
Merge branch 'next' of https://github.com/rubberduck-vba/Rubberduck i…
Browse files Browse the repository at this point in the history
…nto MiscBugFixes2
  • Loading branch information
bclothier committed Oct 14, 2019
2 parents 137d68a + f202cad commit a3a642c
Show file tree
Hide file tree
Showing 27 changed files with 436 additions and 1,771 deletions.
22 changes: 10 additions & 12 deletions Rubberduck.Core/UI/Converters/ImageSourceConverter.cs
Expand Up @@ -12,19 +12,17 @@ public abstract class ImageSourceConverter : IValueConverter
{
protected static ImageSource ToImageSource(Image source)
{
using (var ms = new MemoryStream())
{
((Bitmap) source).Save(ms, System.Drawing.Imaging.ImageFormat.Png);
var image = new BitmapImage();
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad;
ms.Seek(0, SeekOrigin.Begin);
image.StreamSource = ms;
image.EndInit();
image.Freeze();
var ms = new MemoryStream();

return image;
}
((Bitmap)source).Save(ms, System.Drawing.Imaging.ImageFormat.Png);
var image = new BitmapImage();
image.BeginInit();
ms.Seek(0, SeekOrigin.Begin);
image.StreamSource = ms;
image.EndInit();
image.Freeze();

return image;
}

public abstract object Convert(object value, Type targetType, object parameter, CultureInfo culture);
Expand Down
@@ -1,27 +1,28 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using NUnit.Framework;
using Rubberduck.Inspections.Concrete;
using Rubberduck.Parsing.Inspections.Abstract;
using Rubberduck.Parsing.VBA;
using Rubberduck.VBEditor.SafeComWrappers;
using RubberduckTests.Mocks;

namespace RubberduckTests.Inspections
{
[TestFixture]
public class ApplicationWorksheetFunctionInspectionTests
public class ApplicationWorksheetFunctionInspectionTests : InspectionTestsBase
{
private static RubberduckParserState ArrangeParserAndParse(string inputCode)
private IEnumerable<IInspectionResult> GetInspectionResultsUsingExcelLibrary(string inputCode)
{
var builder = new MockVbeBuilder();
var project = builder.ProjectBuilder("VBAProject", ProjectProtection.Unprotected)
.AddComponent("Module1", ComponentType.StandardModule, inputCode)
.AddReference("Excel", MockVbeBuilder.LibraryPathMsExcel, 1, 8, true)
.Build();

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

return MockParser.CreateAndParse(vbe.Object); ;
var vbe = builder.AddProject(project).Build().Object;
return InspectionResults(vbe);
}

[Test]
Expand All @@ -34,15 +35,7 @@ public void ApplicationWorksheetFunction_ReturnsResult_GlobalApplication()
foo = Application.Pi
End Sub
";

using (var state = ArrangeParserAndParse(inputCode))
{

var inspection = new ApplicationWorksheetFunctionInspection(state);
var inspectionResults = inspection.GetInspectionResults(CancellationToken.None);

Assert.AreEqual(1, inspectionResults.Count());
}
Assert.AreEqual(1, GetInspectionResultsUsingExcelLibrary(inputCode).Count());
}

[Test]
Expand All @@ -57,15 +50,7 @@ With Application
End With
End Sub
";

using (var state = ArrangeParserAndParse(inputCode))
{

var inspection = new ApplicationWorksheetFunctionInspection(state);
var inspectionResults = inspection.GetInspectionResults(CancellationToken.None);

Assert.AreEqual(1, inspectionResults.Count());
}
Assert.AreEqual(1, GetInspectionResultsUsingExcelLibrary(inputCode).Count());
}

[Test]
Expand All @@ -80,15 +65,7 @@ public void ApplicationWorksheetFunction_ReturnsResult_ApplicationVariable()
foo = xlApp.Pi
End Sub
";

using (var state = ArrangeParserAndParse(inputCode))
{

var inspection = new ApplicationWorksheetFunctionInspection(state);
var inspectionResults = inspection.GetInspectionResults(CancellationToken.None);

Assert.AreEqual(1, inspectionResults.Count());
}
Assert.AreEqual(1, GetInspectionResultsUsingExcelLibrary(inputCode).Count());
}

[Test]
Expand All @@ -105,15 +82,7 @@ With xlApp
End With
End Sub
";

using (var state = ArrangeParserAndParse(inputCode))
{

var inspection = new ApplicationWorksheetFunctionInspection(state);
var inspectionResults = inspection.GetInspectionResults(CancellationToken.None);

Assert.AreEqual(1, inspectionResults.Count());
}
Assert.AreEqual(1, GetInspectionResultsUsingExcelLibrary(inputCode).Count());
}

[Test]
Expand All @@ -126,15 +95,7 @@ public void ApplicationWorksheetFunction_DoesNotReturnResult_ExplicitUseGlobalAp
foo = Application.WorksheetFunction.Pi
End Sub
";

using (var state = ArrangeParserAndParse(inputCode))
{

var inspection = new ApplicationWorksheetFunctionInspection(state);
var inspectionResults = inspection.GetInspectionResults(CancellationToken.None);

Assert.IsFalse(inspectionResults.Any());
}
Assert.AreEqual(0, GetInspectionResultsUsingExcelLibrary(inputCode).Count());
}

[Test]
Expand All @@ -149,15 +110,7 @@ public void ApplicationWorksheetFunction_DoesNotReturnResult_ExplicitUseApplicat
foo = xlApp.WorksheetFunction.Pi
End Sub
";

using (var state = ArrangeParserAndParse(inputCode))
{

var inspection = new ApplicationWorksheetFunctionInspection(state);
var inspectionResults = inspection.GetInspectionResults(CancellationToken.None);

Assert.IsFalse(inspectionResults.Any());
}
Assert.AreEqual(0, GetInspectionResultsUsingExcelLibrary(inputCode).Count());
}

[Test]
Expand All @@ -170,25 +123,7 @@ public void ApplicationWorksheetFunction_DoesNotReturnResult_NoExcelReference()
foo = Application.Pi
End Sub
";
var builder = new MockVbeBuilder();
var project = builder.ProjectBuilder("VBAProject", ProjectProtection.Unprotected)
.AddComponent("Module1", ComponentType.StandardModule, inputCode)
.Build();

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

using (var state = MockParser.CreateAndParse(vbe.Object))
{
if (state.Status >= ParserState.Error)
{
Assert.Inconclusive("Parser Error");
}

var inspection = new ApplicationWorksheetFunctionInspection(state);
var inspectionResults = inspection.GetInspectionResults(CancellationToken.None);

Assert.IsFalse(inspectionResults.Any());
}
Assert.AreEqual(0, InspectionResultsForStandardModule(inputCode).Count());
}

[Test]
Expand All @@ -202,15 +137,7 @@ public void ApplicationWorksheetFunction_Ignored_DoesNotReturnResult()
foo = Application.Pi
End Sub
";

using (var state = ArrangeParserAndParse(inputCode))
{

var inspection = new ApplicationWorksheetFunctionInspection(state);
var inspectionResults = inspection.GetInspectionResults(CancellationToken.None);

Assert.IsFalse(inspectionResults.Any());
}
Assert.AreEqual(0, GetInspectionResultsUsingExcelLibrary(inputCode).Count());
}

[Test]
Expand All @@ -222,5 +149,10 @@ public void InspectionName()

Assert.AreEqual(inspectionName, inspection.Name);
}

protected override IInspection InspectionUnderTest(RubberduckParserState state)
{
return new ApplicationWorksheetFunctionInspection(state);
}
}
}
Expand Up @@ -16,7 +16,7 @@
namespace RubberduckTests.Inspections
{
[TestFixture]
public class ArgumentWithIncompatibleObjectTypeInspectionTests
public class ArgumentWithIncompatibleObjectTypeInspectionTests : InspectionTestsBase
{
[Test]
[Category("Inspections")]
Expand Down Expand Up @@ -61,23 +61,16 @@ End Sub
End Sub
";

var vbe = new MockVbeBuilder()
.ProjectBuilder("TestProject", ProjectProtection.Unprotected)
.AddComponent("Class1", ComponentType.ClassModule, class1)
.AddComponent("Interface1", ComponentType.ClassModule, interface1)
.AddComponent("Module1", ComponentType.StandardModule, module1)
.AddProjectToVbeBuilder()
.Build()
.Object;
var vbe = BuildTestVBE(class1, interface1, module1);

var setTypeResolverMock = new Mock<ISetTypeResolver>();
setTypeResolverMock.Setup(m =>
m.SetTypeName(It.IsAny<VBAParser.ExpressionContext>(), It.IsAny<QualifiedModuleName>()))
.Returns((VBAParser.ExpressionContext context, QualifiedModuleName qmn) => expressionFullTypeName);

var inspectionResults = InspectionResults(vbe, setTypeResolverMock.Object).ToList();
var inspectionResults = InspectionResults(vbe, setTypeResolverMock.Object);

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

[Test]
Expand Down Expand Up @@ -105,19 +98,8 @@ End Sub
Private Sub Bar(ParamArray baz)
End Sub
";

var vbe = new MockVbeBuilder()
.ProjectBuilder("TestProject", ProjectProtection.Unprotected)
.AddComponent("Class1", ComponentType.ClassModule, class1)
.AddComponent("Interface1", ComponentType.ClassModule, interface1)
.AddComponent("Module1", ComponentType.StandardModule, module1)
.AddProjectToVbeBuilder()
.Build()
.Object;

var inspectionResults = InspectionResults(vbe).ToList();

Assert.IsFalse(inspectionResults.Any());
var vbe = BuildTestVBE(class1, interface1, module1);
Assert.AreEqual(0, InspectionResults(vbe).Count());
}

[Test]
Expand Down Expand Up @@ -145,46 +127,34 @@ End Sub
Private Sub Bar(Optional baz As Class1 = Nothing, Optional bazBaz As Class1 = Nothing)
End Sub
";
var vbe = BuildTestVBE(class1, interface1, module1);
Assert.AreEqual(0, InspectionResults(vbe).Count());
}

var vbe = new MockVbeBuilder()
private static IVBE BuildTestVBE(string class1, string interface1, string module1)
{
return new MockVbeBuilder()
.ProjectBuilder("TestProject", ProjectProtection.Unprotected)
.AddComponent("Class1", ComponentType.ClassModule, class1)
.AddComponent("Interface1", ComponentType.ClassModule, interface1)
.AddComponent("Module1", ComponentType.StandardModule, module1)
.AddProjectToVbeBuilder()
.Build()
.Object;

var inspectionResults = InspectionResults(vbe).ToList();

Assert.IsFalse(inspectionResults.Any());
}

private static IEnumerable<IInspectionResult> InspectionResults(params (string moduleName, string content, ComponentType componentType)[] testModules)
{
var vbe = MockVbeBuilder.BuildFromModules(testModules).Object;
return InspectionResults(vbe);
}

private static IEnumerable<IInspectionResult> InspectionResults(ISetTypeResolver setTypeResolver, params (string moduleName, string content, ComponentType componentType)[] testModules)
{
var vbe = MockVbeBuilder.BuildFromModules(testModules).Object;
return InspectionResults(vbe, setTypeResolver);
}

private static IEnumerable<IInspectionResult> InspectionResults(IVBE vbe, ISetTypeResolver setTypeResolver = null)
private static IEnumerable<IInspectionResult> InspectionResults(IVBE vbe, ISetTypeResolver setTypeResolver)
{
using (var state = MockParser.CreateAndParse(vbe))
{
var inspection = InspectionUnderTest(state, setTypeResolver);
var inspection = new ArgumentWithIncompatibleObjectTypeInspection(state, setTypeResolver);
return inspection.GetInspectionResults(CancellationToken.None);
}
}

private static IInspection InspectionUnderTest(RubberduckParserState state, ISetTypeResolver setTypeResolver = null)
protected override IInspection InspectionUnderTest(RubberduckParserState state)
{
var setTypeResolverToUse = setTypeResolver ?? new SetTypeResolver(state);
return new ArgumentWithIncompatibleObjectTypeInspection(state, setTypeResolverToUse);
return new ArgumentWithIncompatibleObjectTypeInspection(state, new SetTypeResolver(state));
}
}
}

0 comments on commit a3a642c

Please sign in to comment.