Search in sources :

Example 81 with Operand

use of com.dexels.navajo.document.Operand 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);
}
Also used : FunctionInterface(com.dexels.navajo.expression.api.FunctionInterface) Operand(com.dexels.navajo.document.Operand) ContextExpression(com.dexels.navajo.expression.api.ContextExpression) StringReader(java.io.StringReader) ArrayList(java.util.ArrayList) FunctionDefinition(com.dexels.navajo.expression.api.FunctionDefinition) AddTestFunction(com.dexels.navajo.expression.compiled.AddTestFunction) Test(org.junit.Test)

Example 82 with Operand

use of com.dexels.navajo.document.Operand in project navajo by Dexels.

the class TestCompiledMoneyExpression method testSubtractWithMoney.

@Test
public void testSubtractWithMoney() {
    Operand result;
    result = Expression.evaluate("ToMoney(15) - ToMoney(10)", null, null, null);
    Assert.assertEquals(new Money(5), result.value);
    result = Expression.evaluate("15 - ToMoney(10)", null, null, null);
    Assert.assertEquals(new Money(5), result.value);
    result = Expression.evaluate("ToMoney(15) - 10", null, null, null);
    Assert.assertEquals(new Money(5), result.value);
    result = Expression.evaluate("ToLong(15) - ToMoney(10)", null, null, null);
    Assert.assertEquals(new Money(5), result.value);
    result = Expression.evaluate("ToMoney(15) - ToLong(10)", null, null, null);
    Assert.assertEquals(new Money(5), result.value);
    result = Expression.evaluate("15.0 - ToMoney(10)", null, null, null);
    Assert.assertEquals(new Money(5), result.value);
    result = Expression.evaluate("ToMoney(15) - 10.0", null, null, null);
    Assert.assertEquals(new Money(5), result.value);
}
Also used : Money(com.dexels.navajo.document.types.Money) Operand(com.dexels.navajo.document.Operand) Test(org.junit.Test)

Example 83 with Operand

use of com.dexels.navajo.document.Operand in project navajo by Dexels.

the class TestCompiledStringExpression method testAddIntegerAndString.

@Test
public void testAddIntegerAndString() {
    Operand result = Expression.evaluate("15 + 'bla'", null, null, null);
    assertEquals("15bla", result.value);
}
Also used : Operand(com.dexels.navajo.document.Operand) Test(org.junit.Test)

Example 84 with Operand

use of com.dexels.navajo.document.Operand in project navajo by Dexels.

the class TestCompiledLongExpression method testMultiplyWithLongs.

@Test
public void testMultiplyWithLongs() {
    FunctionInterface helperFunction = new GiveLongTestFunction();
    FunctionDefinition fd = new FunctionDefinition(helperFunction.getClass().getName(), "description", "input", "result");
    FunctionFactoryFactory.getInstance().addExplicitFunctionDefinition("ToLong", fd);
    Operand result;
    result = Expression.evaluate("ToLong(3) * ToLong(1)", null, null, null);
    Assert.assertEquals(3L, (long) result.value);
    result = Expression.evaluate("3 * ToLong(1)", null, null, null);
    Assert.assertEquals(3L, (long) result.value);
    result = Expression.evaluate("ToLong(3) * 1", null, null, null);
    Assert.assertEquals(3L, (long) result.value);
    result = Expression.evaluate("3.0 * ToLong(1)", null, null, null);
    Assert.assertEquals(3L, (double) result.value, 0.000001);
    result = Expression.evaluate("ToLong(3) * 1.0", null, null, null);
    Assert.assertEquals(3L, (double) result.value, 0.000001);
}
Also used : FunctionInterface(com.dexels.navajo.expression.api.FunctionInterface) Operand(com.dexels.navajo.document.Operand) FunctionDefinition(com.dexels.navajo.expression.api.FunctionDefinition) GiveLongTestFunction(com.dexels.navajo.expression.compiled.GiveLongTestFunction) Test(org.junit.Test)

Example 85 with Operand

use of com.dexels.navajo.document.Operand in project navajo by Dexels.

the class TestCompiledPercentageExpression method testAddWithPercentage.

@Test
public void testAddWithPercentage() {
    Operand result;
    result = Expression.evaluate("ToPercentage(15) + ToPercentage(10)", null, null, null);
    Assert.assertEquals(new Percentage(25), result.value);
    result = Expression.evaluate("15 + ToPercentage(10)", null, null, null);
    Assert.assertEquals(new Percentage(25), result.value);
    result = Expression.evaluate("ToPercentage(15) + 10", null, null, null);
    Assert.assertEquals(new Percentage(25), result.value);
    result = Expression.evaluate("ToLong(15) + ToPercentage(10)", null, null, null);
    Assert.assertEquals(new Percentage(25), result.value);
    result = Expression.evaluate("ToPercentage(15) + ToLong(10)", null, null, null);
    Assert.assertEquals(new Percentage(25), result.value);
    result = Expression.evaluate("15.0 + ToPercentage(10)", null, null, null);
    Assert.assertEquals(new Percentage(25), result.value);
    result = Expression.evaluate("ToPercentage(15) + 10.0", null, null, null);
    Assert.assertEquals(new Percentage(25), result.value);
}
Also used : Percentage(com.dexels.navajo.document.types.Percentage) Operand(com.dexels.navajo.document.Operand) Test(org.junit.Test)

Aggregations

Operand (com.dexels.navajo.document.Operand)95 Test (org.junit.Test)57 Message (com.dexels.navajo.document.Message)22 ImmutableMessage (com.dexels.immutable.api.ImmutableMessage)20 Navajo (com.dexels.navajo.document.Navajo)20 TMLExpressionException (com.dexels.navajo.expression.api.TMLExpressionException)15 ContextExpression (com.dexels.navajo.expression.api.ContextExpression)14 ArrayList (java.util.ArrayList)12 Selection (com.dexels.navajo.document.Selection)11 Property (com.dexels.navajo.document.Property)10 FunctionInterface (com.dexels.navajo.expression.api.FunctionInterface)10 Access (com.dexels.navajo.script.api.Access)10 MappableTreeNode (com.dexels.navajo.script.api.MappableTreeNode)10 NavajoException (com.dexels.navajo.document.NavajoException)9 TipiLink (com.dexels.navajo.expression.api.TipiLink)9 Optional (java.util.Optional)9 FunctionDefinition (com.dexels.navajo.expression.api.FunctionDefinition)8 GiveLongTestFunction (com.dexels.navajo.expression.compiled.GiveLongTestFunction)6 SystemException (com.dexels.navajo.script.api.SystemException)6 List (java.util.List)6