示例#1
0
            internal virtual Value NewUniqueValue(RandomValues random, ISet <Value> uniqueCompareValues, IList <Value> uniqueValues)
            {
                int   attempts    = 0;
                int   maxAttempts = 10;                       // To avoid infinite loop on booleans
                Value value;

                do
                {
                    attempts++;
                    ValueType type            = RandomValues.among(Types);
                    bool      useExtremeValue = attempts == 1 && RandomValues.NextDouble() < FRACTION_EXTREME_VALUE;
                    if (useExtremeValue)
                    {
                        value = RandomValues.among(type.extremeValues());
                    }
                    else
                    {
                        value = random.NextValueOfType(type);
                    }
                } while (attempts < maxAttempts && !uniqueCompareValues.Add(value));
                uniqueValues.Add(value);
                return(value);
            }