use of com.dexels.navajo.expression.api.FunctionInterface in project navajo by Dexels.
the class TestCompiledExpression method testMultiArgFunction.
@Test
public void testMultiArgFunction() throws Exception {
FunctionInterface testFunction = new AddTestFunction();
FunctionDefinition fd = new FunctionDefinition(testFunction.getClass().getName(), "blib", "bleb", "blab");
FunctionFactoryFactory.getInstance().addExplicitFunctionDefinition("SingleValueQuery", fd);
String expression = "SingleValueQuery( 'aap','noot' )";
StringReader sr = new StringReader(expression);
CompiledParser cp = new CompiledParser(sr);
List<String> problems = new ArrayList<>();
cp.Expression();
cp.getJJTree().rootNode().interpretToLambda(problems, sr.toString(), fn -> FunctionClassification.DEFAULT, name -> Optional.empty());
}
use of com.dexels.navajo.expression.api.FunctionInterface in project navajo by Dexels.
the class TestCompiledExpression method testNestedNamedParams.
@Test
public void testNestedNamedParams() throws Exception {
FunctionInterface testFunction = new ParameterNamesFunction();
FunctionDefinition fd = new FunctionDefinition(testFunction.getClass().getName(), "description", "input", "result");
FunctionFactoryFactory.getInstance().addExplicitFunctionDefinition("ParameterNamesFunction", fd);
String expression = "ParameterNamesFunction(aap=1+1,noot=2+2)";
StringReader sr = new StringReader(expression);
CompiledParser cp = new CompiledParser(sr);
List<String> problems = new ArrayList<>();
cp.Expression();
ContextExpression ss = cp.getJJTree().rootNode().interpretToLambda(problems, sr.toString(), fn -> FunctionClassification.DEFAULT, name -> Optional.empty());
Assert.assertEquals("aap,noot", ss.apply().value);
}
use of com.dexels.navajo.expression.api.FunctionInterface in project navajo by Dexels.
the class TestCompiledExpression method testEmptyFunctionCall.
@Test
public void testEmptyFunctionCall() throws ParseException {
FunctionInterface testFunction = new AddTestFunction();
FunctionDefinition fd = new FunctionDefinition(testFunction.getClass().getName(), "blib", "bleb", "blab");
FunctionFactoryFactory.getInstance().addExplicitFunctionDefinition("addtest", fd);
String expression = "addtest()";
StringReader sr = new StringReader(expression);
CompiledParser cp = new CompiledParser(sr);
cp.Expression();
List<String> problems = new ArrayList<>();
ContextExpression ss = cp.getJJTree().rootNode().interpretToLambda(problems, sr.toString(), fn -> FunctionClassification.DEFAULT, name -> Optional.empty());
Operand o = ss.apply();
Assert.assertEquals("monkey", o.value);
}
use of com.dexels.navajo.expression.api.FunctionInterface in project navajo by Dexels.
the class TestCompiledExpression method testNestedNamedFunction.
@Test
public void testNestedNamedFunction() throws Exception {
FunctionInterface testFunction = new AddTestFunction();
FunctionDefinition fd = new FunctionDefinition(testFunction.getClass().getName(), "description", "input", "result");
FunctionFactoryFactory.getInstance().addExplicitFunctionDefinition("MysteryFunction", fd);
String expression = "MysteryFunction(eep=MysteryFunction('blib','blob'), 'aap','noot' )";
StringReader sr = new StringReader(expression);
CompiledParser cp = new CompiledParser(sr);
List<String> problems = new ArrayList<>();
cp.Expression();
cp.getJJTree().rootNode().interpretToLambda(problems, sr.toString(), fn -> FunctionClassification.DEFAULT, name -> Optional.empty());
}
use of com.dexels.navajo.expression.api.FunctionInterface in project navajo by Dexels.
the class TestCompiledExpression method testFunctionCallWithNamedParams.
@Test
public void testFunctionCallWithNamedParams() throws ParseException {
FunctionInterface testFunction = new AddTestFunction();
FunctionDefinition fd = new FunctionDefinition(testFunction.getClass().getName(), "blib", "bleb", "blab");
FunctionFactoryFactory.getInstance().addExplicitFunctionDefinition("addtest", fd);
String expression = "addtest(aap='blub',3+5,4)";
StringReader sr = new StringReader(expression);
CompiledParser cp = new CompiledParser(sr);
cp.Expression();
SimpleNode atn = (SimpleNode) cp.getJJTree().rootNode();
List<String> problems = new ArrayList<>();
ContextExpression ne = atn.interpretToLambda(problems, expression, fn -> FunctionClassification.DEFAULT, name -> Optional.empty());
Operand result = ne.apply();
Assert.assertEquals("monkey", result.value);
}
Aggregations