Пример #1
0
    public async Task SelectAsync_from_ok_returns_transformation()
    {
        var t = new TestTransformerService();

        var newOkResult = await Result.Ok()
                          .SelectAsync(() => t.TransformAsync(TestTransformerService.Start, 1))
                          .SelectAsync(r => t.Transform(r, 2))
                          .SelectAsync(r => t.TransformAsync(r, 3));

        Assert.True(newOkResult.IsSuccess);
        Assert.Equal("Hello World!!!", newOkResult.Value);

        newOkResult = await Task.FromResult(Result.Ok())
                      .SelectAsync(() => t.Transform(TestTransformerService.Start, 4));

        Assert.True(newOkResult.IsSuccess);
        Assert.Equal("Hello World!", newOkResult.Value);

        newOkResult = await Task.FromResult(Result.Ok())
                      .SelectAsync(() => t.TransformAsync(TestTransformerService.Start, 5))
                      .SelectAsync(r => t.TransformAsync(r, 6));

        Assert.True(newOkResult.IsSuccess);
        Assert.Equal("Hello World!!", newOkResult.Value);
    }
Пример #2
0
    public void Map_runs_function_against_input_and_returns_output()
    {
        var t = new TestTransformerService();

        var actual = TestTransformerService.Start
                     .Map(i => t.Transform(i, 1))
                     .Map(i => t.Transform(i, 2));

        Assert.Equal("Hello World!!", actual);
    }
Пример #3
0
    public async Task MapAsync_awaits_as_needed()
    {
        var t = new TestTransformerService();

        var actual = await TestTransformerService.Start
                     .MapAsync(i => t.TransformAsync(i, 1))
                     .MapAsync(i => t.Transform(i, 2))
                     .MapAsync(i => t.TransformAsync(i, 3));

        Assert.Equal("Hello World!!!", actual);
    }
Пример #4
0
    public async Task SelectAsync_from_none_returns_none()
    {
        var t = new TestTransformerService();

        var maybe = await Maybe.None <string>()
                    .SelectAsync(a => t.TransformAsync(a, 1))
                    .SelectAsync(a => t.Transform(a, 2))
                    .SelectAsync(a => t.TransformAsync(a, 3));

        Assert.True(maybe.HasNoValue);
    }
Пример #5
0
    public async Task SelectAsync_from_failure_returns_failure()
    {
        var t = new TestTransformerService();

        var newFailResult = await Result.Fail(new Failure("oops"))
                            .SelectAsync(() => t.TransformAsync(TestTransformerService.Start, 1))
                            .SelectAsync(r => t.Transform(r, 2))
                            .SelectAsync(r => t.TransformAsync(r, 3));

        Assert.True(newFailResult.IsFailed);
        Assert.Equal("oops", newFailResult.Failures.First().Message);
    }
Пример #6
0
    public async Task SelectAsync_from_maybe_with_value_returns_transformation()
    {
        var t = new TestTransformerService();

        var maybe = await Maybe.From(TestTransformerService.Start)
                    .SelectAsync(a => t.TransformAsync(a, 1))
                    .SelectAsync(a => t.Transform(a, 2))
                    .SelectAsync(a => t.TransformAsync(a, 3));

        Assert.True(maybe.HasValue);
        Assert.Equal("Hello World!!!", maybe.Value);
    }
Пример #7
0
    public async Task ThenAsync_from_Maybe_with_value_returns_new_maybe()
    {
        var t = new TestTransformerService();

        var maybe = await Maybe.From(TestTransformerService.Start)
                    .ThenAsync(a => t.TransformMaybeAsync(a, 1))
                    .ThenAsync(a => t.TransformMaybe(a, 2))
                    .ThenAsync(a => t.TransformMaybeAsync(a, 3));

        Assert.True(maybe.HasValue);
        Assert.Equal("Hello World!!!", maybe.Value);
    }
Пример #8
0
    public async Task ThenAsync_from_failure_doesnt_run_function()
    {
        var t = new TestTransformerService();

        var newFailResult = await Result.Fail <int>(new Failure("oops"))
                            .ThenAsync(r => t.GetResultAsync(string.Empty, 1))
                            .ThenAsync(r => t.GetResult(string.Empty, 2))
                            .ThenAsync(r => t.GetResultAsync(string.Empty, 2))
                            .ThenAsync(r => t.GetResultAsync(3))
                            .ThenAsync(() => t.GetResultAsync(4))
                            .ThenAsync(() => t.GetResult(string.Empty, 5))
                            .ThenAsync(r => t.GetResult(string.Empty, 6))
                            .ThenAsync(r => t.GetResultAsync(7))
                            .ThenAsync(() => t.GetResultAsync(2, 8))
                            .ThenAsync(r => t.GetResult(9));

        Assert.True(newFailResult.IsFailed);
        Assert.Equal("oops", newFailResult.Failures.First().Message);
    }
Пример #9
0
    public async Task ThenAsync_from_ok_runs_function()
    {
        var t = new TestTransformerService();

        var newOkResult = await Result.Ok()
                          .ThenAsync(() => t.GetResultAsync(1))
                          .ThenAsync(() => t.GetResult(2))
                          .ThenAsync(() => t.GetResultAsync(3))
                          .ThenAsync(() => t.GetResult(string.Empty, 4))
                          .ThenAsync(r => t.GetResult(string.Empty, 5))
                          .ThenAsync(r => t.GetResult(string.Empty, 6))
                          .ThenAsync(r => t.GetResult(string.Empty, 7))
                          .ThenAsync(r => t.GetResultAsync(8))
                          .ThenAsync(() => t.GetResultAsync(2, 9))
                          .ThenAsync(r => t.GetResult(2, 10));

        Assert.True(newOkResult.IsSuccess);
        Assert.Equal(2, newOkResult.Value);
    }