Skip to content

Commit

Permalink
Add unit tests for recursive calls, check, the LHS, RHS and the prope…
Browse files Browse the repository at this point in the history
…rty assignment.
  • Loading branch information
bclothier committed Apr 8, 2018
1 parent 39141db commit 50e778f
Showing 1 changed file with 75 additions and 17 deletions.
92 changes: 75 additions & 17 deletions RubberduckTests/Symbols/DeclarationFinderTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -672,14 +672,20 @@ End Sub

[Test]
[Category("Resolver")]
public void SameNameForProjectAndClass_ScopedDeclaration()
public void SameNameForProjectAndClass_ScopedDeclaration_ProjectSelection()
{
var refEditClass = @"
Option Explicit
Public Sub Something()
Debug.Print ""derp""
End Sub";
Private ValueField As Variant
Public Property Get Value()
Value = ValueField
End Property
Public Property Let Value(Value As Variant)
ValueField = Value
End Property";

var code =
@"
Expand All @@ -689,7 +695,7 @@ Option Explicit
Dim myEdit As RefEdit.RefEdit
Set myEdit = New RefEdit.RefEdit
myEdit.Something()
myEdit.Value = ""abc""
End Sub
";
var vbe = new MockVbeBuilder()
Expand All @@ -702,22 +708,74 @@ End Sub
var parser = MockParser.Create(vbe.Object);
parser.Parse(new CancellationTokenSource());

var expected = parser.State.DeclarationFinder.DeclarationsWithType(DeclarationType.Project).Single();
var actual = parser.State.DeclarationFinder.FindSelectedDeclaration(vbe.Object.ActiveCodePane);

Assert.AreEqual(expected, actual, "Expected {0}, resolved to {1}", expected.DeclarationType, actual.DeclarationType);
}

[Test]
[Category("Resolver")]
[Ignore("WIP until PR is finalized")]
public void SameNameForProjectAndClass_ScopedDeclaration_ClassSelection()
{
var refEditClass = @"
Option Explicit
Private ValueField As Variant
Public Property Get Value()
Value = ValueField
End Property
Public Property Let Value(Value As Variant)
ValueField = Value
End Property";

var code =
@"
Option Explicit
Public Sub foo()
Dim myEdit As RefEdit.RefEdit
Set myEdit = New RefEdit.RefEdit
myEdit.Value = ""abc""
End Sub
";
var vbe = new MockVbeBuilder()
.ProjectBuilder("RefEdit", ProjectProtection.Unprotected)
.AddComponent("RefEdit", ComponentType.ClassModule, refEditClass)
.AddComponent("Test", ComponentType.StandardModule, code, new Selection(6, 31))
.AddProjectToVbeBuilder()
.Build();

var parser = MockParser.Create(vbe.Object);
parser.Parse(new CancellationTokenSource());

var expected = parser.State.DeclarationFinder.DeclarationsWithType(DeclarationType.ClassModule).Single();
var actual = parser.State.DeclarationFinder.FindSelectedDeclaration(vbe.Object.ActiveCodePane);

Assert.AreEqual(expected, actual, "Expected {0}, resolved to {1}", expected.DeclarationType, actual.DeclarationType);
}

[Test]
[Category("Resolver")]
[Ignore("WIP until PR is finalized")]
public void SameNameForProjectAndClassImplicit_ScopedDeclaration()
{
var refEditClass = @"
Option Explicit
Public Sub Something()
Debug.Print ""derp""
End Sub";
Private ValueField As Variant
Public Property Get Value()
Value = ValueField
End Property
Public Property Let Value(Value As Variant)
ValueField = Value
End Property";

var code =
@"
Expand All @@ -727,20 +785,21 @@ Option Explicit
Dim myEdit As RefEdit
Set myEdit = New RefEdit
myEdit.Something()
myEdit.Value = ""abc""
End Sub
";

var vbe = new MockVbeBuilder()
.ProjectBuilder("RefEdit", ProjectProtection.Unprotected)
.AddComponent("RefEdit", ComponentType.ClassModule, refEditClass)
.AddComponent("Test", ComponentType.StandardModule, code, new Selection(8, 6))
.AddComponent("Test", ComponentType.StandardModule, code, new Selection(7, 6))
.AddProjectToVbeBuilder()
.Build();

var parser = MockParser.Create(vbe.Object);
parser.Parse(new CancellationTokenSource());

var expected = ParserState.Error;
var expected = ParserState.ResolverError;
var actual = parser.State.Status;

Assert.AreEqual(expected, actual, "Expected {0}, resolved to {1}", expected, actual);
Expand Down Expand Up @@ -776,8 +835,7 @@ Option Explicit

var parser = MockParser.Create(vbe.Object);
parser.Parse(new CancellationTokenSource());

var expected = parser.State.DeclarationFinder.DeclarationsWithType(DeclarationType.Function).Single(d => d.QualifiedModuleName.Name == "Test");
var expected = parser.State.DeclarationFinder.DeclarationsWithType(DeclarationType.Function).Single(d => d.QualifiedModuleName.ComponentName == "Test");
var actual = parser.State.DeclarationFinder.FindSelectedDeclaration(vbe.Object.ActiveCodePane);

Assert.AreEqual(expected, actual, "Expected {0}, resolved to {1}", expected, actual);
Expand Down Expand Up @@ -814,7 +872,7 @@ Option Explicit
var parser = MockParser.Create(vbe.Object);
parser.Parse(new CancellationTokenSource());

var expected = parser.State.DeclarationFinder.DeclarationsWithType(DeclarationType.Function).Single(d => d.QualifiedModuleName.Name == "Test");
var expected = parser.State.DeclarationFinder.DeclarationsWithType(DeclarationType.Function).Single(d => d.QualifiedModuleName.ComponentName == "Test");
var actual = parser.State.DeclarationFinder.FindSelectedDeclaration(vbe.Object.ActiveCodePane);

Assert.AreEqual(expected, actual, "Expected {0}, resolved to {1}", expected, actual);
Expand Down Expand Up @@ -843,15 +901,15 @@ Option Explicit

var vbe = new MockVbeBuilder()
.ProjectBuilder("TestProject", ProjectProtection.Unprotected)
.AddComponent("Class1", ComponentType.ClassModule, sillyClass, new Selection(5, 10))
.AddComponent("Test", ComponentType.StandardModule, code)
.AddComponent("Class1", ComponentType.ClassModule, sillyClass, new Selection(4, 10))
.AddProjectToVbeBuilder()
.Build();

var parser = MockParser.Create(vbe.Object);
parser.Parse(new CancellationTokenSource());

var expected = parser.State.DeclarationFinder.DeclarationsWithType(DeclarationType.Function).Single(d => d.QualifiedModuleName.Name == "Class1");
var expected = parser.State.DeclarationFinder.DeclarationsWithType(DeclarationType.Function).Single(d => d.QualifiedModuleName.ComponentName == "Class1");
var actual = parser.State.DeclarationFinder.FindSelectedDeclaration(vbe.Object.ActiveCodePane);

Assert.AreEqual(expected, actual, "Expected {0}, resolved to {1}", expected, actual);
Expand Down

0 comments on commit 50e778f

Please sign in to comment.