use of java8.util.SplittableRandom in project streamsupport by stefan-zobel.
the class SplittableRandomTest method testBadStreamSize.
/**
* Invoking sized ints, long, doubles, with negative sizes throws
* IllegalArgumentException
*/
@SuppressWarnings("unused")
public void testBadStreamSize() {
SplittableRandom r = new SplittableRandom();
Runnable[] throwingActions = { () -> {
java8.util.stream.IntStream x = r.ints(-1L);
}, () -> {
java8.util.stream.IntStream x = r.ints(-1L, 2, 3);
}, () -> {
java8.util.stream.LongStream x = r.longs(-1L);
}, () -> {
java8.util.stream.LongStream x = r.longs(-1L, -1L, 1L);
}, () -> {
java8.util.stream.DoubleStream x = r.doubles(-1L);
}, () -> {
java8.util.stream.DoubleStream x = r.doubles(-1L, .5, .6);
} };
assertThrows(IllegalArgumentException.class, throwingActions);
}
use of java8.util.SplittableRandom in project streamsupport by stefan-zobel.
the class SplittableRandomTest method testNextIntBadBounds.
/**
* nextInt(least >= bound) throws IllegalArgumentException
*/
public void testNextIntBadBounds() {
SplittableRandom sr = new SplittableRandom();
Runnable[] throwingActions = { () -> sr.nextInt(17, 2), () -> sr.nextInt(-42, -42), () -> sr.nextInt(Integer.MAX_VALUE, Integer.MIN_VALUE) };
assertThrows(IllegalArgumentException.class, throwingActions);
}
use of java8.util.SplittableRandom in project streamsupport by stefan-zobel.
the class SplittableRandomTest method testUnsizedIntsCount.
/**
* A parallel unsized stream of ints generates at least 100 values
*/
public void testUnsizedIntsCount() {
LongAdder counter = new LongAdder();
SplittableRandom r = new SplittableRandom();
long size = 100;
r.ints().limit(size).parallel().forEach(x -> counter.increment());
assertEquals(size, counter.sum());
}
use of java8.util.SplittableRandom in project streamsupport by stefan-zobel.
the class SplittableRandomTest method testSplit2.
/**
* A SplittableRandom produced by split() of a seeded-constructed
* SplittableRandom generates a different sequence
*/
public void testSplit2() {
SplittableRandom sr = new SplittableRandom(12345);
for (int reps = 0; reps < REPS; ++reps) {
SplittableRandom sc = sr.split();
int i = 0;
while (i < NCALLS && sr.nextLong() == sc.nextLong()) ++i;
assertTrue(i < NCALLS);
}
}
use of java8.util.SplittableRandom in project streamsupport by stefan-zobel.
the class SplittableRandomTest method testBoundedLongs.
/**
* Each of a parallel sized stream of bounded longs is within bounds
*/
public void testBoundedLongs() {
AtomicInteger fails = new AtomicInteger(0);
SplittableRandom r = new SplittableRandom();
long size = 123L;
for (long least = -86028121; least < MAX_LONG_BOUND; least += 1982451653L) {
for (long bound = least + 2; bound > least && bound < MAX_LONG_BOUND; bound += Math.abs(bound * 7919)) {
final long lo = least, hi = bound;
r.longs(size, lo, hi).parallel().forEach(x -> {
if (x < lo || x >= hi)
fails.getAndIncrement();
});
}
}
assertEquals(0, fails.get());
}
Aggregations