public void EncapsulatePublicField_FieldHasReferences() { //Input const string inputCode = @"Public fizz As Integer Sub Foo() fizz = 0 Bar fizz End Sub Sub Bar(ByVal name As Integer) End Sub"; 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 Sub Foo() Name = 0 Bar Name End Sub Sub Bar(ByVal name As Integer) End Sub"; IVBComponent component; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); var state = MockParser.CreateAndParse(vbe.Object); var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection); var model = new EncapsulateFieldModel(state, qualifiedSelection) { ImplementLetSetterType = true, ImplementSetSetterType = false, CanImplementLet = true, ParameterName = "value", PropertyName = "Name" }; //SetupFactory var factory = SetupFactory(model); var refactoring = new EncapsulateFieldRefactoring(vbe.Object, CreateIndenter(vbe.Object), factory.Object); refactoring.Refactor(qualifiedSelection); Assert.AreEqual(expectedCode, component.CodeModule.Content()); }
public override void Fix(IInspectionResult result) { using (var view = new EncapsulateFieldDialog(new EncapsulateFieldViewModel(_state, _indenter))) { var factory = new EncapsulateFieldPresenterFactory(_vbe, _state, view); var refactoring = new EncapsulateFieldRefactoring(_vbe, _indenter, factory); refactoring.Refactor(result.Target); } }
public void EncapsulatePublicField_FieldDeclarationHasMultipleFields_MoveFirst() { //Input const string inputCode = @"Public fizz, _ buzz As Boolean, _ bazz As Date"; var selection = new Selection(1, 12, 1, 12); //Expectation const string expectedCode = @"Public buzz As Boolean, bazz As Date Private fizz As Variant Public Property Get Name() As Variant If IsObject(fizz) Then Set Name = fizz Else Name = fizz End If End Property Public Property Let Name(ByVal value As Variant) fizz = value End Property Public Property Set Name(ByVal value As Variant) Set fizz = value End Property "; // note: VBE removes excess spaces IVBComponent component; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); var state = MockParser.CreateAndParse(vbe.Object); var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection); var model = new EncapsulateFieldModel(state, qualifiedSelection) { ImplementLetSetterType = true, ImplementSetSetterType = true, CanImplementLet = true, ParameterName = "value", PropertyName = "Name" }; //SetupFactory var factory = SetupFactory(model); var refactoring = new EncapsulateFieldRefactoring(vbe.Object, CreateIndenter(vbe.Object), factory.Object); refactoring.Refactor(qualifiedSelection); var actual = component.CodeModule.Content(); Assert.AreEqual(expectedCode, actual); }
protected override void OnExecute(object parameter) { if (!SelectionService.ActiveSelection().HasValue) { return; } var refactoring = new EncapsulateFieldRefactoring(_state, _indenter, _factory, RewritingManager, SelectionService); refactoring.Refactor(); }
public override void Fix() { var vbe = Selection.QualifiedName.Project.VBE; using (var view = new EncapsulateFieldDialog()) { var factory = new EncapsulateFieldPresenterFactory(_parseResult, new ActiveCodePaneEditor(vbe, _wrapperFactory), view); var refactoring = new EncapsulateFieldRefactoring(factory, new ActiveCodePaneEditor(vbe, _wrapperFactory)); refactoring.Refactor(_target); IsCancelled = view.DialogResult != DialogResult.OK; } }
public override void Fix() { var vbe = Selection.QualifiedName.Project.VBE; using (var view = new EncapsulateFieldDialog(_state, _indenter)) { var factory = new EncapsulateFieldPresenterFactory(vbe, _state, view); var refactoring = new EncapsulateFieldRefactoring(vbe, _indenter, factory); refactoring.Refactor(_target); IsCancelled = view.DialogResult != DialogResult.OK; } }
public RefactorEncapsulateFieldCommand( EncapsulateFieldRefactoring refactoring, EncapsulateFieldFailedNotifier encapsulateFieldFailedNotifier, RubberduckParserState state, ISelectionProvider selectionProvider, ISelectedDeclarationProvider selectedDeclarationProvider) : base(refactoring, encapsulateFieldFailedNotifier, selectionProvider, state) { _state = state; _selectedDeclarationProvider = selectedDeclarationProvider; AddToCanExecuteEvaluation(SpecializedEvaluateCanExecute); }
public override void Execute(object parameter) { if (Vbe.ActiveCodePane == null) { return; } using (var view = new EncapsulateFieldDialog()) { var factory = new EncapsulateFieldPresenterFactory(Vbe, _state, view); var refactoring = new EncapsulateFieldRefactoring(Vbe, factory); refactoring.Refactor(); } }
protected override void OnExecute(object parameter) { if (Vbe.ActiveCodePane == null) { return; } using (var view = new EncapsulateFieldDialog(new EncapsulateFieldViewModel(_state, _indenter))) { var factory = new EncapsulateFieldPresenterFactory(Vbe, _state, view); var refactoring = new EncapsulateFieldRefactoring(Vbe, _indenter, factory); refactoring.Refactor(); } }
protected override CommandBase TestCommand(IVBE vbe, RubberduckParserState state, IRewritingManager rewritingManager, ISelectionService selectionService) { var msgBox = new Mock <IMessageBox>().Object; var factory = new Mock <IRefactoringPresenterFactory>().Object; var selectedDeclarationProvider = new SelectedDeclarationProvider(selectionService, state); var uiDispatcherMock = new Mock <IUiDispatcher>(); uiDispatcherMock .Setup(m => m.Invoke(It.IsAny <Action>())) .Callback((Action action) => action.Invoke()); var refactoring = new EncapsulateFieldRefactoring(state, null, factory, rewritingManager, selectionService, selectedDeclarationProvider, uiDispatcherMock.Object); var notifier = new EncapsulateFieldFailedNotifier(msgBox); var selectedDeclarationService = new SelectedDeclarationProvider(selectionService, state); return(new RefactorEncapsulateFieldCommand(refactoring, notifier, state, selectionService, selectedDeclarationService)); }
protected override void OnExecute(object parameter) { using (var activePane = Vbe.ActiveCodePane) { if (activePane == null || activePane.IsWrappingNullReference) { return; } } using (var view = new EncapsulateFieldDialog(new EncapsulateFieldViewModel(_state, _indenter))) { var factory = new EncapsulateFieldPresenterFactory(Vbe, _state, view); var refactoring = new EncapsulateFieldRefactoring(Vbe, _indenter, factory, _rewritingManager); refactoring.Refactor(); } }
public void EncapsulateField_PresenterIsNull() { //Input const string inputCode = @"Private fizz As Variant"; IVBComponent component; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component); var state = MockParser.CreateAndParse(vbe.Object); var vbeWrapper = vbe.Object; var factory = new EncapsulateFieldPresenterFactory(vbeWrapper, state, null); var refactoring = new EncapsulateFieldRefactoring(vbeWrapper, CreateIndenter(vbe.Object), factory); refactoring.Refactor(); Assert.AreEqual(inputCode, component.CodeModule.Content()); }
public void EncapsulateField_ModelIsNull() { //Input const string inputCode = @"Private fizz As Variant"; var selection = new Selection(1, 1, 1, 1); IVBComponent component; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); var state = MockParser.CreateAndParse(vbe.Object); var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection); //SetupFactory var factory = SetupFactory(null); var refactoring = new EncapsulateFieldRefactoring(vbe.Object, CreateIndenter(vbe.Object), factory.Object); refactoring.Refactor(qualifiedSelection); Assert.AreEqual(inputCode, component.CodeModule.Content()); }
public void EncapsulateField_PresenterIsNull() { //Input const string inputCode = @"Private fizz As Variant"; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out var component); var(state, rewritingManager) = MockParser.CreateAndParseWithRewritingManager(vbe.Object); using (state) { var selectionServiceMock = new Mock <ISelectionService>(); var factory = new Mock <IRefactoringPresenterFactory>(); factory.Setup(f => f.Create <IEncapsulateFieldPresenter, EncapsulateFieldModel>(It.IsAny <EncapsulateFieldModel>())) .Returns(() => null); // resolves ambiguous method overload var refactoring = new EncapsulateFieldRefactoring(state, CreateIndenter(vbe.Object), factory.Object, rewritingManager, selectionServiceMock.Object); refactoring.Refactor(); var actualCode = component.CodeModule.Content(); Assert.AreEqual(inputCode, actualCode); } }
public EncapsulateFieldQuickFix(EncapsulateFieldRefactoring refactoring) : base(refactoring, typeof(EncapsulatePublicFieldInspection)) { }
public void GivenReferencedPublicField_UpdatesReferenceToNewProperty() { //Input const string codeClass1 = @"Public fizz As Integer Sub Foo() fizz = 1 End Sub"; const string codeClass2 = @"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"; var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject1", ProjectProtection.Unprotected) .AddComponent("Class1", ComponentType.ClassModule, codeClass1) .AddComponent("Class2", ComponentType.ClassModule, codeClass2) .Build(); var vbe = builder.AddProject(project).Build(); var component = project.Object.VBComponents[0]; vbe.Setup(v => v.ActiveCodePane).Returns(component.CodeModule.CodePane); var state = MockParser.CreateAndParse(vbe.Object); var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection); var module1 = project.Object.VBComponents[0].CodeModule; var module2 = project.Object.VBComponents[1].CodeModule; var model = new EncapsulateFieldModel(state, qualifiedSelection) { ImplementLetSetterType = true, ImplementSetSetterType = false, CanImplementLet = true, ParameterName = "value", PropertyName = "Name" }; //SetupFactory var factory = SetupFactory(model); var refactoring = new EncapsulateFieldRefactoring(vbe.Object, CreateIndenter(vbe.Object), factory.Object); refactoring.Refactor(qualifiedSelection); var actualCode1 = module1.Content(); var actualCode2 = module2.Content(); Assert.AreEqual(expectedCode1, actualCode1); Assert.AreEqual(expectedCode2, actualCode2); }
//The rewriteSession is optional since it is not used in this particular quickfix because it is a refactoring quickfix. public override void Fix(IInspectionResult result, IRewriteSession rewriteSession = null) { var refactoring = new EncapsulateFieldRefactoring(_state, _indenter, _factory, _rewritingManager, _selectionService); refactoring.Refactor(result.Target); }