44import java .util .function .*;
55import java .util .stream .*;
66
7+ import net .jqwik .api .random .*;
8+
79import org .apiguardian .api .*;
810
911import static org .apiguardian .api .API .Status .*;
@@ -19,13 +21,13 @@ abstract class RandomGeneratorFacade {
1921 implementation = FacadeLoader .load (RandomGeneratorFacade .class );
2022 }
2123
22- public abstract <T , U > Shrinkable <U > flatMap (Shrinkable <T > self , Function <T , RandomGenerator <U >> mapper , long nextLong );
24+ public abstract <T , U > Shrinkable <U > flatMap (Shrinkable <T > self , Function <T , RandomGenerator <U >> mapper , JqwikRandomState nextLong );
2325
2426 public abstract <T , U > Shrinkable <U > flatMap (
2527 Shrinkable <T > wrappedShrinkable ,
2628 Function <T , Arbitrary <U >> mapper ,
2729 int genSize ,
28- long nextLong ,
30+ JqwikRandomState nextLong ,
2931 boolean withEmbeddedEdgeCases
3032 );
3133
@@ -44,7 +46,7 @@ public abstract <T, U> Shrinkable<U> flatMap(
4446 * @param random the source of randomness. Injected by jqwik itself.
4547 * @return the next generated value wrapped within the Shrinkable interface. The method must ALWAYS return a next value.
4648 */
47- Shrinkable <T > next (Random random );
49+ Shrinkable <T > next (JqwikRandom random );
4850
4951 @ API (status = INTERNAL )
5052 default <U > RandomGenerator <U > map (Function <T , U > mapper ) {
@@ -63,7 +65,7 @@ default <U> RandomGenerator<U> mapShrinkable(Function<Shrinkable<T>, Shrinkable<
6365 default <U > RandomGenerator <U > flatMap (Function <T , RandomGenerator <U >> mapper ) {
6466 return random -> {
6567 Shrinkable <T > wrappedShrinkable = RandomGenerator .this .next (random );
66- return RandomGeneratorFacade .implementation .flatMap (wrappedShrinkable , mapper , random .nextLong ());
68+ return RandomGeneratorFacade .implementation .flatMap (wrappedShrinkable , mapper , random .split (). saveState ());
6769 };
6870 }
6971
@@ -72,7 +74,7 @@ default <U> RandomGenerator<U> flatMap(Function<T, Arbitrary<U>> mapper, int gen
7274 return random -> {
7375 Shrinkable <T > wrappedShrinkable = RandomGenerator .this .next (random );
7476 return RandomGeneratorFacade .implementation
75- .flatMap (wrappedShrinkable , mapper , genSize , random .nextLong (), withEmbeddedEdgeCases );
77+ .flatMap (wrappedShrinkable , mapper , genSize , random .split (). saveState (), withEmbeddedEdgeCases );
7678 };
7779 }
7880
@@ -87,7 +89,7 @@ default RandomGenerator<T> withEdgeCases(int genSize, EdgeCases<T> edgeCases) {
8789 }
8890
8991 @ API (status = INTERNAL )
90- default Stream <Shrinkable <T >> stream (Random random ) {
92+ default Stream <Shrinkable <T >> stream (JqwikRandom random ) {
9193 return Stream .generate (() -> this .next (random ));
9294 }
9395
0 commit comments