Exemple #1
0
        private IEnumerable <IEnumerable <KeyValuePair <string, object> > > PairwiseGenerateMatrixFromDimensions(IEnumerable <TestMatrixDimensionAttribute> dimensionAttributes, IEnumerable <KeyValuePair <MethodInfo, object> > constraintsInfo, int order)
        {
            var random = new Random(this.ExplorationSeed);
            var dimensionsWithStrategies = dimensionAttributes.OrderBy(a => a.Position).Select(a => this.GetDimensionWithStrategy(a)).ToArray();
            var dimensions = dimensionsWithStrategies.Select(ds => ds.Key).ToArray();
            var matrix     = new Matrix(dimensions);

            var constraints = constraintsInfo.Select(ci => (IConstraint) new TestMatrixMethodBasedConstraint(ci.Key, ci.Value, dimensions));
            var pairwise    = new PairwiseStrategy(matrix, random.Next, constraints);

            pairwise.Order = order;
            foreach (var ds in dimensionsWithStrategies)
            {
                // Note: strategy can be null for closed domains like bool or enum types
                if (ds.Value != null)
                {
                    pairwise.SetDimensionStrategy(ds.Key, ds.Value);
                }
            }

            var vectors = pairwise.Explore();
            var result  = vectors.Select(v => (IEnumerable <KeyValuePair <string, object> >)dimensions.Select(d => new KeyValuePair <string, object>(d.Name, v.GetValue(d))).ToList()).ToList();

            return(result);
        }