-
Notifications
You must be signed in to change notification settings - Fork 17
Open
Description
test in jsonata
describe("custom function pipe", () => {
// Platform specific
describe("$add(1,2) ~> $add(?, 3)", function() {
it("should return 6", async function() {
function add(a, b) {
return a + b;
}
var expr = jsonata("$add(1,2) ~> $add(?, 3)");
expr.registerFunction("add", add);
var result = await expr.evaluate();
var expected = 6;
expect(result).to.be.equal(expected);
});
});
});
success resturn 6
test in jsonata java
@Test
public void testCustomFunctionPipe() {
var expression = Jsonata.jsonata("$add(1, 2) ~> $add(?, 3)");
expression.registerFunction("add", new JFunction(new JFunctionCallable() {
@SuppressWarnings("rawtypes")
@Override
public Object call(Object input, List args) throws Throwable {
return (Integer) args.get(0) + (Integer) args.get(1);
}
}, null));
Assertions.assertEquals(6, expression.evaluate(null));
}
thrown Exception
Proc not found null
com.dashjoin.jsonata.JException: Attempted to invoke a non-function
at com.dashjoin.jsonata@0.9.9-local4/com.dashjoin.jsonata.Jsonata.applyInner(Jsonata.java:1782)
at com.dashjoin.jsonata@0.9.9-local4/com.dashjoin.jsonata.Jsonata.apply(Jsonata.java:1705)
at com.dashjoin.jsonata@0.9.9-local4/com.dashjoin.jsonata.Jsonata.evaluateApplyExpression(Jsonata.java:1547)
at com.dashjoin.jsonata@0.9.9-local4/com.dashjoin.jsonata.Jsonata._evaluate(Jsonata.java:203)
at com.dashjoin.jsonata@0.9.9-local4/com.dashjoin.jsonata.Jsonata.evaluate(Jsonata.java:131)
at com.dashjoin.jsonata@0.9.9-local4/com.dashjoin.jsonata.Jsonata.evaluate(Jsonata.java:2607)
at com.dashjoin.jsonata@0.9.9-local4/com.dashjoin.jsonata.Jsonata.evaluate(Jsonata.java:2568)
at com.dashjoin.jsonata@0.9.9-local4/com.dashjoin.jsonata.CustomFunctionTest.testCustomFunctionPipe(CustomFunctionTest.java:65)
I need to use this call chain for another custom method. I used a simple "add" as an example.
Metadata
Metadata
Assignees
Labels
No labels