migration
This commit is contained in:
73
clojure/cljtest/linear/LinearTest.java
Normal file
73
clojure/cljtest/linear/LinearTest.java
Normal file
@@ -0,0 +1,73 @@
|
||||
package cljtest.linear;
|
||||
|
||||
import base.ExtendedRandom;
|
||||
import base.Selector;
|
||||
import base.TestCounter;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.IntFunction;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
|
||||
/**
|
||||
* Tests for
|
||||
* <a href="https://www.kgeorgiy.info/courses/paradigms/homeworks.html#clojure-linear">Linear Clojure</a>
|
||||
* homework of <a href="https://www.kgeorgiy.info/courses/paradigms">Programming Paradigms</a> course.
|
||||
*
|
||||
* @author Georgiy Korneev (kgeorgiy@kgeorgiy.info)
|
||||
*/
|
||||
public final class LinearTest {
|
||||
// === Selector
|
||||
|
||||
public static final Selector SELECTOR = new Selector(LinearTester.class, "easy", "hard")
|
||||
.variant("Base", v(LinearTester::new))
|
||||
;
|
||||
|
||||
private LinearTest() {
|
||||
}
|
||||
|
||||
/* package-private*/ static Consumer<TestCounter> v(final Function<TestCounter, LinearTester> variant) {
|
||||
return counter -> variant.apply(counter).test();
|
||||
}
|
||||
|
||||
/* package-private*/ static Consumer<TestCounter> variant(final List<Item.Fun> functions, final Consumer<Test> variant) {
|
||||
return v(counter -> new LinearTester(counter) {
|
||||
@Override
|
||||
protected void test(final int args) {
|
||||
variant.accept(new Test(this, functions, args));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* package-private */ record Test(
|
||||
LinearTester test,
|
||||
List<Item.Fun> functions,
|
||||
int args
|
||||
) {
|
||||
public void test(final Supplier<Item> generator) {
|
||||
test.test(args, functions, Item.same(generator));
|
||||
}
|
||||
|
||||
public void test(final IntFunction<List<Item>> generator) {
|
||||
test.test(args, functions, generator);
|
||||
}
|
||||
|
||||
public boolean isHard() {
|
||||
return test.isHard();
|
||||
}
|
||||
|
||||
public void expectException(final int[] okDims, final int[][] failDims) {
|
||||
test.expectException(functions, okDims, failDims);
|
||||
}
|
||||
|
||||
public ExtendedRandom random() {
|
||||
return test.random();
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(final String... args) {
|
||||
SELECTOR.main(args);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user