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());
        }
Example #2
0
 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();
        }
Example #5
0
        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);
        }
Example #8
0
        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();
            }
        }
Example #10
0
        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());
        }
Example #14
0
        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);
            }
        }
Example #15
0
 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);
        }
Example #17
0
        //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);
        }