@@ -2611,3 +2611,35 @@ let ``AsyncSeqOp.FoldAsync with exception in folder should propagate`` () =
26112611 () // Expected
26122612 } |> Async.RunSynchronously
26132613
2614+ [<Test>]
2615+ let ``AsyncSeq.chunkBy empty sequence returns empty`` () =
2616+ let result = AsyncSeq.chunkBy id AsyncSeq.empty< int> |> AsyncSeq.toListSynchronously
2617+ Assert.AreEqual([], result)
2618+
2619+ [<Test>]
2620+ let ``AsyncSeq.chunkBy single element`` () =
2621+ let source = asyncSeq { yield 42 }
2622+ let result = AsyncSeq.chunkBy id source |> AsyncSeq.toListSynchronously
2623+ Assert.AreEqual([( 42 , [ 42 ])], result)
2624+
2625+ [<Test>]
2626+ let ``AsyncSeq.chunkBy groups consecutive equal keys`` () =
2627+ let source = asyncSeq { yield 1 ; yield 1 ; yield 2 ; yield 2 ; yield 1 }
2628+ let result = AsyncSeq.chunkBy id source |> AsyncSeq.toListSynchronously
2629+ Assert.AreEqual([( 1 , [ 1 ; 1 ]); ( 2 , [ 2 ; 2 ]); ( 1 , [ 1 ])], result)
2630+
2631+ [<Test>]
2632+ let ``AsyncSeq.chunkBy with projection`` () =
2633+ let source = asyncSeq { yield 1 ; yield 3 ; yield 2 ; yield 4 ; yield 5 }
2634+ let result = AsyncSeq.chunkBy ( fun x -> x % 2 = 0 ) source |> AsyncSeq.toListSynchronously
2635+ Assert.AreEqual([( false , [ 1 ; 3 ]); ( true , [ 2 ; 4 ]); ( false , [ 5 ])], result)
2636+
2637+ [<Test>]
2638+ let ``AsyncSeq.chunkByAsync groups consecutive equal keys`` () =
2639+ async {
2640+ let source = asyncSeq { yield 1 ; yield 1 ; yield 2 ; yield 2 }
2641+ let result = AsyncSeq.chunkByAsync ( fun x -> async { return x }) source |> AsyncSeq.toListSynchronously
2642+ Assert.AreEqual([( 1 , [ 1 ; 1 ]); ( 2 , [ 2 ; 2 ])], result)
2643+ } |> Async.RunSynchronously
2644+
2645+
0 commit comments