当前位置: 首页>>代码示例>>C#>>正文


C# ExpressionSyntax.IsLeftSideOfAssignExpression方法代码示例

本文整理汇总了C#中ExpressionSyntax.IsLeftSideOfAssignExpression方法的典型用法代码示例。如果您正苦于以下问题:C# ExpressionSyntax.IsLeftSideOfAssignExpression方法的具体用法?C# ExpressionSyntax.IsLeftSideOfAssignExpression怎么用?C# ExpressionSyntax.IsLeftSideOfAssignExpression使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ExpressionSyntax的用法示例。


在下文中一共展示了ExpressionSyntax.IsLeftSideOfAssignExpression方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: GetInvokedMethodsOfMock

        public static IEnumerable<Fields> GetInvokedMethodsOfMock(ExpressionSyntax memberAccessExpresion, SemanticModel testSemanticModel, IEnumerable<SutInfo> suts)
        {
            var isLeftSideOfAssignExpression = memberAccessExpresion.IsLeftSideOfAssignExpression();
            var symbol = testSemanticModel.GetSymbolInfo(memberAccessExpresion).Symbol;

            if(symbol == null) return new Fields[0];

            var refType = symbol.ContainingType;

            var suitableSut = refType.GetSuitableSut(suts);

            if (suitableSut == null) return new Fields[0];

            var sutSubstitutionsByInterface = TestSemanticHelper.GetSubstitutions(refType);
            var sutSubstitutionsByConcreteType = TestSemanticHelper.GetSubstitutions(suitableSut.SymbolInfo.Symbol);
            var symbolSubstitutions = TestSemanticHelper.GetSubstitutions(symbol);
            var sutSubstitutions = sutSubstitutionsByInterface.Concat(sutSubstitutionsByConcreteType)
                                                              .Concat(symbolSubstitutions)
                                                              .DistinctBy(x => x.Key)
                                                              .ToDictionary(x => x.Key, x => x.Value);

            if (suitableSut.SemanticModel == null)
                return new Fields[0];

            var suitableSutSymbol = suitableSut.GetSuitableSutSymbol(symbol);
            var sutFirstLocation = suitableSutSymbol.Locations.First();
            var node = sutFirstLocation.GetMemberNode();

            var allNodes = node.DescendantNodesAndSelf().Where(x => !x.Span.IsEmpty).ToList();

            var allSyntax = new List<ExpressionSyntax>();

            var count = int.MaxValue;
            while (count != allSyntax.Count )
            {
                count = allSyntax.Count;

                var methods = TestSemanticHelper.GetMethodsToConfigureMocks(allNodes).ToArray();
                var properties = TestSemanticHelper.GetPropertiesToConfigureMocks(allNodes, methods, isLeftSideOfAssignExpression).ToArray();

                allSyntax.AddRange(methods.Concat(properties).Distinct());
                allSyntax = allSyntax.Distinct().ToList();

                allNodes = allSyntax.SelectMany(syn => syn.DescendantNodesAndSelf().Where(x => !x.Span.IsEmpty))
                                    .SelectMany(x => GetReferencedNodes(x, suitableSut))
                                    .ToList();
            }

            var invokedMethodsOfMocks = GetInvokedMethodsOfMocks(allSyntax,
                                                                 suitableSut.SemanticModel,
                                                                 suitableSut,
                                                                 testSemanticModel,
                                                                 sutSubstitutions);

            invokedMethodsOfMocks = invokedMethodsOfMocks.Where(DontHaveSetups(suitableSut));

            return invokedMethodsOfMocks;
        }
开发者ID:ycherkes,项目名称:MockIt,代码行数:58,代码来源:MocksAnalyzingEngine.cs


注:本文中的ExpressionSyntax.IsLeftSideOfAssignExpression方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。