4
4
import java .util .function .*;
5
5
import java .util .stream .*;
6
6
7
+ import net .jqwik .api .random .*;
8
+
7
9
import org .apiguardian .api .*;
8
10
9
11
import static org .apiguardian .api .API .Status .*;
@@ -19,13 +21,13 @@ abstract class RandomGeneratorFacade {
19
21
implementation = FacadeLoader .load (RandomGeneratorFacade .class );
20
22
}
21
23
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 );
23
25
24
26
public abstract <T , U > Shrinkable <U > flatMap (
25
27
Shrinkable <T > wrappedShrinkable ,
26
28
Function <T , Arbitrary <U >> mapper ,
27
29
int genSize ,
28
- long nextLong ,
30
+ JqwikRandomState nextLong ,
29
31
boolean withEmbeddedEdgeCases
30
32
);
31
33
@@ -44,7 +46,7 @@ public abstract <T, U> Shrinkable<U> flatMap(
44
46
* @param random the source of randomness. Injected by jqwik itself.
45
47
* @return the next generated value wrapped within the Shrinkable interface. The method must ALWAYS return a next value.
46
48
*/
47
- Shrinkable <T > next (Random random );
49
+ Shrinkable <T > next (JqwikRandom random );
48
50
49
51
@ API (status = INTERNAL )
50
52
default <U > RandomGenerator <U > map (Function <T , U > mapper ) {
@@ -63,7 +65,7 @@ default <U> RandomGenerator<U> mapShrinkable(Function<Shrinkable<T>, Shrinkable<
63
65
default <U > RandomGenerator <U > flatMap (Function <T , RandomGenerator <U >> mapper ) {
64
66
return random -> {
65
67
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 ());
67
69
};
68
70
}
69
71
@@ -72,7 +74,7 @@ default <U> RandomGenerator<U> flatMap(Function<T, Arbitrary<U>> mapper, int gen
72
74
return random -> {
73
75
Shrinkable <T > wrappedShrinkable = RandomGenerator .this .next (random );
74
76
return RandomGeneratorFacade .implementation
75
- .flatMap (wrappedShrinkable , mapper , genSize , random .nextLong (), withEmbeddedEdgeCases );
77
+ .flatMap (wrappedShrinkable , mapper , genSize , random .split (). saveState (), withEmbeddedEdgeCases );
76
78
};
77
79
}
78
80
@@ -87,7 +89,7 @@ default RandomGenerator<T> withEdgeCases(int genSize, EdgeCases<T> edgeCases) {
87
89
}
88
90
89
91
@ API (status = INTERNAL )
90
- default Stream <Shrinkable <T >> stream (Random random ) {
92
+ default Stream <Shrinkable <T >> stream (JqwikRandom random ) {
91
93
return Stream .generate (() -> this .next (random ));
92
94
}
93
95
0 commit comments