public override IEnumerable <ITestCase> CreateTests( IFixture fixture, MethodInfo method ) { // check parameters ParameterInfo[] parameters = method.GetParameters(); if (parameters.Length < 1) { throw new InvalidOperationException("Method " + method.Name + " has not enough parameters"); } // create the domains for each parameter List <IDomain> domains = new List <IDomain>(); Type[] parameterTypes = new Type[parameters.Length]; for (int index = 0; index < parameters.Length; ++index) { ParameterInfo parameter = parameters[index]; parameterTypes[index] = parameter.ParameterType; // get domains for parameter List <IDomain> pdomains = new List <IDomain>(); foreach (IParameterDomainFactory parameterDomainFactory in parameter.GetCustomAttributes(typeof(UsingAttributeBase), true)) { try { parameterDomainFactory.CreateDomains(pdomains, parameter, fixture); } catch (Exception ex) { throw new ApplicationException("Failed while loading domains from parameter " + parameter.Name, ex); } } if (pdomains.Count == 0) { throw new ApplicationException("Could not find domain for argument " + parameter.Name); } domains.Add(Domains.ToDomain(pdomains)); } // we make a cartesian product of all those foreach (ITuple tuple in Products.Cartesian(domains)) { // create data domains List <IDomain> tdomains = new List <IDomain>(); for (int i = 0; i < tuple.Count; ++i) { IDomain dm = (IDomain)tuple[i]; tdomains.Add(dm); } // computing the pairwize product IEnumerable <ITuple> ptproducts = Products.ComputeTupleProducts(tdomains, this.Combination); foreach (ITuple ptuple in ptproducts) { // tuple is valid, adding test CombinatorialMethodTestCase test = new CombinatorialMethodTestCase( fixture.Name, method, tuple, ptuple); yield return(test); } } }
public override IEnumerable<ITestCase> CreateTests( IFixture fixture, MethodInfo method ) { // check parameters ParameterInfo[] parameters = method.GetParameters(); if (parameters.Length < 1) throw new InvalidOperationException("Method "+method.Name+" has not enough parameters"); // create the domains for each parameter List<IDomain> domains = new List<IDomain>(); Type[] parameterTypes = new Type[parameters.Length]; for (int index = 0; index < parameters.Length; ++index) { ParameterInfo parameter = parameters[index]; parameterTypes[index] = parameter.ParameterType; // get domains for parameter List<IDomain> pdomains = new List<IDomain>(); foreach (IParameterDomainFactory parameterDomainFactory in parameter.GetCustomAttributes(typeof(UsingAttributeBase), true)) { try { parameterDomainFactory.CreateDomains(pdomains, parameter, fixture); } catch (Exception ex) { throw new ApplicationException("Failed while loading domains from parameter " + parameter.Name,ex); } } if (pdomains.Count == 0) throw new ApplicationException("Could not find domain for argument " + parameter.Name); domains.Add(Domains.ToDomain(pdomains)); } // we make a cartesian product of all those foreach (ITuple tuple in Products.Cartesian(domains)) { // create data domains List<IDomain> tdomains = new List<IDomain>(); for (int i = 0; i < tuple.Count; ++i) { IDomain dm = (IDomain)tuple[i]; tdomains.Add(dm); } // computing the pairwize product IEnumerable<ITuple> ptproducts = Products.ComputeTupleProducts(tdomains, this.Combination); foreach (ITuple ptuple in ptproducts) { // tuple is valid, adding test CombinatorialMethodTestCase test = new CombinatorialMethodTestCase( fixture.Name, method, tuple, ptuple); yield return test; } } }