public static async Task Function_Computes_Results(double left, string op, double right, double expected) { // Arrange using var server = new LambdaTestServer(); using var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(1)); await server.StartAsync(cancellationTokenSource.Token); var value = new MathsRequest() { Left = left, Operator = op, Right = right }; string json = JsonSerializer.Serialize(value); var context = await server.EnqueueAsync(json); using var httpClient = server.CreateClient(); // Act await MathsFunction.RunAsync(httpClient, cancellationTokenSource.Token); // Assert Assert.True(context.Response.TryRead(out var response)); Assert.NotNull(response); Assert.True(response !.IsSuccessful); json = await response.ReadAsStringAsync(); var actual = JsonSerializer.Deserialize <MathsResponse>(json); Assert.NotNull(actual); Assert.Equal(expected, actual !.Result); }
private static MathsResponse Evaluate(MathsRequest request) { double result = request.Operator switch { "+" => request.Left + request.Right, "-" => request.Left - request.Right, "*" => request.Left * request.Right, "/" => request.Left / request.Right, "%" => request.Left % request.Right, "^" => Math.Pow(request.Left, request.Right), _ => throw new NotSupportedException($"The '{request.Operator}' operator is not supported."), }; return(new MathsResponse() { Result = result }); }