Files
paradigms/common/common/Engine.java
2026-04-08 21:25:17 +03:00

38 lines
912 B
Java

package common;
import base.Asserts;
import java.util.function.BiFunction;
/**
* Test engine.
*
* @author Georgiy Korneev (kgeorgiy@kgeorgiy.info)
*/
public interface Engine<X> {
Result<X> prepare(String expression);
Result<Number> evaluate(final Result<X> prepared, double[] vars);
Result<String> toString(final Result<X> prepared);
default Result<X> parse(final String expression) {
throw new UnsupportedOperationException();
}
record Result<T>(String context, T value) {
public void assertEquals(final T expected) {
Asserts.assertEquals(context(), expected, value());
}
public <R> Result<R> cast(final BiFunction<T, String, R> convert) {
return new Result<>(context(), convert.apply(value(), context()));
}
@Override
public String toString() {
return context();
}
}
}