public void EncapsulatePublicField_WithLetter() { //Input const string inputCode = @"Public fizz As Integer"; var selection = new Selection(1, 1, 1, 1); //Expectation const string expectedCode = @"Private fizz As Integer Public Property Get Name() As Integer Name = fizz End Property Public Property Let Name(ByVal value As Integer) fizz = value End Property "; //Arrange var builder = new MockVbeBuilder(); VBComponent component; var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); var project = vbe.Object.VBProjects.Item(0); var module = project.VBComponents.Item(0).CodeModule; var codePaneFactory = new CodePaneWrapperFactory(); var mockHost = new Mock<IHostApplication>(); mockHost.SetupAllProperties(); var parser = MockParser.Create(vbe.Object, new RubberduckParserState()); parser.Parse(); if (parser.State.Status == ParserState.Error) { Assert.Inconclusive("Parser Error"); } var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection); var model = new EncapsulateFieldModel(parser.State, qualifiedSelection) { ImplementLetSetterType = true, ImplementSetSetterType = false, ParameterName = "value", PropertyName = "Name" }; //SetupFactory var factory = SetupFactory(model); //Act var refactoring = new EncapsulateFieldRefactoring(factory.Object, new ActiveCodePaneEditor(vbe.Object, codePaneFactory)); refactoring.Refactor(qualifiedSelection); //Assert Assert.AreEqual(expectedCode, module.Lines()); }
public override void Execute(object parameter) { if (Vbe.ActiveCodePane == null) { return; } using (var view = new EncapsulateFieldDialog()) { var factory = new EncapsulateFieldPresenterFactory(_state, Editor, view); var refactoring = new EncapsulateFieldRefactoring(factory, Editor); refactoring.Refactor(); } }
public void RemoveParams_ModelIsNull() { //Input const string inputCode = @"Private fizz As Variant"; var selection = new Selection(1, 1, 1, 1); //Arrange var builder = new MockVbeBuilder(); VBComponent component; var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); var module = component.CodeModule; var codePaneFactory = new CodePaneWrapperFactory(); var mockHost = new Mock<IHostApplication>(); mockHost.SetupAllProperties(); var parser = MockParser.Create(vbe.Object, new RubberduckParserState()); parser.Parse(); if (parser.State.Status == ParserState.Error) { Assert.Inconclusive("Parser Error"); } var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection); //SetupFactory var factory = SetupFactory(null); //Act var refactoring = new EncapsulateFieldRefactoring(factory.Object, new ActiveCodePaneEditor(vbe.Object, codePaneFactory)); refactoring.Refactor(qualifiedSelection); //Assert Assert.AreEqual(inputCode, module.Lines()); }
public void RemoveParams_PresenterIsNull() { //Input const string inputCode = @"Private fizz As Variant"; //Arrange var builder = new MockVbeBuilder(); VBComponent component; var vbe = builder.BuildFromSingleStandardModule(inputCode, out component); var module = component.CodeModule; var codePaneFactory = new CodePaneWrapperFactory(); var mockHost = new Mock<IHostApplication>(); mockHost.SetupAllProperties(); var parser = MockParser.Create(vbe.Object, new RubberduckParserState()); parser.Parse(); if (parser.State.Status == ParserState.Error) { Assert.Inconclusive("Parser Error"); } var editor = new Mock<IActiveCodePaneEditor>(); editor.Setup(e => e.GetSelection()).Returns((QualifiedSelection?)null); var factory = new EncapsulateFieldPresenterFactory(parser.State, editor.Object, null); //act var refactoring = new EncapsulateFieldRefactoring(factory, new ActiveCodePaneEditor(vbe.Object, codePaneFactory)); refactoring.Refactor(); Assert.AreEqual(inputCode, module.Lines()); }
public void GivenReferencedPublicField_UpdatesReferenceToNewProperty() { //Input const string code_class1 = @"Public fizz As Integer Sub Foo() fizz = 1 End Sub"; const string code_class2 = @"Sub Foo() Dim c As Class1 c.fizz = 0 Bar c.fizz End Sub Sub Bar(ByVal v As Integer) End Sub"; var selection = new Selection(1, 1, 1, 1); //Expectation const string expectedCode1 = @"Private fizz As Integer Public Property Get Name() As Integer Name = fizz End Property Public Property Let Name(ByVal value As Integer) fizz = value End Property Sub Foo() Name = 1 End Sub"; const string expectedCode2 = @"Sub Foo() Dim c As Class1 c.Name = 0 Bar c.Name End Sub Sub Bar(ByVal v As Integer) End Sub"; //Arrange var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, code_class1) .AddComponent("Class2", vbext_ComponentType.vbext_ct_ClassModule, code_class2) .Build(); var vbe = builder.AddProject(project).Build(); var component = project.Object.VBComponents.Item(0); vbe.Setup(v => v.ActiveCodePane).Returns(component.CodeModule.CodePane); var codePaneFactory = new CodePaneWrapperFactory(); var mockHost = new Mock<IHostApplication>(); mockHost.SetupAllProperties(); var parser = MockParser.Create(vbe.Object, new RubberduckParserState()); parser.Parse(); if (parser.State.Status == ParserState.Error) { Assert.Inconclusive("Parser Error"); } var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection); var module1 = project.Object.VBComponents.Item(0).CodeModule; var module2 = project.Object.VBComponents.Item(1).CodeModule; var model = new EncapsulateFieldModel(parser.State, qualifiedSelection) { ImplementLetSetterType = true, ImplementSetSetterType = false, ParameterName = "value", PropertyName = "Name" }; //SetupFactory var factory = SetupFactory(model); //Act var refactoring = new EncapsulateFieldRefactoring(factory.Object, new ActiveCodePaneEditor(vbe.Object, codePaneFactory)); refactoring.Refactor(qualifiedSelection); var actualCode1 = module1.Lines(); var actualCode2 = module2.Lines(); //Assert Assert.AreEqual(expectedCode1, actualCode1); Assert.AreEqual(expectedCode2, actualCode2); }