Ejemplo n.º 1
0
        public static PropertyGenerator <T, TV> Property <T, TV>(this InstanceGenerator <T> instance, Expression <Func <T, TV> > expression)
        {
            var propertyValueGenerator = new PropertyGenerator <T, TV>(instance, expression);

            instance.AddPropertyValueGenerator(propertyValueGenerator);
            return(propertyValueGenerator);
        }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
0
 public PropertyGenerator(InstanceGenerator <TInstance> instanceGenerator, Expression <Func <TInstance, TProp> > expression)
 {
     instanceGenerator_ = instanceGenerator;
     setterFunc_        = GetSetter(expression);
 }