package jstest.prefix;
import base.Functional;
import base.Selector;
import common.expression.Dialect;
import common.expression.ExprTester;
import common.expression.Language;
import common.expression.LanguageBuilder;
import jstest.object.ObjectTester;
import java.util.stream.IntStream;
/**
* Tester for
* JavaScript Expression Parsing
* homework of Programming Paradigms course.
*
* @author Georgiy Korneev (kgeorgiy@kgeorgiy.info)
*/
public final class ParserTester {
public static final Dialect PREFIX = new Dialect("%s", "%s", "({op} {args})", " ");
private ParserTester() {
}
public static Selector.Composite selector(
final Class> owner,
final String toString,
final String parse,
final Dialect unparsed,
final String... parsingTests
) {
assert parsingTests.length % 2 == 0;
return LanguageBuilder.selector(owner, mode -> true, (builder, counter) -> {
final String insertions = builder.variant().hasVarargs() ? "abc()+*/@ABC" : "xyz()+*/@ABC";
final Language language = builder.language(ObjectTester.OBJECT, unparsed);
final ExprTester