public static void CreateWithCustomSeverity()
    {
        const Severity suggestion = Severity.Suggestion;
        var            data       = new ExpressionBodiedData();
        var            style      = new CSharpStyleExpressionBodiedAccessorsStyle(data, suggestion);

        Assert.That(style.Severity, Is.EqualTo(suggestion), nameof(style.Data));
    }
    public static void CreateWithNoData()
    {
        var data  = new ExpressionBodiedData();
        var style = new CSharpStyleExpressionBodiedAccessorsStyle(data);

        Assert.That(style.Data, Is.SameAs(data), nameof(style.Data));
        Assert.That(style.GetSetting(), Is.EqualTo(string.Empty), nameof(style.GetSetting));
    }
    public static void GetSetting()
    {
        var data  = new ExpressionBodiedData(2u, 1u, 1u, 0u);
        var style = new CSharpStyleExpressionBodiedAccessorsStyle(data);

        Assert.That(style.Data, Is.SameAs(data), nameof(style.Data));
        Assert.That(style.GetSetting(), Is.EqualTo(
                        $"{CSharpStyleExpressionBodiedAccessorsStyle.Setting} = true:{style.Severity.GetDescription()}"), nameof(style.GetSetting));
    }
예제 #4
0
        public static void CreateDefault()
        {
            var data = new ExpressionBodiedData();

            Assert.That(data.TotalOccurences, Is.EqualTo(default(uint)), nameof(data.TotalOccurences));
            Assert.That(data.ArrowSingleLineOccurences, Is.EqualTo(default(uint)), nameof(data.ArrowSingleLineOccurences));
            Assert.That(data.ArrowMultiLineOccurences, Is.EqualTo(default(uint)), nameof(data.ArrowMultiLineOccurences));
            Assert.That(data.BlockOccurences, Is.EqualTo(default(uint)), nameof(data.BlockOccurences));
        }
예제 #5
0
        public static void VerifyHashCodes()
        {
            var data1 = new ExpressionBodiedData(6, 1, 2, 3);
            var data2 = new ExpressionBodiedData(6, 2, 1, 3);
            var data3 = new ExpressionBodiedData(6, 1, 2, 3);

            Assert.That(data1.GetHashCode(), Is.Not.EqualTo(data2.GetHashCode()));
            Assert.That(data1.GetHashCode(), Is.EqualTo(data3.GetHashCode()));
        }
예제 #6
0
        public static void Add()
        {
            var data1 = new ExpressionBodiedData(10u, 5u, 3u, 2u);
            var data2 = new ExpressionBodiedData(100u, 50u, 30u, 20u);
            var data3 = data1.Add(data2);

            Assert.That(data3.TotalOccurences, Is.EqualTo(110u), nameof(data3.TotalOccurences));
            Assert.That(data3.ArrowSingleLineOccurences, Is.EqualTo(55u), nameof(data3.ArrowSingleLineOccurences));
            Assert.That(data3.ArrowMultiLineOccurences, Is.EqualTo(33u), nameof(data3.ArrowMultiLineOccurences));
            Assert.That(data3.BlockOccurences, Is.EqualTo(22u), nameof(data3.BlockOccurences));
        }
예제 #7
0
        public static void Update(ExpressionBodiedDataOccurence occurrence, uint expectedArrowSingleLineOccurences,
                                  uint expectedArrowMultiLineOccurences, uint expectedBlockOccurences)
        {
            var data = new ExpressionBodiedData();

            data = data.Update(occurrence);

            Assert.That(data.TotalOccurences, Is.EqualTo(1u), nameof(data.TotalOccurences));
            Assert.That(data.ArrowSingleLineOccurences, Is.EqualTo(expectedArrowSingleLineOccurences), nameof(data.ArrowSingleLineOccurences));
            Assert.That(data.ArrowMultiLineOccurences, Is.EqualTo(expectedArrowMultiLineOccurences), nameof(data.ArrowMultiLineOccurences));
            Assert.That(data.BlockOccurences, Is.EqualTo(expectedBlockOccurences), nameof(data.BlockOccurences));
        }
예제 #8
0
        public static void Create()
        {
            var totalOccurences           = 10u;
            var arrowSingleLineOccurences = 5u;
            var arrowMultiLineOccurences  = 3u;
            var blockOccurences           = 2u;

            var data = new ExpressionBodiedData(totalOccurences, arrowSingleLineOccurences, arrowMultiLineOccurences,
                                                blockOccurences);

            Assert.That(data.TotalOccurences, Is.EqualTo(totalOccurences), nameof(data.TotalOccurences));
            Assert.That(data.ArrowSingleLineOccurences, Is.EqualTo(arrowSingleLineOccurences), nameof(data.ArrowSingleLineOccurences));
            Assert.That(data.ArrowMultiLineOccurences, Is.EqualTo(arrowMultiLineOccurences), nameof(data.ArrowMultiLineOccurences));
            Assert.That(data.BlockOccurences, Is.EqualTo(blockOccurences), nameof(data.BlockOccurences));
        }
