Esempio n. 1
0
    public IEnumerable GetTestCasesFor(MethodInfo method, Test suite)
    {
        var autoMoqDataAttr =
            Reflect.GetAttributes(method, typeof(AutoMoqDataAttribute).FullName, false)
            .Cast <AutoMoqDataAttribute>()
            .First();
        IEnumerable <ParameterSet> parameterizedTestCaseParams = Enumerable.Empty <ParameterSet>();
        bool testIsParameterized = false;

        if (Reflect.GetAttributes(method, typeof(TestCaseAttribute).FullName, false).Any())
        {
            var provider = new TestCaseParameterProvider();
            parameterizedTestCaseParams =
                parameterizedTestCaseParams.Concat(provider.GetTestCasesFor(method).Cast <ParameterSet>());
            testIsParameterized = true;
        }
        if (Reflect.GetAttributes(method, typeof(TestCaseSourceAttribute).FullName, false).Any())
        {
            var provider = new TestCaseSourceProvider();
            parameterizedTestCaseParams =
                parameterizedTestCaseParams.Concat(provider.GetTestCasesFor(method).Cast <ParameterSet>());
            testIsParameterized = true;
        }
        var autoFixtureResolvedParams = autoMoqDataAttr.GetData(method).First();

        if (!testIsParameterized)
        {
            yield return(new ParameterSet {
                Arguments = autoFixtureResolvedParams
            });

            yield break;
        }
        foreach (var parameterSet in parameterizedTestCaseParams)
        {
            var numberOfSpecifiedParams = parameterSet.Arguments.Length;
            var mergedParams            = parameterSet.Arguments.Concat(autoFixtureResolvedParams.Skip(numberOfSpecifiedParams));
            parameterSet.Arguments = mergedParams.ToArray();
            yield return(parameterSet);
        }
    }
Esempio n. 2
0
        /// <summary>
        /// Get Testcase with Test case attributes
        /// </summary>
        /// <param name="method">The MethodInfo object.</param>
        public ArrayList GetTestCasesWithTestCaseAttribute(MethodInfo method)
        {
            ArrayList testCaseCollection = new ArrayList();

            testMethods = Reflect.IsAsyncMethod(method) ? new NUnitAsyncTestMethod(method) : new NUnitTestMethod(method);
            ParameterizedMethodSuite methodSuite = new ParameterizedMethodSuite(method);

            NUnitFramework.ApplyCommonAttributes(method, methodSuite);
            IEnumerable ParameterList = ParamProvider.GetTestCasesFor(method);

            testCaseCollection.Add(testMethods.FixtureType.FullName + "." + method.Name);
            foreach (object source in ParameterList)
            {
                ParameterSet parms;
                if (source == null)
                {
                    parms           = new ParameterSet();
                    parms.Arguments = new object[] { null };
                }
                else
                {
                    parms = source as ParameterSet;
                }
                if (parms == null)
                {
                    if (source.GetType().GetInterface("NUnit.Framework.ITestCaseData") != null)
                    {
                        parms = ParameterSet.FromDataSource(source);
                    }
                    else
                    {
                        parms = new ParameterSet();
                        ParameterInfo[] parameters = method.GetParameters();
                        Type            sourceType = source.GetType();
                        if (parameters.Length == 1 && parameters[0].ParameterType.IsAssignableFrom(sourceType))
                        {
                            parms.Arguments = new object[] { source }
                        }
                        ;
                        else if (source is object[])
                        {
                            parms.Arguments = (object[])source;
                        }
                        else if (source is Array)
                        {
                            Array array = (Array)source;
                            if (array.Rank == 1)
                            {
                                parms.Arguments = new object[array.Length];
                                for (int i = 0; i < array.Length; i++)
                                {
                                    parms.Arguments[i] = (object)array.GetValue(i);
                                }
                            }
                        }
                        else
                        {
                            parms.Arguments = new object[] { source }
                        };
                    }
                }
                TestMethod testMethod = NUnit.Core.Builders.NUnitTestCaseBuilder.BuildSingleTestMethod(method, null, parms);
                testCaseCollection.Add(testMethod.TestName.FullName);
            }
            return(testCaseCollection);
        }