![JAR search and dependency download from the Maven repository](/logo.png)
com.github.dakusui.lisj.special.Lambda Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jcunit Show documentation
Show all versions of jcunit Show documentation
Automated combinatorial testing framework on top of JUnit
package com.github.dakusui.lisj.special;
import org.apache.commons.lang3.ArrayUtils;
import com.github.dakusui.jcunit.core.Utils;
import com.github.dakusui.jcunit.exceptions.JCUnitException;
import com.github.dakusui.lisj.BaseForm;
import com.github.dakusui.lisj.CUT;
import com.github.dakusui.lisj.Context;
import com.github.dakusui.lisj.FormResult;
import com.github.dakusui.lisj.Symbol;
public class Lambda extends BaseForm {
/**
* Serial version UID
*/
private static final long serialVersionUID = 7978574769583650805L;
@Override
protected FormResult evaluateEach(Context context, Object currentParam,
FormResult lastResult) throws JCUnitException, CUT {
lastResult.incrementPosition();
lastResult.value(currentParam);
return lastResult;
}
@Override
protected FormResult evaluateLast(Context context,
final Object[] evaluatedParams, FormResult lastResult)
throws JCUnitException, CUT {
FormResult ret = lastResult;
final Symbol[] paramSymbols = Utils.cast(Symbol[].class, Utils.checknull(evaluatedParams[0]));
final Object[] funcBody = ArrayUtils.subarray(evaluatedParams, 1, evaluatedParams.length);
ret.value(new BaseForm() {
private static final long serialVersionUID = 1L;
@Override
protected FormResult evaluateEach(Context context,
Object currentParam, FormResult lastResult)
throws JCUnitException, CUT {
FormResult ret = lastResult;
ret.value(context.bind((Symbol) paramSymbols[lastResult.nextPosition()], currentParam));
ret.incrementPosition();
return ret;
}
@Override
protected FormResult evaluateLast(
Context context,
Object[] evaluatedParams,
FormResult lastResult
) throws JCUnitException, CUT {
FormResult ret = lastResult;
for (Object cur : funcBody) {
ret = evaluateEachSimply(context, cur, ret);
}
return ret;
}
@Override
public String name() {
return "(lambda)";
}
});
return ret;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy