protected override IEnumerable <IGenIteration <T> > Run(GenParameters parameters) { while (true) { yield return(GenIterationFactory.Error <T>(parameters, parameters, _genName, _message)); } }
internal static IGen <T> SelectError <T>(this IGen <T> gen, Func <IGenErrorData, IGenErrorData> errorSelector) { IGenIteration <T> SelectError(IGenError <T> error) { var selectedErrorData = errorSelector(error); return(GenIterationFactory.Error <T>( error.ReplayParameters, error.NextParameters, selectedErrorData.GenName, selectedErrorData.Message)); } GenIterationTransformation <T, T> transformation = (iteration) => { return(iteration.Match( onError: error => SelectError(error), onInstance: instance => instance, onDiscard: discard => discard)); }; return(gen.TransformIterations(transformation)); }
public static IGen <T> Cast <T>(this IGen gen) => new FunctionalGen <T>(parameters => gen.Advanced .Run(parameters) .Select(iteration => iteration.Data.Match( onInstance: instance => GenIterationFactory.Instance <T>( iteration.ReplayParameters, iteration.NextParameters, instance.ExampleSpace.Cast <T>(), instance.ExampleSpaceHistory), onError: error => GenIterationFactory.Error <T>( iteration.ReplayParameters, iteration.NextParameters, error.GenName, error.Message), onDiscard: discard => GenIterationFactory.Discard <T>( iteration.ReplayParameters, iteration.NextParameters, discard.ExampleSpace))));