Skip to content

Commit 05073a0

Browse files
committed
chained builder calls. todo: debug resolver to fix the remaining 4 failing tests.
1 parent 73fe8f6 commit 05073a0

File tree

2 files changed

+81
-78
lines changed

2 files changed

+81
-78
lines changed

RubberduckTests/Binding/MemberAccessTypeBindingTests.cs

Lines changed: 42 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,15 @@ public class MemberAccessTypeBindingTests
2222
[TestMethod]
2323
public void LExpressionIsProjectAndUnrestrictedNameIsProject()
2424
{
25+
var enclosingModuleCode = string.Format("Public WithEvents anything As {0}.{0}", BindingTargetName);
26+
2527
var builder = new MockVbeBuilder();
26-
var enclosingProjectBuilder = builder.ProjectBuilder(BindingTargetName, ProjectProtection.Unprotected);
27-
string enclosingModuleCode = string.Format("Public WithEvents anything As {0}.{0}", BindingTargetName);
28-
enclosingProjectBuilder.AddComponent(TestClassName, ComponentType.ClassModule, enclosingModuleCode);
29-
var enclosingProject = enclosingProjectBuilder.Build();
28+
var enclosingProject = builder
29+
.ProjectBuilder(BindingTargetName, ProjectProtection.Unprotected)
30+
.AddComponent(TestClassName, ComponentType.ClassModule, enclosingModuleCode)
31+
.Build();
3032
builder.AddProject(enclosingProject);
33+
3134
var vbe = builder.Build();
3235
var state = Parse(vbe);
3336

@@ -40,13 +43,16 @@ public void LExpressionIsProjectAndUnrestrictedNameIsProject()
4043
[TestMethod]
4144
public void LExpressionIsProjectAndUnrestrictedNameIsProceduralModule()
4245
{
43-
const string PROJECT_NAME = "AnyName";
46+
const string projectName = "AnyName";
47+
var enclosingModuleCode = string.Format("Public WithEvents anything As {0}.{1}", projectName, BindingTargetName);
48+
4449
var builder = new MockVbeBuilder();
45-
var enclosingProjectBuilder = builder.ProjectBuilder(PROJECT_NAME, ProjectProtection.Unprotected);
46-
string enclosingModuleCode = string.Format("Public WithEvents anything As {0}.{1}", PROJECT_NAME, BindingTargetName);
47-
enclosingProjectBuilder.AddComponent(BindingTargetName, ComponentType.StandardModule, enclosingModuleCode);
48-
var enclosingProject = enclosingProjectBuilder.Build();
50+
var enclosingProject = builder
51+
.ProjectBuilder(projectName, ProjectProtection.Unprotected)
52+
.AddComponent(BindingTargetName, ComponentType.StandardModule, enclosingModuleCode)
53+
.Build();
4954
builder.AddProject(enclosingProject);
55+
5056
var vbe = builder.Build();
5157
var state = Parse(vbe);
5258

@@ -58,13 +64,16 @@ public void LExpressionIsProjectAndUnrestrictedNameIsProceduralModule()
5864
[TestMethod]
5965
public void LExpressionIsProjectAndUnrestrictedNameIsClassModule()
6066
{
61-
const string PROJECT_NAME = "AnyName";
67+
const string projectName = "AnyName";
68+
var enclosingModuleCode = string.Format("Public WithEvents anything As {0}.{1}", projectName, BindingTargetName);
69+
6270
var builder = new MockVbeBuilder();
63-
var enclosingProjectBuilder = builder.ProjectBuilder(PROJECT_NAME, ProjectProtection.Unprotected);
64-
string enclosingModuleCode = string.Format("Public WithEvents anything As {0}.{1}", PROJECT_NAME, BindingTargetName);
65-
enclosingProjectBuilder.AddComponent(BindingTargetName, ComponentType.ClassModule, enclosingModuleCode);
66-
var enclosingProject = enclosingProjectBuilder.Build();
71+
var enclosingProject = builder
72+
.ProjectBuilder(projectName, ProjectProtection.Unprotected)
73+
.AddComponent(BindingTargetName, ComponentType.ClassModule, enclosingModuleCode)
74+
.Build();
6775
builder.AddProject(enclosingProject);
76+
6877
var vbe = builder.Build();
6978
var state = Parse(vbe);
7079

@@ -73,12 +82,12 @@ public void LExpressionIsProjectAndUnrestrictedNameIsClassModule()
7382
Assert.AreEqual(1, declaration.References.Count());
7483
}
7584

76-
[Ignore] // this failing test seems to be a resolver bug.
7785
[TestMethod]
7886
public void LExpressionIsProjectAndUnrestrictedNameIsType()
7987
{
8088
var builder = new MockVbeBuilder();
8189
const string referencedProjectName = "AnyReferencedProjectName";
90+
var code = string.Format("Public WithEvents anything As {0}.{1}", referencedProjectName, BindingTargetName);
8291

8392
var referencedProject = builder
8493
.ProjectBuilder(referencedProjectName, ReferencedProjectFilepath, ProjectProtection.Unprotected)
@@ -89,7 +98,7 @@ public void LExpressionIsProjectAndUnrestrictedNameIsType()
8998
var enclosingProject = builder
9099
.ProjectBuilder("AnyProjectName", ProjectProtection.Unprotected)
91100
.AddReference(referencedProjectName, ReferencedProjectFilepath)
92-
.AddComponent(TestClassName, ComponentType.ClassModule, string.Format("Public WithEvents anything As {0}.{1}", referencedProjectName, BindingTargetName))
101+
.AddComponent(TestClassName, ComponentType.ClassModule, code)
93102
.Build();
94103
builder.AddProject(enclosingProject);
95104

@@ -105,11 +114,13 @@ public void LExpressionIsProjectAndUnrestrictedNameIsType()
105114
public void LExpressionIsModuleAndUnrestrictedNameIsType()
106115
{
107116
var builder = new MockVbeBuilder();
108-
const string CLASS_NAME = "AnyName";
109-
var enclosingProjectBuilder = builder.ProjectBuilder("AnyProjectName", ProjectProtection.Unprotected);
110-
enclosingProjectBuilder.AddComponent(TestClassName, ComponentType.ClassModule, string.Format("Public WithEvents anything As {0}.{1}", CLASS_NAME, BindingTargetName));
111-
enclosingProjectBuilder.AddComponent(CLASS_NAME, ComponentType.ClassModule, CreateUdt(BindingTargetName));
112-
var enclosingProject = enclosingProjectBuilder.Build();
117+
const string className = "AnyName";
118+
119+
var enclosingProject = builder
120+
.ProjectBuilder("AnyProjectName", ProjectProtection.Unprotected)
121+
.AddComponent(TestClassName, ComponentType.ClassModule, string.Format("Public WithEvents anything As {0}.{1}", className, BindingTargetName))
122+
.AddComponent(className, ComponentType.ClassModule, CreateUdt(BindingTargetName))
123+
.Build();
113124
builder.AddProject(enclosingProject);
114125

115126
var vbe = builder.Build();
@@ -123,24 +134,24 @@ public void LExpressionIsModuleAndUnrestrictedNameIsType()
123134
[TestMethod]
124135
public void NestedMemberAccessExpressions()
125136
{
137+
const string projectName = "AnyProjectName";
138+
const string className = "AnyName";
139+
126140
var builder = new MockVbeBuilder();
127-
const string PROJECT_NAME = "AnyProjectName";
128-
const string CLASS_NAME = "AnyName";
129-
var enclosingProjectBuilder = builder.ProjectBuilder(PROJECT_NAME, ProjectProtection.Unprotected);
130-
enclosingProjectBuilder.AddComponent(TestClassName, ComponentType.ClassModule, string.Format("Public WithEvents anything As {0}.{1}.{2}", PROJECT_NAME, CLASS_NAME, BindingTargetName));
131-
enclosingProjectBuilder.AddComponent(CLASS_NAME, ComponentType.ClassModule, CreateUdt(BindingTargetName));
132-
var enclosingProject = enclosingProjectBuilder.Build();
141+
var enclosingProject = builder
142+
.ProjectBuilder(projectName, ProjectProtection.Unprotected)
143+
.AddComponent(TestClassName, ComponentType.ClassModule, string.Format("Public WithEvents anything As {0}.{1}.{2}", projectName, className, BindingTargetName))
144+
.AddComponent(className, ComponentType.ClassModule, CreateUdt(BindingTargetName))
145+
.Build();
133146
builder.AddProject(enclosingProject);
134147

135148
var vbe = builder.Build();
136149
var state = Parse(vbe);
137150

138-
Declaration declaration;
139-
140-
declaration = state.AllUserDeclarations.Single(d => d.DeclarationType == DeclarationType.Project && d.ProjectName == PROJECT_NAME);
151+
var declaration = state.AllUserDeclarations.Single(d => d.DeclarationType == DeclarationType.Project && d.ProjectName == projectName);
141152
Assert.AreEqual(1, declaration.References.Count(), "Project reference expected");
142153

143-
declaration = state.AllUserDeclarations.Single(d => d.DeclarationType == DeclarationType.ClassModule && d.IdentifierName == CLASS_NAME);
154+
declaration = state.AllUserDeclarations.Single(d => d.DeclarationType == DeclarationType.ClassModule && d.IdentifierName == className);
144155
Assert.AreEqual(1, declaration.References.Count(), "Module reference expected");
145156

146157
declaration = state.AllUserDeclarations.Single(d => d.DeclarationType == DeclarationType.UserDefinedType && d.IdentifierName == BindingTargetName);

0 commit comments

Comments
 (0)