Example #1
0
        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);

            //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";

            var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out var component, selection);

            var(state, rewritingManager) = MockParser.CreateAndParseWithRewritingManager(vbe.Object);
            using (state)
            {
                var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection);

                var model = new EncapsulateFieldModel(state, qualifiedSelection)
                {
                    ImplementLetSetterType = true,
                    ImplementSetSetterType = false,
                    //CanImplementLet = true,
                    ParameterName = "value",
                    PropertyName  = "Name"
                };

                var refactoring = TestRefactoring(vbe.Object, rewritingManager, state, model);
                refactoring.Refactor(qualifiedSelection);

                var targetComponent = state.ProjectsProvider.Component(model.TargetDeclaration.QualifiedModuleName);
                var actualCode      = targetComponent.CodeModule.Content();
                Assert.AreEqual(expectedCode, actualCode);
            }
        }
        public EncapsulateFieldModel Create(Declaration target)
        {
            if (!(target is VariableDeclaration targetField))
            {
                throw new ArgumentException();
            }

            var fieldEncapsulationModels = new List <FieldEncapsulationModel>()
            {
                new FieldEncapsulationModel(targetField)
            };

            var contextCollections = _candidateSetsFactory.Create(_declarationFinderProvider, _candidatesFactory, target.QualifiedModuleName);

            var useBackingFieldModel     = _useBackingFieldModelFactory.Create(contextCollections, fieldEncapsulationModels);
            var useBackingUDTMemberModel = _useBackingUDTMemberModelFactory.Create(contextCollections, fieldEncapsulationModels);

            var initialStrategy = useBackingUDTMemberModel.ObjectStateUDTField.IsExistingDeclaration
                ? EncapsulateFieldStrategy.ConvertFieldsToUDTMembers
                : EncapsulateFieldStrategy.UseBackingFields;

            var conflictFinder = _encapsulateFieldConflictFinderFactory.Create(_declarationFinderProvider,
                                                                               contextCollections.EncapsulateFieldUseBackingFieldCandidates,
                                                                               contextCollections.ObjectStateFieldCandidates);

            var model = new EncapsulateFieldModel(useBackingFieldModel, useBackingUDTMemberModel, conflictFinder)
            {
                EncapsulateFieldStrategy = initialStrategy,
            };

            return(model);
        }
        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 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);
        }
Example #5
0
        public void EncapsulatePublicField_FieldDeclarationHasMultipleFields_MoveFirst()
        {
            //Input
            const string inputCode =
                @"Public fizz, _
         buzz As Boolean, _
         bazz As Date";
            var selection = new Selection(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
";

            var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out var component, selection);

            var(state, rewritingManager) = MockParser.CreateAndParseWithRewritingManager(vbe.Object);
            using (state)
            {
                var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection);

                var model = new EncapsulateFieldModel(state, qualifiedSelection)
                {
                    ImplementLetSetterType = true,
                    ImplementSetSetterType = true,
                    //CanImplementLet = true,
                    ParameterName = "value",
                    PropertyName  = "Name"
                };

                var refactoring = TestRefactoring(vbe.Object, rewritingManager, state, model);
                refactoring.Refactor(qualifiedSelection);

                var targetComponent = state.ProjectsProvider.Component(model.TargetDeclaration.QualifiedModuleName);
                var actualCode      = targetComponent.CodeModule.Content();
                Assert.AreEqual(expectedCode, actualCode);
            }
        }
Example #6
0
        private static Mock <IRefactoringPresenterFactory> SetupFactory(EncapsulateFieldModel model)
        {
            var presenter = new Mock <IEncapsulateFieldPresenter>();
            var factory   = new Mock <IRefactoringPresenterFactory>();

            factory.Setup(f => f.Create <IEncapsulateFieldPresenter, EncapsulateFieldModel>(It.IsAny <EncapsulateFieldModel>()))
            .Callback(() => presenter.Setup(p => p.Show()).Returns(model))
            .Returns(presenter.Object);
            return(factory);
        }
        public EncapsulateFieldPresenter Create()
        {
            var selection = _vbe.GetActiveSelection();

            if (!selection.HasValue)
            {
                return(null);
            }

            var model = new EncapsulateFieldModel(_state, selection.Value);

            return(new EncapsulateFieldPresenter(_view, model));
        }
