Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions tests/FSharp.Control.AsyncSeq.Tests/AsyncSeqTests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -1762,6 +1762,69 @@ let ``AsyncSeq.sortByDescending should work``() =
let actual = input |> AsyncSeq.sortByDescending fn
Assert.AreEqual(expected, actual)

// ----------------------------------------------------------------------------
// Tests for previously uncovered modules to improve coverage

[<Test>]
let ``AsyncSeqExtensions - async.For with AsyncSeq`` () =
let mutable result = []
let computation = async {
for item in asyncSeq { yield 1; yield 2; yield 3 } do
result <- item :: result
}
computation |> Async.RunSynchronously
Assert.AreEqual([3; 2; 1], result)

[<Test>]
let ``AsyncSeqExtensions - async.For with empty AsyncSeq`` () =
let mutable result = []
let computation = async {
for item in AsyncSeq.empty do
result <- item :: result
}
computation |> Async.RunSynchronously
Assert.AreEqual([], result)

[<Test>]
let ``AsyncSeqExtensions - async.For with exception in AsyncSeq`` () =
let mutable exceptionCaught = false
let computation = async {
try
for item in asyncSeq { yield 1; failwith "test error"; yield 2 } do
()
with
| ex when ex.Message = "test error" ->
exceptionCaught <- true
}
computation |> Async.RunSynchronously
Assert.IsTrue(exceptionCaught)

[<Test>]
let ``Seq.ofAsyncSeq should work`` () =
let asyncSeqData = asyncSeq {
yield 1
yield 2
yield 3
}
let seqResult = Seq.ofAsyncSeq asyncSeqData |> Seq.toList
Assert.AreEqual([1; 2; 3], seqResult)

[<Test>]
let ``Seq.ofAsyncSeq with empty AsyncSeq`` () =
let seqResult = Seq.ofAsyncSeq AsyncSeq.empty |> Seq.toList
Assert.AreEqual([], seqResult)

[<Test>]
let ``Seq.ofAsyncSeq with exception`` () =
let asyncSeqWithError = asyncSeq {
yield 1
failwith "test error"
yield 2
}
Assert.Throws<System.Exception>(fun () ->
Seq.ofAsyncSeq asyncSeqWithError |> Seq.toList |> ignore
) |> ignore

#if (NETSTANDARD2_1 || NETCOREAPP3_0)
[<Test>]
let ``AsyncSeq.ofAsyncEnum should roundtrip successfully``() =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
<None Include="AsyncSeqPerf.fsx" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.0" />
<ProjectReference Include="..\..\src\FSharp.Control.AsyncSeq\FSharp.Control.AsyncSeq.fsproj" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="NUnit" Version="3.9.0" />
Expand Down