Пример #1
0
        public void AssignedByValParameter_Ignored_DoesNotReturnResult_Sub()
        {
            const string inputCode =
                @"'@Ignore AssignedByValParameter
Public Sub Foo(ByVal arg1 As String)
    Let arg1 = ""test""
End Sub";

            //Arrange
            var         builder = new MockVbeBuilder();
            VBComponent component;
            var         vbe      = builder.BuildFromSingleStandardModule(inputCode, out component);
            var         mockHost = new Mock <IHostApplication>();

            mockHost.SetupAllProperties();
            var parser = MockParser.Create(vbe.Object, new RubberduckParserState(new Mock <ISinks>().Object));

            parser.Parse(new CancellationTokenSource());
            if (parser.State.Status >= ParserState.Error)
            {
                Assert.Inconclusive("Parser Error");
            }

            var inspection        = new AssignedByValParameterInspection(parser.State);
            var inspectionResults = inspection.GetInspectionResults();

            Assert.IsFalse(inspectionResults.Any());
        }
Пример #2
0
        public void AssignedByValParameter_NoResultForLeftHandSideMemberAssignment()
        {
            var class1  = @"
Option Explicit
Private mSomething As Long
Public Property Get Something() As Long
    Something = mSomething
End Property
Public Property Let Something(ByVal value As Long)
    mSomething = value
End Property
";
            var caller  = @"
Option Explicit
Private Sub DoSomething(ByVal foo As Class1)
    foo.Something = 42
End Sub
";
            var builder = new MockVbeBuilder();
            var vbe     = builder.ProjectBuilder("TestProject", ProjectProtection.Unprotected)
                          .AddComponent("Class1", ComponentType.ClassModule, class1)
                          .AddComponent("Module1", ComponentType.StandardModule, caller)
                          .MockVbeBuilder()
                          .Build();

            var state             = MockParser.CreateAndParse(vbe.Object);
            var inspection        = new AssignedByValParameterInspection(state);
            var inspectionResults = inspection.GetInspectionResults();

            Assert.IsFalse(inspectionResults.Any());
        }
Пример #3
0
        public void AssignedByValParameter_ReturnsResult_Function()
        {
            const string inputCode =
                @"Function Foo(ByVal arg1 As Integer) As Boolean
    Let arg1 = 9
End Function";

            //Arrange
            var         builder = new MockVbeBuilder();
            VBComponent component;
            var         vbe      = builder.BuildFromSingleStandardModule(inputCode, out component);
            var         mockHost = new Mock <IHostApplication>();

            mockHost.SetupAllProperties();
            var parser = MockParser.Create(vbe.Object, new RubberduckParserState(new Mock <ISinks>().Object));

            parser.Parse(new CancellationTokenSource());
            if (parser.State.Status >= ParserState.Error)
            {
                Assert.Inconclusive("Parser Error");
            }

            var inspection        = new AssignedByValParameterInspection(parser.State);
            var inspectionResults = inspection.GetInspectionResults();

            Assert.AreEqual(1, inspectionResults.Count());
        }
Пример #4
0
        public void InspectionName()
        {
            const string inspectionName = "AssignedByValParameterInspection";
            var          inspection     = new AssignedByValParameterInspection(null);

            Assert.AreEqual(inspectionName, inspection.Name);
        }
        private IEnumerable <Rubberduck.Inspections.Abstract.InspectionResultBase> GetInspectionResults(IVBE vbe)
        {
            var state      = MockParser.CreateAndParse(vbe);
            var inspection = new AssignedByValParameterInspection(state, null);

            return(inspection.GetInspectionResults());
        }
