File: CheckConfigurationEffectiveTests.cs
Web Access
Project: ..\..\..\src\BuildCheck.UnitTests\Microsoft.Build.BuildCheck.UnitTests.csproj (Microsoft.Build.BuildCheck.UnitTests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Xunit;
using Microsoft.Build.Experimental.BuildCheck.Infrastructure;
using Microsoft.Build.Experimental.BuildCheck;
using Shouldly;
using System;
 
namespace Microsoft.Build.BuildCheck.UnitTests;
 
public class CheckConfigurationEffectiveTests
{
    [Theory]
    [InlineData("ruleId", EvaluationCheckScope.ProjectFileOnly, CheckResultSeverity.Warning,  true)]
    [InlineData("ruleId2", EvaluationCheckScope.ProjectFileOnly, CheckResultSeverity.Warning,  true)]
    [InlineData("ruleId", EvaluationCheckScope.ProjectFileOnly, CheckResultSeverity.Error, false)]
    public void IsSameConfigurationAsTest(
        string secondRuleId,
        EvaluationCheckScope secondScope,
        CheckResultSeverity secondSeverity,
        bool isExpectedToBeSame)
    {
        CheckConfigurationEffective configuration1 = new CheckConfigurationEffective(
                       ruleId: "ruleId",
                       evaluationCheckScope: EvaluationCheckScope.ProjectFileOnly,
                       severity: CheckResultSeverity.Warning);
 
        CheckConfigurationEffective configuration2 = new CheckConfigurationEffective(
            ruleId: secondRuleId,
            evaluationCheckScope: secondScope,
            severity: secondSeverity);
 
        configuration1.IsSameConfigurationAs(configuration2).ShouldBe(isExpectedToBeSame);
    }
 
    [Theory]
    [InlineData( CheckResultSeverity.Warning, true)]
    [InlineData(CheckResultSeverity.Suggestion, true)]
    [InlineData(CheckResultSeverity.Error, true)]
    [InlineData(CheckResultSeverity.None, false)]
    public void CheckConfigurationInternal_Constructor_SeverityConfig(CheckResultSeverity severity, bool isEnabledExpected)
    {
        CheckConfigurationEffective configuration = new CheckConfigurationEffective(
                       ruleId: "ruleId",
                       evaluationCheckScope: EvaluationCheckScope.ProjectFileOnly,
                       severity: severity);
 
        configuration.IsEnabled.ShouldBe(isEnabledExpected);
    }
 
    [Fact]
    public void CheckConfigurationInternal_Constructor_SeverityConfig_Fails()
    {
        Should.Throw<ArgumentOutOfRangeException>(() =>
        {
            new CheckConfigurationEffective(
                        ruleId: "ruleId",
                        evaluationCheckScope: EvaluationCheckScope.ProjectFileOnly,
                        severity: CheckResultSeverity.Default);
        });
    }
}