Example #8
0
        public void Refactoring_Puts_Code_In_Correct_Place()
        {
            //Input
            const string inputCode =
                @"Option Explicit

Public Foo As String";

            //Output
            const string expectedCode =
                @"Option Explicit

Private Foo As String

Public Property Get bar() As String
    bar = Foo
End Property

Public Property Let bar(ByVal value As String)
    Foo = value
End Property
";

            var selection = new Selection(3, 8, 3, 11);
            var vbe       = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out var component, selection);

            var(state, rewritingManager) = MockParser.CreateAndParseWithRewritingManager(vbe.Object);
            using (state)
            {
                var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection);

                var model = new EncapsulateFieldModel(state, qualifiedSelection)
                {
                    ImplementLetSetterType = true,
                    ImplementSetSetterType = false,
                    ParameterName          = "value",
                    PropertyName           = "bar"
                };

                //SetupFactory
                var factory = SetupFactory(model);

                var refactoring = TestRefactoring(vbe.Object, rewritingManager, state, model);
                refactoring.Refactor(qualifiedSelection);

                var targetComponent = state.ProjectsProvider.Component(model.TargetDeclaration.QualifiedModuleName);
                var actualCode      = targetComponent.CodeModule.Content();
                Assert.AreEqual(expectedCode, actualCode);
            }
        }
Example #9
0
        public void EncapsulatePublicField_OptionExplicit_NotMoved()
        {
            //Input
            const string inputCode =
                @"Option Explicit

Public foo As String";
            var selection = new Selection(3, 9);

            //Expectation
            const string expectedCode =
                @"Option Explicit

Private foo As String

Public Property Get Name() As String
    Name = foo
End Property

Public Property Let Name(ByVal value As String)
    foo = value
End Property
";

            var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out var component, selection);

            var(state, rewritingManager) = MockParser.CreateAndParseWithRewritingManager(vbe.Object);
            using (state)
            {
                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 = TestRefactoring(vbe.Object, rewritingManager, state, model);
                refactoring.Refactor(state.AllUserDeclarations.FindVariable(qualifiedSelection));

                var actualCode = component.CodeModule.Content();
                Assert.AreEqual(expectedCode, actualCode);
            }
        }
