Пример #1
0
        public static InstanceGenerator <T> WithNewArray <T, TV, TW>(this PropertyGenerator <T, TV[]> property, Func <GeneratorContext <TW>, TW> factory, Action <InstanceGenerator <TW> > initializer)
            where TW : TV
        {
            var instanceGenerator = new InstanceGenerator <TW>(factory);

            initializer(instanceGenerator);
            property.SetValueGenerator(
                parentContext =>
            {
                var context = new GeneratorContext <TW>(parentContext);
                var objs    = new List <TV>();
                bool anyPropertyGeneratorIterable = instanceGenerator.AnyPropertyGeneratorIterable;
                Option <TW> generatedItem;
                while ((generatedItem = instanceGenerator.Generate(context)).HasValue)
                {
                    objs.Add(generatedItem.Value);
                    if (!anyPropertyGeneratorIterable)
                    {
                        break;
                    }
                }

                return(Option.Any(objs.ToArray()));
            },
                false);

            return(property.InstanceGenerator);
        }
Пример #2
0
 public static InstanceGenerator <T> WithGeneratedValue <T, TV>(this PropertyGenerator <T, TV> property, Func <GeneratorContext <T>, IValueGenerator <TV> > valueGeneratorFactory)
 {
     property.InstanceGenerator.AddValueGeneratorFactory(property, valueGeneratorFactory);
     property.SetValueGenerator(
         parentContext =>
     {
         var valueGenerator = parentContext.GetValueGenerator <TV>(property);
         return(valueGenerator.Next());
     },
         true);
     return(property.InstanceGenerator);
 }
Пример #3
0
 public static InstanceGenerator <T> WithStaticValue <T, TV>(this PropertyGenerator <T, TV> instance, TV value)
 {
     instance.SetValueGenerator(_ => Option.Any(value), false);
     return(instance.InstanceGenerator);
 }