Skip to content

Commit

Permalink
Add await support for OptionAsync
Browse files Browse the repository at this point in the history
  • Loading branch information
TomOpenSource committed Oct 1, 2023
1 parent bce0a16 commit 3283992
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,14 @@ public OptionAsync(IEnumerable<A?> option)
: null;
}

/// <summary>
/// Custom awaiter that turns an OptionAsync into an Option
/// </summary>
public TaskAwaiter<Option<A>> GetAwaiter()
=> Data.Map(d =>
d.IsSome ? Option<A>.Some(d.Value!) : Option<A>.None)
.GetAwaiter();

/// <summary>
/// Implicit conversion operator from A to Option<A>
/// </summary>
Expand Down
7 changes: 7 additions & 0 deletions LanguageExt.Tests/OptionAsyncTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,13 @@ public async Task MOptionAsync_BiFoldAsync_OverloadAsyncAsync_IsNone_DelegateNon
Assert.True(result);
}

[Fact]
public async Task AwaitSomeCaseTest()
=> Assert.Equal(Some(10), await OptionAsync<int>.Some(10));

[Fact]
public async Task AwaitNoneCaseTest()
=> Assert.Equal(None, await OptionAsync<int>.None);
// Not valuable any more
//[Fact]
//public async void SequenceFlip()
Expand Down

0 comments on commit 3283992

Please sign in to comment.