Skip to content

Commit 94756e1

Browse files
authored
Merge pull request #547 from julienasp/julienasp/adding/tounitresult
Adding Maybe.ToUnitResult()
2 parents 38155c9 + 91e772b commit 94756e1

File tree

11 files changed

+455
-0
lines changed

11 files changed

+455
-0
lines changed

CSharpFunctionalExtensions.Tests/CSharpFunctionalExtensions.Tests.csproj

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,18 @@
2525
</ItemGroup>
2626

2727
<ItemGroup>
28+
<Compile Update="MaybeTests\Extensions\ToUnitResultTests.Task.cs">
29+
<DependentUpon>ToUnitResultTests.cs</DependentUpon>
30+
</Compile>
31+
<Compile Update="MaybeTests\Extensions\ToUnitResultTests.Task.Left.cs">
32+
<DependentUpon>ToUnitResultTests.Task.cs</DependentUpon>
33+
</Compile>
34+
<Compile Update="MaybeTests\Extensions\ToUnitResultTests.ValueTask.cs">
35+
<DependentUpon>ToUnitResultTests.cs</DependentUpon>
36+
</Compile>
37+
<Compile Update="MaybeTests\Extensions\ToUnitResultTests.ValueTask.Left.cs">
38+
<DependentUpon>ToUnitResultTests.ValueTask.cs</DependentUpon>
39+
</Compile>
2840
<Compile Update="ResultTests\Extensions\MapTests.Task.cs">
2941
<DependentUpon>MapTests.cs</DependentUpon>
3042
</Compile>
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
using System.Threading.Tasks;
2+
using FluentAssertions;
3+
using Xunit;
4+
5+
namespace CSharpFunctionalExtensions.Tests.MaybeTests.Extensions
6+
{
7+
public class ToUnitResultTests_Task_Left : MaybeTestBase
8+
{
9+
[Fact]
10+
public async Task ToUnitResult_Task_Left_returns_failure_if_has_error_value()
11+
{
12+
var maybe = Maybe<E>.From(E.Value);
13+
14+
var result = await maybe.AsTask().ToUnitResult();
15+
16+
result.IsFailure.Should().BeTrue();
17+
}
18+
19+
[Fact]
20+
public async Task ToUnitResult_Task_Left_returns_success_if_has_no_error_value()
21+
{
22+
Maybe<E> maybe = null;
23+
24+
var result = await maybe.AsTask().ToUnitResult();
25+
26+
result.IsSuccess.Should().BeTrue();
27+
}
28+
29+
[Fact]
30+
public async Task ToUnitResult_Task_Left_returns_failure_if_has_no_value()
31+
{
32+
Maybe<T> maybe = null;
33+
34+
var result = await maybe.AsTask().ToUnitResult("Error");
35+
36+
result.IsSuccess.Should().BeFalse();
37+
result.Error.Should().Be("Error");
38+
}
39+
40+
[Fact]
41+
public async Task ToUnitResult_Task_Left_returns_success_if_has_value()
42+
{
43+
var maybe = Maybe<T>.From(T.Value);
44+
45+
var result = await maybe.AsTask().ToUnitResult("Error");
46+
47+
result.IsSuccess.Should().BeTrue();
48+
}
49+
50+
[Fact]
51+
public async Task ToUnitResult_Task_Left_returns_custom_failure_if_has_no_value()
52+
{
53+
Maybe<T> maybe = null;
54+
55+
var result = await maybe.AsTask().ToUnitResult(E.Value);
56+
57+
result.IsSuccess.Should().BeFalse();
58+
result.Error.Should().Be(E.Value);
59+
}
60+
61+
[Fact]
62+
public async Task ToUnitResult_Task_Left_custom_failure_returns_success_if_has_value()
63+
{
64+
var maybe = Maybe<T>.From(T.Value);
65+
66+
var result = await maybe.AsTask().ToUnitResult(E.Value);
67+
68+
result.IsSuccess.Should().BeTrue();
69+
}
70+
}
71+
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
using System.Threading.Tasks;
2+
using FluentAssertions;
3+
using Xunit;
4+
5+
namespace CSharpFunctionalExtensions.Tests.MaybeTests.Extensions
6+
{
7+
public class ToUnitResultTests_Task : MaybeTestBase
8+
{
9+
[Fact]
10+
public async Task ToUnitResult_Task_returns_failure_if_has_error_value()
11+
{
12+
var maybe = Maybe<E>.From(E.Value);
13+
14+
var result = await maybe.AsTask().ToUnitResult();
15+
16+
result.IsFailure.Should().BeTrue();
17+
}
18+
19+
[Fact]
20+
public async Task ToUnitResult_Task_returns_success_if_has_no_error_value()
21+
{
22+
Maybe<E> maybe = null;
23+
24+
var result = await maybe.AsTask().ToUnitResult();
25+
26+
result.IsSuccess.Should().BeTrue();
27+
}
28+
29+
[Fact]
30+
public async Task ToUnitResult_Task_returns_failure_if_has_no_value()
31+
{
32+
Maybe<T> maybe = null;
33+
34+
var result = await maybe.AsTask().ToUnitResult("Error");
35+
36+
result.IsSuccess.Should().BeFalse();
37+
result.Error.Should().Be("Error");
38+
}
39+
40+
[Fact]
41+
public async Task ToUnitResult_Task_returns_success_if_has_value()
42+
{
43+
var maybe = Maybe<T>.From(T.Value);
44+
45+
var result = await maybe.AsTask().ToUnitResult("Error".AsTask());
46+
47+
result.IsSuccess.Should().BeTrue();
48+
}
49+
50+
[Fact]
51+
public async Task ToUnitResult_Task_returns_custom_failure_if_has_no_value()
52+
{
53+
Maybe<T> maybe = null;
54+
55+
var result = await maybe.AsTask().ToUnitResult(E.Value);
56+
57+
result.IsSuccess.Should().BeFalse();
58+
result.Error.Should().Be(E.Value);
59+
}
60+
61+
[Fact]
62+
public async Task ToUnitResult_Task_custom_failure_returns_success_if_has_value()
63+
{
64+
var maybe = Maybe<T>.From(T.Value);
65+
66+
var result = await maybe.AsTask().ToUnitResult(E.Value.AsTask());
67+
68+
result.IsSuccess.Should().BeTrue();
69+
}
70+
}
71+
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
using System.Threading.Tasks;
2+
using CSharpFunctionalExtensions.ValueTasks;
3+
using FluentAssertions;
4+
using Xunit;
5+
6+
namespace CSharpFunctionalExtensions.Tests.MaybeTests.Extensions
7+
{
8+
public class ToUnitResultTests_ValueTask_Left : MaybeTestBase
9+
{
10+
[Fact]
11+
public async Task ToUnitResult_ValueTask_Left_returns_failure_if_has_error_value()
12+
{
13+
var maybe = Maybe<E>.From(E.Value);
14+
15+
var result = await maybe.AsValueTask().ToUnitResult();
16+
17+
result.IsFailure.Should().BeTrue();
18+
}
19+
20+
[Fact]
21+
public async Task ToUnitResult_ValueTask_Left_returns_success_if_has_no_error_value()
22+
{
23+
Maybe<E> maybe = null;
24+
25+
var result = await maybe.AsValueTask().ToUnitResult();
26+
27+
result.IsSuccess.Should().BeTrue();
28+
}
29+
30+
[Fact]
31+
public async Task ToUnitResult_ValueTask_Left_returns_failure_if_has_no_value()
32+
{
33+
Maybe<T> maybe = null;
34+
35+
var result = await maybe.AsValueTask().ToUnitResult("Error");
36+
37+
result.IsSuccess.Should().BeFalse();
38+
result.Error.Should().Be("Error");
39+
}
40+
41+
[Fact]
42+
public async Task ToUnitResult_ValueTask_Left_returns_success_if_has_value()
43+
{
44+
var maybe = Maybe<T>.From(T.Value);
45+
46+
var result = await maybe.AsValueTask().ToUnitResult("Error");
47+
48+
result.IsSuccess.Should().BeTrue();
49+
}
50+
51+
[Fact]
52+
public async Task ToUnitResult_ValueTask_Left_returns_custom_failure_if_has_no_value()
53+
{
54+
Maybe<T> maybe = null;
55+
56+
var result = await maybe.AsValueTask().ToUnitResult(E.Value);
57+
58+
result.IsSuccess.Should().BeFalse();
59+
result.Error.Should().Be(E.Value);
60+
}
61+
62+
[Fact]
63+
public async Task ToUnitResult_ValueTask_Left_custom_failure_returns_success_if_has_value()
64+
{
65+
var maybe = Maybe<T>.From(T.Value);
66+
67+
var result = await maybe.AsValueTask().ToUnitResult(E.Value);
68+
69+
result.IsSuccess.Should().BeTrue();
70+
}
71+
}
72+
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
using System.Threading.Tasks;
2+
using CSharpFunctionalExtensions.ValueTasks;
3+
using FluentAssertions;
4+
using Xunit;
5+
6+
namespace CSharpFunctionalExtensions.Tests.MaybeTests.Extensions
7+
{
8+
public class ToUnitResultTests_ValueTask : MaybeTestBase
9+
{
10+
[Fact]
11+
public async Task ToUnitResult_ValueTask_returns_failure_if_has_error_value()
12+
{
13+
var maybe = Maybe<E>.From(E.Value);
14+
15+
var result = await maybe.AsValueTask().ToUnitResult();
16+
17+
result.IsFailure.Should().BeTrue();
18+
}
19+
20+
[Fact]
21+
public async Task ToUnitResult_ValueTask_returns_success_if_has_no_error_value()
22+
{
23+
Maybe<E> maybe = null;
24+
25+
var result = await maybe.AsValueTask().ToUnitResult();
26+
27+
result.IsSuccess.Should().BeTrue();
28+
}
29+
30+
[Fact]
31+
public async Task ToUnitResult_ValueTask_returns_failure_if_has_no_value()
32+
{
33+
Maybe<T> maybe = null;
34+
35+
var result = await maybe.AsValueTask().ToUnitResult("Error");
36+
37+
result.IsSuccess.Should().BeFalse();
38+
result.Error.Should().Be("Error");
39+
}
40+
41+
[Fact]
42+
public async Task ToUnitResult_ValueTask_returns_success_if_has_value()
43+
{
44+
var maybe = Maybe<T>.From(T.Value);
45+
46+
var result = await maybe.AsValueTask().ToUnitResult("Error".AsValueTask());
47+
48+
result.IsSuccess.Should().BeTrue();
49+
}
50+
51+
[Fact]
52+
public async Task ToUnitResult_ValueTask_returns_custom_failure_if_has_no_value()
53+
{
54+
Maybe<T> maybe = null;
55+
56+
var result = await maybe.AsValueTask().ToUnitResult(E.Value);
57+
58+
result.IsSuccess.Should().BeFalse();
59+
result.Error.Should().Be(E.Value);
60+
}
61+
62+
[Fact]
63+
public async Task ToUnitResult_ValueTask_custom_failure_returns_success_if_has_value()
64+
{
65+
var maybe = Maybe<T>.From(T.Value);
66+
67+
var result = await maybe.AsValueTask().ToUnitResult(E.Value.AsValueTask());
68+
69+
result.IsSuccess.Should().BeTrue();
70+
}
71+
}
72+
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
using System;
2+
using FluentAssertions;
3+
using Xunit;
4+
5+
namespace CSharpFunctionalExtensions.Tests.MaybeTests.Extensions
6+
{
7+
public class ToUnitResultTests : MaybeTestBase
8+
{
9+
[Fact]
10+
public void ToUnitResult_returns_failure_if_has_error_value()
11+
{
12+
var maybe = Maybe<E>.From(E.Value);
13+
14+
var result = maybe.ToUnitResult();
15+
16+
result.IsFailure.Should().BeTrue();
17+
}
18+
19+
[Fact]
20+
public void ToUnitResult_returns_success_if_has_no_error_value()
21+
{
22+
Maybe<E> maybe = null;
23+
24+
var result = maybe.ToUnitResult();
25+
26+
result.IsSuccess.Should().BeTrue();
27+
}
28+
29+
[Fact]
30+
public void ToUnitResult_returns_failure_if_has_no_value()
31+
{
32+
Maybe<T> maybe = null;
33+
34+
var result = maybe.ToUnitResult("Error");
35+
36+
result.IsSuccess.Should().BeFalse();
37+
result.Error.Should().Be("Error");
38+
}
39+
40+
[Fact]
41+
public void ToUnitResult_returns_success_if_has_value()
42+
{
43+
var maybe = Maybe<T>.From(T.Value);
44+
45+
var result = maybe.ToUnitResult("Error");
46+
47+
result.IsSuccess.Should().BeTrue();
48+
}
49+
50+
[Fact]
51+
public void ToUnitResult_returns_custom_failure_if_has_no_value()
52+
{
53+
Maybe<T> maybe = null;
54+
55+
var result = maybe.ToUnitResult(E.Value);
56+
57+
result.IsSuccess.Should().BeFalse();
58+
result.Error.Should().Be(E.Value);
59+
}
60+
61+
[Fact]
62+
public void ToUnitResult_custom_failure_returns_success_if_has_value()
63+
{
64+
var maybe = Maybe<T>.From(T.Value);
65+
66+
var result = maybe.ToUnitResult(E.Value);
67+
68+
result.IsSuccess.Should().BeTrue();
69+
}
70+
}
71+
}

CSharpFunctionalExtensions/CSharpFunctionalExtensions.csproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,12 @@
297297
</ItemGroup>
298298

299299
<ItemGroup>
300+
<Compile Update="Maybe\Extensions\ToUnitResultUnit.Task.cs">
301+
<DependentUpon>ToUnitResult.cs</DependentUpon>
302+
</Compile>
303+
<Compile Update="Maybe\Extensions\ToUnitResultUnit.ValueTask.cs">
304+
<DependentUpon>ToUnitResult.cs</DependentUpon>
305+
</Compile>
300306
<Compile Update="Result\Methods\Extensions\Bind.Task.Left.cs">
301307
<DependentUpon>Bind.Task.cs</DependentUpon>
302308
</Compile>

0 commit comments

Comments
 (0)