47 lines
1.3 KiB
Java
47 lines
1.3 KiB
Java
package aud.exam.prep;
|
|
|
|
import org.junit.jupiter.api.extension.ExtensionContext;
|
|
import org.junit.jupiter.params.provider.Arguments;
|
|
import org.junit.jupiter.params.provider.ArgumentsProvider;
|
|
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.IntStream;
|
|
import java.util.stream.Stream;
|
|
|
|
public class ListOfRunsProvider implements ArgumentsProvider {
|
|
|
|
@Override
|
|
public Stream<? extends Arguments> provideArguments(ExtensionContext extensionContext) {
|
|
return Stream
|
|
.generate(this::listOfRuns)
|
|
.map(Arguments::of)
|
|
.limit(Tests.STEAM_SIZE);
|
|
}
|
|
|
|
private List<List<Integer>> listOfRuns() {
|
|
var runs = Tests.RANDOM.nextInt(20);
|
|
return Stream
|
|
.generate(this::run)
|
|
.limit(runs)
|
|
.collect(Collectors.toList());
|
|
}
|
|
|
|
private List<Integer> run() {
|
|
var size = Tests.RANDOM.nextInt(50);
|
|
var run = IntStream
|
|
.range(0, size)
|
|
.boxed()
|
|
.flatMap(i -> {
|
|
var n = Tests.RANDOM.nextInt(5);
|
|
return Collections.nCopies(n, i).stream();
|
|
})
|
|
.collect(Collectors.toList());
|
|
|
|
run.add(0, -1);
|
|
run.add(999);
|
|
return run;
|
|
}
|
|
}
|