This repository has been archived on 2025-01-16. You can view files and clone it, but cannot push or open issues or pull requests.
AuD-2021-Exam-Prep/test/aud/exam/prep/ListOfRunsProvider.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;
}
}