/// <summary> /// Return an IEnumerable providing data for use with the /// supplied parameter. /// </summary> /// <param name="parameter">A ParameterInfo representing one /// argument to a parameterized test</param> /// <returns>An IEnumerable providing the required data</returns> public IEnumerable GetDataFor(ParameterInfo parameter, Test suite) { ArrayList list = new ArrayList(); foreach (IDataPointProvider provider in Extensions) { if (provider is IDataPointProvider2) { IDataPointProvider2 provider2 = (IDataPointProvider2)provider; if (provider2.HasDataFor(parameter, suite)) { foreach (object o in provider2.GetDataFor(parameter, suite)) { list.Add(o); } } } else if (provider.HasDataFor(parameter)) { foreach (object o in provider.GetDataFor(parameter)) { list.Add(o); } } } return(list); }
private CombiningStrategy GetStrategy(MethodInfo method, Test suite) { ParameterInfo[] parameters = method.GetParameters(); IEnumerable[] sources = new IEnumerable[parameters.Length]; for (int i = 0; i < parameters.Length; i++) { sources[i] = dataPointProvider.GetDataFor(parameters[i], suite); } if (Reflect.HasAttribute(method, SequentialAttribute, false)) { return(new SequentialStrategy(sources)); } if (Reflect.HasAttribute(method, PairwiseAttribute, false) && method.GetParameters().Length > 2) { return(new PairwiseStrategy(sources)); } return(new CombinatorialStrategy(sources)); }