예제 #9
0
    internal static ExpressionBodiedData Examine(this SyntaxNode @this, ExpressionBodiedData current)
    {
        if (@this is null)
        {
            throw new ArgumentNullException(nameof(@this));
        }
        if (current is null)
        {
            throw new ArgumentNullException(nameof(current));
        }

        if ([email protected])
        {
            var data   = current;
            var arrows = @this.ChildNodes().Where(_ => _.Kind() == SyntaxKind.ArrowExpressionClause)
                         .Cast <ArrowExpressionClauseSyntax>().ToImmutableArray();

            foreach (var arrow in arrows)
            {
                var lines = arrow.DescendantTrivia().Count(
                    _ => _.Kind() == SyntaxKind.EndOfLineTrivia);
                var occurence = lines >= 1 ? ExpressionBodiedDataOccurence.ArrowMultiLine :
                                ExpressionBodiedDataOccurence.ArrowSingleLine;
                data = data.Update(occurence);
            }

            var singleLineBlockCount = (uint)@this.ChildNodes().Where(_ => _.Kind() == SyntaxKind.Block)
                                       .Cast <BlockSyntax>().Count(
                bs => bs.DescendantNodes().Count(_ => typeof(StatementSyntax).IsAssignableFrom(_.GetType())) == 1);

            for (var i = 0; i < singleLineBlockCount; i++)
            {
                data = data.Update(ExpressionBodiedDataOccurence.Block);
            }

            return(data);
        }
        else
        {
            return(current);
        }
    }
예제 #10
0
    public static void VerifyEquality()
    {
        var data1 = new ExpressionBodiedData(6, 1, 2, 3);
        var data2 = new ExpressionBodiedData(6, 2, 1, 3);
        var data3 = new ExpressionBodiedData(6, 1, 2, 3);

        Assert.That(data1, Is.Not.EqualTo(data2));
        Assert.That(data1, Is.EqualTo(data3));
        Assert.That(data2, Is.Not.EqualTo(data3));

#pragma warning disable CS1718 // Comparison made to same variable
        Assert.That(data1 == data1, Is.True);
#pragma warning restore CS1718 // Comparison made to same variable
        Assert.That(data1 == data2, Is.False);
        Assert.That(data1 == data3, Is.True);
        Assert.That(data2 == data3, Is.False);

        Assert.That(data1 != data2, Is.True);
        Assert.That(data1 != data3, Is.False);
        Assert.That(data2 != data3, Is.True);
    }
예제 #11
0
 public CSharpStyleExpressionBodiedConstructorsStyle(ExpressionBodiedData data, Severity severity = Severity.Error)
     : base(data, severity)
 {
 }
예제 #12
0
        public static void GetSettingWithNoOccurrences()
        {
            var data = new ExpressionBodiedData(0u, 0u, 0u, 0u);

            Assert.That(data.GetSetting("x", Severity.Error), Is.EqualTo(string.Empty), nameof(data.GetSetting));
        }
예제 #13
0
        public static void AddWithNull()
        {
            var data = new ExpressionBodiedData();

            Assert.That(() => data.Add(null !), Throws.TypeOf <ArgumentNullException>());
        }
예제 #14
0
        public static void GetSettingWithBlocks()
        {
            var data = new ExpressionBodiedData(1u, 0u, 0u, 1u);

            Assert.That(data.GetSetting("x", Severity.Error), Is.EqualTo("x = false:error"), nameof(data.GetSetting));
        }
예제 #15
0
        public static void GetSettingWhenOnSingleLine()
        {
            var data = new ExpressionBodiedData(4u, 1u, 2u, 1u);

            Assert.That(data.GetSetting("x", Severity.Error), Is.EqualTo("x = when_on_single_line:error"), nameof(data.GetSetting));
        }
예제 #16
0
 public CSharpStyleExpressionBodiedPropertiesStyle(ExpressionBodiedData data, Severity severity = Severity.Error)
     : base(data, severity)
 {
 }
예제 #17
0
 public CSharpStyleExpressionBodiedIndexersStyle(ExpressionBodiedData data, Severity severity = Severity.Error)
     : base(data, severity)
 {
 }
예제 #18
0
        public static void GetSettingWithFavoritingArrows()
        {
            var data = new ExpressionBodiedData(5u, 3u, 1u, 1u);

            Assert.That(data.GetSetting("x", Severity.Error), Is.EqualTo("x = true:error"), nameof(data.GetSetting));
        }