Example #10
0
 public EncapsulateFieldPresenter(IRefactoringDialog <EncapsulateFieldViewModel> view, EncapsulateFieldModel model)
 {
     _view  = view;
     _model = model;
 }
        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);
        }
        //NOTE: The tests below are commented out pending some sort of refactoring that enables them
        //to actually *test* something.  Currently, all of the behavior the tests are looking for is
        //being mocked.

        /*
         * [TestMethod]
         * public void Presenter_Accept_ReturnsModelWithImplementLetChanged()
         * {
         *  //Input
         *  const string inputCode =
         * @"Private fizz As Variant";
         *  var selection = new Selection(1, 15, 1, 15);
         *
         *  var builder = new MockVbeBuilder();
         *  IVBComponent component;
         *  var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection);
         *  var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object));
         *
         *  parser.Parse(new CancellationTokenSource());
         *  if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }
         *
         *  var view = new Mock<IEncapsulateFieldDialog>();
         *  view.SetupProperty(v => v.MustImplementLetSetterType, true);
         *  view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK);
         *
         *  var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object);
         *
         *  var presenter = factory.Create();
         *
         *  Assert.AreEqual(true, presenter.Show().ImplementLetSetterType);
         * }
         *
         * [TestMethod]
         * public void Presenter_Accept_ReturnsModelWithImplementSetChanged()
         * {
         *  //Input
         *  const string inputCode =
         * @"Private fizz As Variant";
         *  var selection = new Selection(1, 15, 1, 15);
         *
         *  var builder = new MockVbeBuilder();
         *  IVBComponent component;
         *  var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection);
         *  var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object));
         *
         *  parser.Parse(new CancellationTokenSource());
         *  if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }
         *
         *  var view = new Mock<IEncapsulateFieldDialog>();
         *  view.SetupProperty(v => v.MustImplementSetSetterType, true);
         *  view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK);
         *
         *  var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object);
         *
         *  var presenter = factory.Create();
         *
         *  Assert.AreEqual(true, presenter.Show().ImplementSetSetterType);
         * }
         *
         * [TestMethod]
         * public void Presenter_Accept_ReturnsModelWithImplementLetAllowedForPrimitiveTypes_NoReferences()
         * {
         *  //Input
         *  const string inputCode =
         * @"Private fizz As Boolean";
         *  var selection = new Selection(1, 15, 1, 15);
         *
         *  var builder = new MockVbeBuilder();
         *  IVBComponent component;
         *  var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection);
         *  var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object));
         *
         *  parser.Parse(new CancellationTokenSource());
         *  if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }
         *
         *  var view = new Mock<IEncapsulateFieldDialog>();
         *  view.SetupProperty(v => v.CanImplementLetSetterType, true);
         *
         *  var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object);
         *  factory.Create().Show();
         *
         *  Assert.AreEqual(true, view.Object.CanImplementLetSetterType);
         * }
         *
         * [TestMethod]
         * public void Presenter_Accept_ReturnsModelWithImplementSetNotAllowedForPrimitiveTypes_NoReferences()
         * {
         *  //Input
         *  const string inputCode =
         * @"Private fizz As Boolean";
         *  var selection = new Selection(1, 15, 1, 15);
         *
         *  var builder = new MockVbeBuilder();
         *  IVBComponent component;
         *  var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection);
         *  var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object));
         *
         *  parser.Parse(new CancellationTokenSource());
         *  if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }
         *
         *  var view = new Mock<IEncapsulateFieldDialog>();
         *  view.SetupProperty(v => v.CanImplementSetSetterType, true);
         *
         *  var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object);
         *  factory.Create().Show();
         *
         *  Assert.AreEqual(false, view.Object.CanImplementSetSetterType);
         * }
         *
         * [TestMethod]
         * public void Presenter_Accept_ReturnsModelWithImplementSetAllowedForNonVariantNonPrimitiveTypes_NoReferences()
         * {
         *  //Input
         *  const string inputCode =
         * @"Private fizz As Icon";
         *  var selection = new Selection(1, 15, 1, 15);
         *
         *  var builder = new MockVbeBuilder();
         *  IVBComponent component;
         *  var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection);
         *  var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object));
         *
         *  parser.Parse(new CancellationTokenSource());
         *  if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }
         *
         *  var view = new Mock<IEncapsulateFieldDialog>();
         *  view.SetupProperty(v => v.CanImplementSetSetterType, true);
         *
         *  var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object);
         *  factory.Create().Show();
         *
         *  Assert.AreEqual(true, view.Object.CanImplementSetSetterType);
         * }
         *
         * [TestMethod]
         * public void Presenter_Accept_ReturnsModelWithImplementLetNotAllowedForNonVariantNonPrimitiveType_NoReferences()
         * {
         *  //Input
         *  const string inputCode =
         * @"Private fizz As Icon";
         *  var selection = new Selection(1, 15, 1, 15);
         *
         *  var builder = new MockVbeBuilder();
         *  IVBComponent component;
         *  var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection);
         *  var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object));
         *
         *  parser.Parse(new CancellationTokenSource());
         *  if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }
         *
         *  var view = new Mock<IEncapsulateFieldDialog>();
         *  view.SetupProperty(v => v.CanImplementLetSetterType, true);
         *
         *  var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object);
         *  factory.Create().Show();
         *
         *  Assert.AreEqual(false, view.Object.CanImplementLetSetterType);
         * }
         *
         * [TestMethod]
         * public void Presenter_Accept_ReturnsModelWithImplementLetAllowedForVariant_NoReferences()
         * {
         *  //Input
         *  const string inputCode =
         * @"Private fizz As Variant";
         *  var selection = new Selection(1, 15, 1, 15);
         *
         *  var builder = new MockVbeBuilder();
         *  IVBComponent component;
         *  var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection);
         *  var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object));
         *
         *  parser.Parse(new CancellationTokenSource());
         *  if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }
         *
         *  var view = new Mock<IEncapsulateFieldDialog>();
         *  view.SetupProperty(v => v.CanImplementLetSetterType, true);
         *
         *  var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object);
         *  factory.Create().Show();
         *
         *  Assert.AreEqual(true, view.Object.CanImplementLetSetterType);
         * }
         *
         * [TestMethod]
         * public void Presenter_Accept_ReturnsModelWithImplementSetAllowedForVariant_NoReferences()
         * {
         *  //Input
         *  const string inputCode =
         * @"Private fizz As Variant";
         *  var selection = new Selection(1, 15, 1, 15);
         *
         *  var builder = new MockVbeBuilder();
         *  IVBComponent component;
         *  var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection);
         *  var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object));
         *
         *  parser.Parse(new CancellationTokenSource());
         *  if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }
         *
         *  var view = new Mock<IEncapsulateFieldDialog>();
         *  view.SetupProperty(v => v.CanImplementSetSetterType, true);
         *
         *  var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object);
         *  factory.Create().Show();
         *
         *  Assert.AreEqual(true, view.Object.CanImplementSetSetterType);
         * }
         *
         * [TestMethod]
         * public void Presenter_Accept_ReturnsModelWithImplementLetRequiredForPrimitiveTypes_References()
         * {
         *  //Input
         *  const string inputCode =
         * @"Private fizz As Boolean
         * Sub foo()
         * fizz = True
         * End Sub";
         *  var selection = new Selection(1, 15, 1, 15);
         *
         *  var builder = new MockVbeBuilder();
         *  IVBComponent component;
         *  var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection);
         *  var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object));
         *
         *  parser.Parse(new CancellationTokenSource());
         *  if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }
         *
         *  var view = new Mock<IEncapsulateFieldDialog>();
         *  view.SetupProperty(v => v.MustImplementLetSetterType, false);
         *
         *  var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object);
         *  factory.Create().Show();
         *
         *  Assert.AreEqual(true, view.Object.MustImplementLetSetterType);
         * }
         *
         * [TestMethod]
         * public void Presenter_Accept_ReturnsModelWithImplementSetRequiredForNonVariantNonPrimitiveTypes_References()
         * {
         *  //Input
         *  const string inputCode =
         * @"Private fizz As Class1
         * Sub foo()
         * Set fizz = New Class1
         * End Sub";
         *  var selection = new Selection(1, 15, 1, 15);
         *
         *  var builder = new MockVbeBuilder();
         *  IVBComponent component;
         *  var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection);
         *  var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object));
         *
         *  parser.Parse(new CancellationTokenSource());
         *  if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }
         *
         *  var view = new Mock<IEncapsulateFieldDialog>();
         *  view.SetupProperty(v => v.MustImplementSetSetterType, false);
         *
         *  var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object);
         *  factory.Create().Show();
         *
         *  Assert.AreEqual(true, view.Object.MustImplementSetSetterType);
         * }
         *
         * [TestMethod]
         * public void Presenter_Accept_ReturnsModelWithImplementLetRequiredForNonSetVariant_References()
         * {
         *  //Input
         *  const string inputCode =
         * @"Private fizz As Variant
         * Sub Foo()
         * fizz = True
         * End Sub";
         *  var selection = new Selection(1, 15, 1, 15);
         *
         *  var builder = new MockVbeBuilder();
         *  IVBComponent component;
         *  var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection);
         *  var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object));
         *
         *  parser.Parse(new CancellationTokenSource());
         *  if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }
         *
         *  var view = new Mock<IEncapsulateFieldDialog>();
         *  view.SetupProperty(v => v.MustImplementLetSetterType, false);
         *
         *  var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object);
         *  factory.Create().Show();
         *
         *  Assert.AreEqual(true, view.Object.MustImplementLetSetterType);
         * }
         *
         * [TestMethod]
         * public void Presenter_Accept_ReturnsModelWithImplementSetRequiredForSetVariant_References()
         * {
         *  //Input
         *  const string inputCode =
         * @"Private fizz As Variant
         * Sub foo()
         * Set fizz = New Class1
         * End Sub";
         *  var selection = new Selection(1, 15, 1, 15);
         *
         *  var builder = new MockVbeBuilder();
         *  IVBComponent component;
         *  var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection);
         *  var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object));
         *
         *  parser.Parse(new CancellationTokenSource());
         *  if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }
         *
         *  var view = new Mock<IEncapsulateFieldDialog>();
         *  view.SetupProperty(v => v.MustImplementSetSetterType, false);
         *
         *  var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object);
         *  factory.Create().Show();
         *
         *  Assert.AreEqual(true, view.Object.MustImplementSetSetterType);
         * }
         *
         *
         * [TestMethod]
         * public void Presenter_Accept_DefaultCreateGetOnly_PrimitiveType_NoReference()
         * {
         *  //Input
         *  const string inputCode =
         * @"Private fizz As Date";
         *  var selection = new Selection(1, 15, 1, 15);
         *
         *  var builder = new MockVbeBuilder();
         *  IVBComponent component;
         *  var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection);
         *  var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object));
         *
         *  parser.Parse(new CancellationTokenSource());
         *  if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }
         *
         *  var view = new Mock<IEncapsulateFieldDialog>();
         *  view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK);
         *
         *  var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object);
         *  var model = factory.Create().Show();
         *
         *  Assert.AreEqual(false, model.ImplementLetSetterType);
         *  Assert.AreEqual(false, model.ImplementSetSetterType);
         * }
         *
         * [TestMethod]
         * public void Presenter_Accept_DefaultCreateGetOnly_NonPrimitiveTypeNonVariant_NoReference()
         * {
         *  //Input
         *  const string inputCode =
         * @"Private fizz As Icon";
         *  var selection = new Selection(1, 15, 1, 15);
         *
         *  var builder = new MockVbeBuilder();
         *  IVBComponent component;
         *  var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection);
         *  var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object));
         *
         *  parser.Parse(new CancellationTokenSource());
         *  if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }
         *
         *  var view = new Mock<IEncapsulateFieldDialog>();
         *  view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK);
         *
         *  var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object);
         *  var model = factory.Create().Show();
         *
         *  Assert.AreEqual(false, model.ImplementLetSetterType);
         *  Assert.AreEqual(false, model.ImplementSetSetterType);
         * }
         *
         * [TestMethod]
         * public void Presenter_Accept_DefaultCreateGetOnly_Variant_NoReference()
         * {
         *  //Input
         *  const string inputCode =
         * @"Private fizz As Variant";
         *  var selection = new Selection(1, 15, 1, 15);
         *
         *  var builder = new MockVbeBuilder();
         *  IVBComponent component;
         *  var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection);
         *  var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object));
         *
         *  parser.Parse(new CancellationTokenSource());
         *  if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }
         *
         *  var view = new Mock<IEncapsulateFieldDialog>();
         *  view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK);
         *
         *  var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object);
         *  var model = factory.Create().Show();
         *
         *  Assert.AreEqual(false, model.ImplementLetSetterType);
         *  Assert.AreEqual(false, model.ImplementSetSetterType);
         * }
         */
        #region setup
        private static Mock <IRefactoringPresenterFactory <IEncapsulateFieldPresenter> > SetupFactory(EncapsulateFieldModel model)
        {
            var presenter = new Mock <IEncapsulateFieldPresenter>();

            presenter.Setup(p => p.Show()).Returns(model);

            var factory = new Mock <IRefactoringPresenterFactory <IEncapsulateFieldPresenter> >();

            factory.Setup(f => f.Create()).Returns(presenter.Object);
            return(factory);
        }
Example #13
0
        private static IRefactoring TestRefactoring(IVBE vbe, IRewritingManager rewritingManager, RubberduckParserState state, EncapsulateFieldModel model)
        {
            var selectionService = MockedSelectionService();
            var indenter         = CreateIndenter(vbe);
            var factory          = SetupFactory(model);

            return(new EncapsulateFieldRefactoring(state, indenter, factory.Object, rewritingManager, selectionService));
        }