Skip to content

Commit

Permalink
Merge branch 'parserUpdates' of https://github.com/Hosch250/Rubberduck
Browse files Browse the repository at this point in the history
…into tests
  • Loading branch information
Hosch250 committed Jul 8, 2016
2 parents 8fc93ec + ecf2a06 commit 3d4b519
Showing 1 changed file with 50 additions and 18 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
using System.Linq;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using Microsoft.Vbe.Interop;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
using Rubberduck.Inspections;
using Rubberduck.Parsing;
using Rubberduck.Parsing.Annotations;
using Rubberduck.Parsing.Symbols;
using Rubberduck.Parsing.VBA;
using Rubberduck.VBEditor;
Expand All @@ -16,7 +18,7 @@ namespace RubberduckTests.Inspections
[TestClass]
public class ImplicitActiveSheetReferenceInspectionTests
{
[TestMethod, Ignore] // doesn't pick up the reference to "Range".
[TestMethod] // doesn't pick up the reference to "Range".
[TestCategory("Inspections")]
public void ReportsRange()
{
Expand All @@ -29,12 +31,9 @@ End Sub

//Arrange
var builder = new MockVbeBuilder();
var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none)
var project = builder.ProjectBuilder("TestProject1", "TestProject1", vbext_ProjectProtection.vbext_pp_none)
.AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode)
.AddReference("Excel", string.Empty, true)

// Apparently, the COM loader can't find it when it isn't actually loaded...
//.AddReference("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", true)
.AddReference("Excel", "C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", true)
.Build();
var vbe = builder.AddProject(project).Build();

Expand All @@ -46,22 +45,55 @@ End Sub
var excelDeclaration = new ProjectDeclaration(new QualifiedMemberName(new QualifiedModuleName("Excel",
"C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "Excel"), "Excel"), "Excel", true);

var listColumnDeclaration = new ClassModuleDeclaration(new QualifiedMemberName(
var globalDeclaration = new ClassModuleDeclaration(new QualifiedMemberName(
new QualifiedModuleName("Excel",
"C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "_Global"),
"_Global"), excelDeclaration, "_Global", true, null, null);

var globalCoClassDeclarationAttributes = new Attributes();
globalCoClassDeclarationAttributes.AddPredeclaredIdTypeAttribute();
globalCoClassDeclarationAttributes.AddGlobalClassAttribute();

var globalCoClassDeclaration = new ClassModuleDeclaration(new QualifiedMemberName(
new QualifiedModuleName("Excel",
"C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "Global"),
"Global"), excelDeclaration, "Global", true, null, globalCoClassDeclarationAttributes);

globalDeclaration.AddSubtype(globalCoClassDeclaration);
globalCoClassDeclaration.AddSupertype(globalDeclaration);
globalCoClassDeclaration.AddSupertype("_Global");

var rangeClassModuleDeclaration = new ClassModuleDeclaration(new QualifiedMemberName(
new QualifiedModuleName("Excel",
"C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "Range"),
"Range"), excelDeclaration, "Range", true, new List<IAnnotation>(), new Attributes());

var rangeDeclaration = new PropertyGetDeclaration(new QualifiedMemberName(
new QualifiedModuleName("Excel",
"C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "_Global"), "Range"),
globalDeclaration, globalDeclaration, "Range", null, null, Accessibility.Global, null, Selection.Home,
false, true, new List<IAnnotation>(), new Attributes());

var firstParamDeclaration = new ParameterDeclaration(new QualifiedMemberName(
new QualifiedModuleName("Excel",
"C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "_Global"),
"Cell1"), rangeDeclaration, "Variant", null, null, false, false);

var secondParamDeclaration = new ParameterDeclaration(new QualifiedMemberName(
new QualifiedModuleName("Excel",
"C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "ListColumn"),
"ListColumn"), excelDeclaration, "ListColumn", true, null, null);
"C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "_Global"),
"Cell2"), rangeDeclaration, "Variant", null, null, true, false);

var rangeDeclaration =
new Declaration(
new QualifiedMemberName(
new QualifiedModuleName("Excel",
"C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "ListColumn"), "Range"),
listColumnDeclaration, "EXCEL.EXE;Excel.ListColumn", "Range", null, false, false, Accessibility.Global,
(DeclarationType)3712, false, null, true, null, new Attributes());
rangeDeclaration.AddParameter(firstParamDeclaration);
rangeDeclaration.AddParameter(secondParamDeclaration);

parser.State.AddDeclaration(excelDeclaration);
parser.State.AddDeclaration(listColumnDeclaration);
parser.State.AddDeclaration(globalDeclaration);
parser.State.AddDeclaration(globalCoClassDeclaration);
parser.State.AddDeclaration(rangeClassModuleDeclaration);
parser.State.AddDeclaration(rangeDeclaration);
parser.State.AddDeclaration(firstParamDeclaration);
parser.State.AddDeclaration(secondParamDeclaration);

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

0 comments on commit 3d4b519

Please sign in to comment.