public void Javascript() { const int expected = 12; var input = new RowsBuilder().Row("x", 3).Field("y", 4).ToOperation(); var scripts = new Dictionary<string, Script>() { { "script", new Script("script", "function multiply(x,y) { return x*y; }", "") } }; var parameters = new ParametersBuilder().Parameters("x", "y").ToParameters(); var javascript = new JavascriptOperation("o1", "multiply(x,y)", scripts, parameters, new TestLogger()); var output = TestOperation(input, javascript); Assert.AreEqual(expected, output[0]["o1"]); }
public void JavascriptWithDates() { const string minuteDiff = @" function minuteDiff(orderStatus, start, end) { if (orderStatus == 'Completed' || orderStatus == 'Problematic') { var answer = 0; if (start.getFullYear() != 9999 && end.getFullYear() != 9999) { var ms = Math.abs(start - end); answer = Math.round((ms / 1000) / 60); } return answer > 60 ? 60 : answer; } else { return 0; } }"; var input = new RowsBuilder() .Row("OrderStatus", "Completed") .Field("StartDate", DateTime.Now.AddMinutes(-30.0)) .Field("EndDate", DateTime.Now) .Row("OrderStatus", "Problematic") .Field("StartDate", DateTime.Now.AddMinutes(-29.0)) .Field("EndDate", DateTime.Now) .Row("OrderStatus", "Problematic") .Field("StartDate", DateTime.Now.AddMinutes(-78.0)) .Field("EndDate", DateTime.Now) .Row("OrderStatus", "x") .Field("StartDate", DateTime.Now.AddMinutes(-20.0)) .Field("EndDate", DateTime.Now) .ToOperation(); var scripts = new Dictionary<string, Script>() { { "script", new Script("script", minuteDiff, "") } }; var parameters = new ParametersBuilder().Parameters("OrderStatus", "StartDate", "EndDate").ToParameters(); var javascript = new JavascriptOperation("o1", "minuteDiff(OrderStatus,StartDate,EndDate);", scripts, parameters, new TestLogger()); var output = TestOperation(input, javascript); Assert.AreEqual(30, output[0]["o1"]); Assert.AreEqual(29, output[1]["o1"]); Assert.AreEqual(60, output[2]["o1"]); Assert.AreEqual(0, output[3]["o1"]); }
public void JsonWithJavascript() { var input = new RowsBuilder() .Row("x", "[{\"value\":false},{\"value\":true}]") .ToOperation(); var parameters = new ParametersBuilder() .Parameter("x") .ToParameters(); var js = new JavascriptOperation("out", @" JSON.parse(x)[1].value", new Dictionary<string, Script>(), parameters, new TestLogger() ); var output = TestOperation(input, js); Assert.AreEqual(true, output[0]["out"]); }