public CorrelationResponse Post([FromBody] CorrelationRequestAnalytic request) { CorrelationResponse result = new CorrelationResponse(); var watch = Stopwatch.StartNew(); try { var correlationCalculator = CorrelationCalculator.Create(request.Type); var scriptCompilator = new ScriptCompiler(); var function1 = Function.Create(scriptCompilator.GetFunc(request.Function1), request.LeftBorder, request.RightBorder, request.PointsCount); var function2 = Function.Create(scriptCompilator.GetFunc(request.Function2), request.LeftBorder, request.RightBorder, request.PointsCount); result.Value = correlationCalculator.GetCorrelation(function1, function2); } catch (Exception e) { result.Error = e.Message; } finally { watch.Stop(); result.ExecutionTime = watch.ElapsedMilliseconds; } return(result); }
public void ControllerReturnsErrorWhenSyntaxErrorInAnalyticFunction() { var controller = new CorrelationController(); var request = new CorrelationRequestAnalytic() { Type = CorrelationType.Kendall, Function1 = "x+1", Function2 = "*Pow(x) + 1", //Error here LeftBorder = -Math.PI, RightBorder = Math.PI, PointsCount = 100 }; CorrelationResponse response = controller.Post(request); Assert.NotEqual(response.Error, null); }
public CorrelationResponse Post([FromBody] CorrelationRequestNumeric request) { CorrelationResponse result = new CorrelationResponse(); var watch = Stopwatch.StartNew(); try { var correlationCalculator = CorrelationCalculator.Create(request.Type); result.Value = correlationCalculator.GetCorrelation(request.Function1, request.Function2); } catch (Exception e) { result.Error = e.Message; } finally { watch.Stop(); result.ExecutionTime = watch.ElapsedMilliseconds; } return(result); }
public void ControllerWorksIdenticallyForAnalyticAndNumericFunctions() { var controller = new CorrelationController(); var scriptCompiler = new ScriptCompiler(); string funcDesc1 = "Cos(x)"; string funcDesc2 = "Sin(x)"; double leftBorder = -1, rightBorder = 1; int pointsCount = 20; var function1 = Function.Create(scriptCompiler.GetFunc(funcDesc1), leftBorder, rightBorder, pointsCount); var function2 = Function.Create(scriptCompiler.GetFunc(funcDesc2), leftBorder, rightBorder, pointsCount); var requestAnalytic = new CorrelationRequestAnalytic() { Type = CorrelationType.Pearson, Function1 = funcDesc1, Function2 = funcDesc2, //Error here LeftBorder = leftBorder, RightBorder = rightBorder, PointsCount = pointsCount }; var requestNumeric = new CorrelationRequestNumeric() { Type = CorrelationType.Pearson, Function1 = function1, Function2 = function2 }; CorrelationResponse response1 = controller.Post(requestAnalytic); CorrelationResponse response2 = controller.Post(requestNumeric); Assert.Equal(response1.Value, response2.Value); }