Skip to content

Commit 7067cf8

Browse files
committed
Add a new unit test for bracketed expression
1 parent 660986e commit 7067cf8

File tree

1 file changed

+47
-5
lines changed

1 file changed

+47
-5
lines changed

RubberduckTests/Refactoring/RenameTests.cs

Lines changed: 47 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -521,7 +521,6 @@ public void RenameRefactoring_RenameFunction_UpdatesReferences()
521521
@"Private Function Fo|o() As Boolean
522522
Foo = True
523523
End Function
524-
525524
Private Sub Goo()
526525
Dim var1 As Boolean
527526
var1 = Foo()
@@ -530,7 +529,6 @@ Dim var1 As Boolean
530529
@"Private Function Hoo() As Boolean
531530
Hoo = True
532531
End Function
533-
534532
Private Sub Goo()
535533
Dim var1 As Boolean
536534
var1 = Hoo()
@@ -539,6 +537,40 @@ End Sub"
539537
PerformExpectedVersusActualRenameTests(tdo, inputOutput);
540538
}
541539

540+
[Test]
541+
[Category("Refactorings")]
542+
[Category("Rename")]
543+
public void RenameVariableWithBracketedExpressionInModule()
544+
{
545+
var tdo = new RenameTestsDataObject(selection: "Foo", newName: "Hoo");
546+
var inputOutput = new RenameTestModuleDefinition("TestModule1", ComponentType.Document)
547+
{
548+
Input =
549+
@"Private Fo|o() As Long
550+
551+
Public Sub Derp()
552+
[Something].Clear
553+
End Sub",
554+
Expected =
555+
@"Private Hoo() As Long
556+
557+
Public Sub Derp()
558+
[Something].Clear
559+
End Sub"
560+
};
561+
562+
tdo.UseLibraries = true;
563+
tdo.AdditionalSetup = t =>
564+
{
565+
var hostApp = new Mock<IHostApplication>();
566+
hostApp.Setup(x => x.ApplicationName).Returns("EXCEL");
567+
var mock = Mock.Get(tdo.VBE);
568+
mock.Setup(x => x.HostApplication()).Returns(hostApp.Object);
569+
};
570+
571+
PerformExpectedVersusActualRenameTests(tdo, inputOutput);
572+
}
573+
542574
#endregion
543575
#region Rename Control Tests
544576
//All RenameControl tests are ignored because control renames depend on access to
@@ -2766,7 +2798,8 @@ private static void InitializeTestDataObject(RenameTestsDataObject tdo
27662798
tdo.MsgBox = new Mock<IMessageBox>();
27672799
tdo.MsgBox.Setup(m => m.ConfirmYesNo(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<bool>())).Returns(tdo.MsgBoxReturn == ConfirmationOutcome.Yes);
27682800

2769-
tdo.VBE = tdo.VBE ?? BuildProject(tdo.ProjectName, tdo.ModuleTestSetupDefs);
2801+
tdo.VBE = tdo.VBE ?? BuildProject(tdo.ProjectName, tdo.ModuleTestSetupDefs, tdo.UseLibraries);
2802+
tdo.AdditionalSetup?.Invoke(tdo);
27702803
(tdo.ParserState, tdo.RewritingManager) = MockParser.CreateAndParseWithRewritingManager(tdo.VBE);
27712804

27722805
CreateQualifiedSelectionForTestCase(tdo);
@@ -2775,7 +2808,6 @@ private static void InitializeTestDataObject(RenameTestsDataObject tdo
27752808
, $"Target aquired ({tdo.RenameModel.Target.IdentifierName} does not equal name specified ({tdo.OriginalName}) in the test");
27762809

27772810
var factory = SetupFactory(tdo.RenameModel);
2778-
27792811
tdo.RenameRefactoringUnderTest = new RenameRefactoring(tdo.VBE, factory.Object, tdo.MsgBox.Object, tdo.ParserState, tdo.ParserState.ProjectsProvider, tdo.RewritingManager);
27802812
}
27812813

@@ -2854,10 +2886,17 @@ private static void CreateQualifiedSelectionForTestCase(RenameTestsDataObject td
28542886
Assert.Inconclusive($"Unable to find target '{FAUX_CURSOR}' in { tdo.SelectionModuleName} content.");
28552887
}
28562888

2857-
private static IVBE BuildProject(string projectName, List<RenameTestModuleDefinition> testComponents)
2889+
private static IVBE BuildProject(string projectName, List<RenameTestModuleDefinition> testComponents, bool useLibraries = false)
28582890
{
28592891
var builder = new MockVbeBuilder();
28602892
var enclosingProjectBuilder = builder.ProjectBuilder(projectName, ProjectProtection.Unprotected);
2893+
2894+
if (useLibraries)
2895+
{
2896+
enclosingProjectBuilder.AddReference("VBA", MockVbeBuilder.LibraryPathVBA, 4, 1, true);
2897+
enclosingProjectBuilder.AddReference("EXCEL", MockVbeBuilder.LibraryPathMsExcel, 1, 8, true);
2898+
}
2899+
28612900
foreach (var comp in testComponents)
28622901
{
28632902
if (comp.ModuleType == ComponentType.UserForm)
@@ -2961,6 +3000,7 @@ public RenameTestsDataObject(string selection, string newName)
29613000
OriginalName = selection;
29623001
ModuleTestSetupDefs = new List<RenameTestModuleDefinition>();
29633002
RenameRefactoringUnderTest = null;
3003+
UseLibraries = false;
29643004
}
29653005

29663006
public IVBE VBE { get; set; }
@@ -2978,6 +3018,8 @@ public RenameTestsDataObject(string selection, string newName)
29783018
public List<RenameTestModuleDefinition> ModuleTestSetupDefs { get; set; }
29793019
public string OriginalName { get; set; }
29803020
public RenameRefactoring RenameRefactoringUnderTest { get; set; }
3021+
public Action<RenameTestsDataObject> AdditionalSetup { get; set; }
3022+
public bool UseLibraries { get; set; }
29813023
}
29823024
#endregion
29833025
}

0 commit comments

Comments
 (0)