Пример #6
0
        public void AssignedByValParameter_ReturnsResult_MultipleParams()
        {
            const string inputCode =
                @"Public Sub Foo(ByVal arg1 As String, ByVal arg2 As Integer)
    Let arg1 = ""test""
    Let arg2 = 9
End Sub";

            //Arrange
            var         builder = new MockVbeBuilder();
            VBComponent component;
            var         vbe      = builder.BuildFromSingleStandardModule(inputCode, out component);
            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 inspection        = new AssignedByValParameterInspection(parser.State);
            var inspectionResults = inspection.GetInspectionResults();

            Assert.AreEqual(2, inspectionResults.Count());
        }
        private IEnumerable <Rubberduck.Inspections.Abstract.InspectionResultBase> GetInspectionResults(IVBE vbe, IAssignedByValParameterQuickFixDialogFactory mockDialogFactory)
        {
            var state = MockParser.CreateAndParse(vbe);

            var inspection = new AssignedByValParameterInspection(state, mockDialogFactory);

            return(inspection.GetInspectionResults());
        }
Пример #8
0
        private IEnumerable <IInspectionResult> GetAssignedByValParameterInspectionResults(IVBE vbe, out RubberduckParserState state)
        {
            state = MockParser.CreateAndParse(vbe);

            var inspection = new AssignedByValParameterInspection(state);

            return(inspection.GetInspectionResults());
        }
        private string ApplyPassParameterByReferenceQuickFixToVBAFragment(string inputCode)
        {
            var vbe = BuildMockVBEStandardModuleForVBAFragment(inputCode);

            using (var state = MockParser.CreateAndParse(vbe.Object))
            {
                var inspection        = new AssignedByValParameterInspection(state);
                var inspectionResults = inspection.GetInspectionResults();

                new PassParameterByReferenceQuickFix(state).Fix(inspectionResults.First());
                return(state.GetRewriter(vbe.Object.ActiveVBProject.VBComponents[0]).GetText());
            }
        }
Пример #10
0
        public void AssignedByValParameter_DoesNotReturnResult()
        {
            const string inputCode =
                @"Public Sub Foo(ByVal arg1 As String)
End Sub";

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

            var state             = MockParser.CreateAndParse(vbe.Object);
            var inspection        = new AssignedByValParameterInspection(state);
            var inspectionResults = inspection.GetInspectionResults();

            Assert.IsFalse(inspectionResults.Any());
        }
Пример #11
0
        public void AssignedByValParameter_ReturnsResult_Sub()
        {
            const string inputCode =
                @"Public Sub Foo(ByVal arg1 As String)
    Let arg1 = ""test""
End Sub";

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

            var state             = MockParser.CreateAndParse(vbe.Object);
            var inspection        = new AssignedByValParameterInspection(state);
            var inspectionResults = inspection.GetInspectionResults();

            Assert.AreEqual(1, inspectionResults.Count());
        }
Пример #12
0
        public void AssignedByValParameter_ReturnsResult_Function()
        {
            const string inputCode =
                @"Function Foo(ByVal arg1 As Integer) As Boolean
    Let arg1 = 9
End Function";

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

            var state             = MockParser.CreateAndParse(vbe.Object);
            var inspection        = new AssignedByValParameterInspection(state);
            var inspectionResults = inspection.GetInspectionResults();

            Assert.AreEqual(1, inspectionResults.Count());
        }
Пример #13
0
        public void AssignedByValParameter_ReturnsResult_MultipleParams()
        {
            const string inputCode =
                @"Public Sub Foo(ByVal arg1 As String, ByVal arg2 As Integer)
    Let arg1 = ""test""
    Let arg2 = 9
End Sub";

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

            using (var state = MockParser.CreateAndParse(vbe.Object))
            {
                var inspection        = new AssignedByValParameterInspection(state);
                var inspectionResults = inspection.GetInspectionResults(CancellationToken.None);

                Assert.AreEqual(2, inspectionResults.Count());
            }
        }
Пример #14
0
        public void AssignedByValParameter_Ignored_DoesNotReturnResult_Sub()
        {
            const string inputCode =
                @"'@Ignore AssignedByValParameter
Public Sub Foo(ByVal arg1 As String)
    Let arg1 = ""test""
End Sub";

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

            using (var state = MockParser.CreateAndParse(vbe.Object))
            {
                var inspection        = new AssignedByValParameterInspection(state);
                var inspectionResults = inspection.GetInspectionResults(CancellationToken.None);

                Assert.IsFalse(inspectionResults.Any());
            }
        }
