コード例 #1
0
            public override IEnumerable GetData(IParameterInfo parameter)
            {
                Guard.ArgumentValid(parameter.ParameterType.GetTypeInfo().IsEnum, "EnumDataSource requires an enum parameter", "parameter");

                Randomizer randomizer = Randomizer.GetRandomizer(parameter.ParameterInfo);

                DataType = parameter.ParameterType;

                int valueCount = Enum.GetValues(DataType).Cast <int>().Distinct().Count();

                Guard.OperationValid(!(Distinct && _count > valueCount), $"The enum \"{DataType.Name}\" has {valueCount} values and the random value count is {_count} so the values cannot be distinct.");

                for (int i = 0; i < _count; i++)
                {
                    if (Distinct)
                    {
                        object next;

                        do
                        {
                            next = randomizer.NextEnum(parameter.ParameterType);
                        } while (previousValues.Contains(next));

                        previousValues.Add(next);

                        yield return(next);
                    }
                    else
                    {
                        yield return(randomizer.NextEnum(parameter.ParameterType));
                    }
                }
            }
コード例 #2
0
            public override IEnumerable GetData(IParameterInfo parameter)
            {
                Guard.ArgumentValid(parameter.ParameterType.GetTypeInfo().IsEnum, "EnumDataSource requires an enum parameter", "parameter");

                Randomizer randomizer = Randomizer.GetRandomizer(parameter.ParameterInfo);

                DataType = parameter.ParameterType;

                for (int i = 0; i < _count; i++)
                {
                    yield return(randomizer.NextEnum(parameter.ParameterType));
                }
            }