public static IEnumerable <Func <ITestContext, InterfaceMethodData> > GetPossibleVariations(
            ITestInterfaceGenerationOptions options)
        {
            var methodAttributeCombinations       = options.MethodAttributeDataBuilder.GetPossibleCombinations(options);
            var methodParameterPossibleVariations = MethodParameterData.GetPossibleVariations(options).ToList();

            foreach (var attributeData in methodAttributeCombinations)
            {
                foreach (var returnType in options.InterfaceMethodReturnTypes)
                {
                    Func <ITestContext, InterfaceMethodData> CreateInterfaceMethodDataVariation(IEnumerable <Func <ITestContext, MethodParameterData> > parameters)
                    {
                        return(context => new InterfaceMethodData(returnType, "Method" + context.NextId(), attributeData(context).ToArray(), parameters.Select((avaluator) => avaluator(context)).ToArray()));
                    }
        public IEnumerable <Func <ITestContext, IEnumerable <AttributeData> > > GetPossibleCombinations(
            ITestInterfaceGenerationOptions options)
        {
            yield return(c => new AttributeData[0]);

            var logLevels = Enum.GetValues(typeof(LogLevel)).Cast <LogLevel>().ToArray();

            foreach (var logLevel in logLevels)
            {
                yield return(c =>
                {
                    return new[] { LogConditionAttributeData.Create(logLevel) };
                });
            }
        }
示例#3
0
        public Func <ITestContext, InterfaceData[]> GetInheritedInterfaces(ITestInterfaceGenerationOptions options, int count)
        {
            return(context =>
            {
                var interfaces = Enumerable.Range(context.NextId(), count).Select(_ => GetInheritedInterfaceData(_, context)).ToArray();
                foreach (var @interface in interfaces)
                {
                    var namespaceData = new NamespaceData(@interface.Namespace, @interface);
                    var compilationEntryData = new CompilationEntryData(options.UsingNamespaces, namespaceData);
                    context.AddCompilationEntry(compilationEntryData);
                }

                return interfaces;
            });
        }
示例#4
0
        public IEnumerable <Func <ITestContext, IEnumerable <AttributeData> > > GetPossibleCombinations(
            ITestInterfaceGenerationOptions options)
        {
            yield return(c => { return new AttributeData[0]; });

            yield return(c =>
            {
                var message = Guid.NewGuid().ToString();
                return new AttributeData[] { LoggerInterfaceMethodAttributeData.Create(LogLevel.Warning, message) };
            });

            yield return(c =>
            {
                return new AttributeData[] { LoggerInterfaceMethodAttributeData.Create(LogLevel.Warning) };
            });

            yield return(c =>
            {
                var message = Guid.NewGuid().ToString();
                return new AttributeData[] { LoggerInterfaceMethodAttributeData.Create(message) };
            });
        }
示例#5
0
        public IEnumerable <Func <ITestContext, IEnumerable <AttributeData> > > GetPossibleCombinations(
            ITestInterfaceGenerationOptions options)
        {
            yield return(c => { return new AttributeData[0]; });

            yield return(c =>
            {
                var metricName = "Metric" + Guid.NewGuid();
                var unitName = "Unit" + Guid.NewGuid();
                return new AttributeData[] { MetricsCollectorMethodAttributeData.Create(metricName, unitName) };
            });

            yield return(c =>
            {
                var metricName = "Metric" + Guid.NewGuid();
                return new AttributeData[] { MetricsCollectorMethodAttributeData.CreateWithMetricNameOnly(metricName) };
            });

            yield return(c =>
            {
                var unitName = "Unit" + Guid.NewGuid();
                return new AttributeData[] { MetricsCollectorMethodAttributeData.CreateWithMeasurementUnitNameOnly(unitName) };
            });
        }
 public CompilationUnitDataBuilder(ITestInterfaceGenerationOptions options)
 {
     _options = options;
 }
        public IEnumerable <Func <ITestContext, IEnumerable <AttributeData> > > GetPossibleCombinations(ITestInterfaceGenerationOptions options)
        {
            var attributeToInheritInterfacesNumbers = Enumerable.Range(0, 2);

            foreach (var attributeToInheritInterfacesNumber in attributeToInheritInterfacesNumbers)
            {
                yield return(context =>
                {
                    var interfacesToInherit = Enumerable.Range(context.NextId(), attributeToInheritInterfacesNumber)
                                              .Select(GetBaseTypeInterfaceData).ToArray();
                    var contextName = "Context_" + context.NextId();

                    foreach (var interfaceToInherit in interfacesToInherit)
                    {
                        var namespaceData = new NamespaceData(interfaceToInherit.Namespace, interfaceToInherit);
                        var compilationEntryData = new CompilationEntryData(options.UsingNamespaces, namespaceData);
                        context.AddCompilationEntry(compilationEntryData);
                    }

                    return new AttributeData[] { new MetricsCollectorInterfaceAttributeData(contextName, interfacesToInherit) };
                });
            }
        }
示例#8
0
        public static IEnumerable <Func <ITestContext, MethodParameterData> > GetPossibleVariations(ITestInterfaceGenerationOptions options)
        {
            var index = 0;

            foreach (var parameterAttributeCombination in
                     options.ParameterAttributeDataBuilder.GetPossibleCombinations(options))
            {
                foreach (var type in options.MethodParameterTypes)
                {
                    var values = options.ParameterValuesBuilder.GetValues(type);
                    foreach (var value in values)
                    {
                        index++;
                        var prefix        = index % 2 == 0 ? "@" : "";
                        var aliasTypeName = index % 1 == 0 ? "AliasType" + index : null;
                        yield return((context) => new MethodParameterData(prefix + "param" + context.NextId(), type, value, aliasTypeName, parameterAttributeCombination(context).ToArray()));
                    }
                }
            }
        }
示例#9
0
 public IEnumerable <Func <ITestContext, IEnumerable <AttributeData> > > GetPossibleCombinations(ITestInterfaceGenerationOptions options)
 {
     yield break;
 }
示例#10
0
 public TestContext(ITestInterfaceGenerationOptions options)
 {
     _options = options;
 }
示例#11
0
        public static IEnumerable <Func <ITestContext, InterfaceData> > GetPossibleVariations(ITestInterfaceGenerationOptions options)
        {
            var interfaceMethodPossibleVariations = InterfaceMethodData.GetPossibleVariations(options).ToList();

            var interfaceAttributeDataCombinations = options.InterfaceAttributeDataBuilder.GetPossibleCombinations(options);

            foreach (var attributeData in interfaceAttributeDataCombinations)
            {
                foreach (var inheritedInterfaceCount in options.InheritedInterfaceCounts)
                {
                    var inheritedInterfaces = options.InheritanceListBuilder.GetInheritedInterfaces(options, inheritedInterfaceCount);

                    foreach (var methodsCount in options.InterfaceMethodsCounts)
                    {
                        Func <ITestContext, InterfaceData> CreateInterfaceDataVariation(IEnumerable <Func <ITestContext, InterfaceMethodData> > methods)
                        {
                            return(context => new InterfaceData("ITestInterface" + context.NextId() + "<TInterfaceParam1, TInterfaceParam2>", options.InterfaceNamespace, attributeData(context).ToArray(), methods.Select(_ => _.Invoke(context)).ToArray(), inheritedInterfaces(context), true));
                        }

                        if (methodsCount == 1)
                        {
                            foreach (var methods in interfaceMethodPossibleVariations
                                     .GetPossibleCombinations(methodsCount))
                            {
                                yield return(CreateInterfaceDataVariation(methods));
                            }
                        }
                        else
                        {
                            var methods = interfaceMethodPossibleVariations.Take(methodsCount);
                            yield return(CreateInterfaceDataVariation(methods));
                        }
                    }
                }
            }
        }