Пример #15
0
        private string ApplyLocalVariableQuickFixToCodeFragment(string inputCode, string userEnteredName = "")
        {
            var vbe = BuildMockVBE(inputCode);

            var mockDialogFactory = BuildMockDialogFactory(userEnteredName);

            using (var state = MockParser.CreateAndParse(vbe.Object))
            {
                var inspection        = new AssignedByValParameterInspection(state);
                var inspectionResults = inspection.GetInspectionResults();
                var result            = inspectionResults.FirstOrDefault();
                if (result == null)
                {
                    Assert.Inconclusive("Inspection yielded no results.");
                }

                new AssignedByValParameterMakeLocalCopyQuickFix(state, mockDialogFactory.Object).Fix(result);
                return(state.GetRewriter(vbe.Object.ActiveVBProject.VBComponents[0]).GetText());
            }
        }
Пример #16
0
        public void AssignedByValParameter_IgnoreQuickFixWorks()
        {
            const string inputCode =
                @"Public Sub Foo(ByVal arg1 As String)
    Let arg1 = ""test""
End Sub";

            const string expectedCode =
                @"'@Ignore AssignedByValParameter
Public Sub Foo(ByVal arg1 As String)
    Let arg1 = ""test""
End Sub";

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

            var state             = MockParser.CreateAndParse(vbe.Object);
            var inspection        = new AssignedByValParameterInspection(state);
            var inspectionResults = inspection.GetInspectionResults();

            new IgnoreOnceQuickFix(state, new[] { inspection }).Fix(inspectionResults.First());
            Assert.AreEqual(expectedCode, state.GetRewriter(component).GetText());
        }
Пример #17
0
        public void AssignedByValParameter_IgnoreQuickFixWorks()
        {
            const string inputCode =
                @"Public Sub Foo(ByVal arg1 As String)
    Let arg1 = ""test""
End Sub";

            const string expectedCode =
                @"'@Ignore AssignedByValParameter
Public Sub Foo(ByVal arg1 As String)
    Let arg1 = ""test""
End Sub";

            //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         mockHost = new Mock <IHostApplication>();

            mockHost.SetupAllProperties();
            var parser = MockParser.Create(vbe.Object, new RubberduckParserState(new Mock <ISinks>().Object));

            parser.Parse(new CancellationTokenSource());
            if (parser.State.Status >= ParserState.Error)
            {
                Assert.Inconclusive("Parser Error");
            }

            var inspection        = new AssignedByValParameterInspection(parser.State);
            var inspectionResults = inspection.GetInspectionResults();

            inspectionResults.First().QuickFixes.Single(s => s is IgnoreOnceQuickFix).Fix();

            Assert.AreEqual(expectedCode, module.Lines());
        }
        private string ApplyLocalVariableQuickFixToCodeFragment(string inputCode, string userEnteredName = "")
        {
            var vbe = BuildMockVBE(inputCode, out var component);

            var mockDialogFactory = BuildMockDialogFactory(userEnteredName);

            var(state, rewritingManager) = MockParser.CreateAndParseWithRewritingManager(vbe.Object);
            using (state)
            {
                var inspection        = new AssignedByValParameterInspection(state);
                var inspectionResults = inspection.GetInspectionResults(CancellationToken.None);
                var result            = inspectionResults.FirstOrDefault();
                if (result == null)
                {
                    Assert.Inconclusive("Inspection yielded no results.");
                }

                var rewriteSession = rewritingManager.CheckOutCodePaneSession();

                new AssignedByValParameterMakeLocalCopyQuickFix(state, mockDialogFactory.Object).Fix(result, rewriteSession);

                return(rewriteSession.CheckOutModuleRewriter(component.QualifiedModuleName).GetText());
            }
        }
Пример #19
0
        public void InspectionType()
        {
            var inspection = new AssignedByValParameterInspection(null);

            Assert.AreEqual(CodeInspectionType.CodeQualityIssues, inspection.InspectionType);
        }