Beispiel #1
0
 /// <summary>
 /// Creates an example space by recursively applying a shrinking function to the root value.
 /// </summary>
 /// <typeparam name="T">The type of the example's value.</typeparam>
 /// <param name="rootValue"></param>
 /// <param name="shrink"></param>
 /// <param name="measure"></param>
 /// <param name="identify"></param>
 /// <returns></returns>
 public static IExampleSpace <T> Unfold <T>(
     T rootValue,
     ShrinkFunc <T> shrink,
     MeasureFunc <T> measure,
     IdentifyFunc <T> identify)
 {
     return(Unfold(
                rootValue,
                ShrinkFunc.WithoutContext(shrink),
                measure,
                identify));
 }
Beispiel #2
0
        public static IExampleSpace <T> Unfold <T, TContext>(
            T rootValue,
            ContextualShrinker <T, TContext> contextualShrinker,
            MeasureFunc <T> measure,
            IdentifyFunc <T> identify)
        {
            var functions = new ContextualizedUnfoldFunctions <T, TContext, T>(
                contextualShrinker.ContextualShrink, measure, identify, x => x, contextualShrinker.ContextualTraverse);

            var contextualizedExampleSpace = UnfoldHelpers.UnfoldInternal(
                rootValue,
                contextualShrinker.RootContext,
                functions);

            return(contextualizedExampleSpace.Map(x => x.Value));
        }
Beispiel #3
0
 private record ContextualizedUnfoldFunctions <TAccumulator, TContext, TProjection>(
     ContextualShrinkFunc <TAccumulator, TContext> Shrink,
     MeasureFunc <TAccumulator> Measure,
     IdentifyFunc <TAccumulator> Identify,
     Func <TAccumulator, TProjection> Projection,
     NextContextFunc <TProjection, TContext> NextContext);