コード例 #1
0
    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);
    }
コード例 #2
0
    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
        });
    }