public void ExpressionComplexity()
        {
            var diagnostic = new ExpressionComplexity {
                Maximum = 3
            };

            Verifier.Verify(@"TestCases\ExpressionComplexity.cs", diagnostic);
        }
        public void SetParameterValues_WhenGivenSonarLintFileHasIntParameterType_PopulatesProperties()
        {
            // Arrange
            var options  = CreateOptions("ResourceTests\\SonarLint.xml");
            var analyzer = new ExpressionComplexity(); // Cannot use mock because we use reflection to find properties.

            // Act
            ParameterLoader.SetParameterValues(analyzer, options);

            // Assert
            analyzer.Maximum.Should().Be(1); // Value from the xml file
        }
        public void SetParameterValues_WhenNoSonarLintIsGiven_DoesNotPopulateParameters()
        {
            // Arrange
            var options  = CreateOptions("ResourceTests\\MyFile.xml");
            var analyzer = new ExpressionComplexity(); // Cannot use mock because we use reflection to find properties.

            // Act
            ParameterLoader.SetParameterValues(analyzer, options);

            // Assert
            analyzer.Maximum.Should().Be(3); // Default value
        }
        public void SetParameterValues_WithWrongPropertyType_StringInsteadOfInt_DoesNotPopulateProperties()
        {
            // Arrange
            var options  = CreateOptions("ResourceTests\\StringInsteadOfInt\\SonarLint.xml");
            var analyzer = new ExpressionComplexity(); // Cannot use mock because we use reflection to find properties.

            // Act
            ParameterLoader.SetParameterValues(analyzer, options);

            // Assert
            analyzer.Maximum.Should().Be(3); // Default value
        }
Example #5
0
        public void SetParameterValues_WithBadPath_DoesNotPopulateProperties()
        {
            // Arrange
            var options  = TestHelper.CreateOptions("ResourceTests\\ThisPathDoesNotExist\\SonarLint.xml");
            var analyzer = new ExpressionComplexity(); // Cannot use mock because we use reflection to find properties.

            // Act
            ParameterLoader.SetParameterValues(analyzer, options);

            // Assert
            analyzer.Maximum.Should().Be(3); // Default value
        }
        private void AddAnalyzerExpressionCOmplexity(ImmutableArray <DiagnosticAnalyzer> .Builder builder)
        {
            var analyzer = new ExpressionComplexity();

            if (!AnalyzerIds.Contains(analyzer.SupportedDiagnostics.Single().Id))
            {
                return;
            }
            analyzer.Maximum = int.Parse(
                Parameters[analyzer.SupportedDiagnostics.Single().Id].Single()["max"],
                NumberStyles.None, CultureInfo.InvariantCulture);
            builder.Add(analyzer);
        }
        public void SetParameterValues_WhenGivenValidSonarLintFileAndContainsAnalyzerParameters_PopulatesProperties()
        {
            // Arrange
            var additionalText = new Mock <AdditionalText>();

            additionalText.Setup(x => x.Path).Returns("ResourceTests\\SonarLint.xml");
            var options  = new AnalyzerOptions(ImmutableArray.Create(additionalText.Object));
            var analyzer = new ExpressionComplexity(); // Cannot use mock because we use reflection to find properties.

            // Act
            ParameterLoader.SetParameterValues(analyzer, options);

            // Assert
            analyzer.Maximum.Should().Be(1); // Value from the xml file
        }
        public void SetParameterValues_CalledTwiceAfterChangeInConfigFile_UpdatesProperties()
        {
            // Arrange
            var sonarLintXmlRelativePath = "ResourceTests\\ToChange\\SonarLint.xml";
            var options  = CreateOptions(sonarLintXmlRelativePath);
            var analyzer = new ExpressionComplexity(); // Cannot use mock because we use reflection to find properties.

            // Act with the file on disk
            ParameterLoader.SetParameterValues(analyzer, options);
            analyzer.Maximum.Should().Be(1); // from the XML on disk

            // Update the file on disk
            var originalContent = File.ReadAllText(sonarLintXmlRelativePath);
            var modifiedContent = originalContent.Replace("<Value>1</Value>", "<Value>42</Value>");

            File.WriteAllText(sonarLintXmlRelativePath, modifiedContent);
            ParameterLoader.SetParameterValues(analyzer, options);
            analyzer.Maximum.Should().Be(42);

            // revert change
            File.WriteAllText(sonarLintXmlRelativePath, originalContent);
        }