@@ -28,6 +28,15 @@ let EQ (a:AsyncSeq<'a>) (b:AsyncSeq<'a>) =
2828 printfn " actual=%A " act
2929 false
3030
31+ type Assert with
32+ /// Determines equality of two async sequences by convering them to lists, ignoring side-effects.
33+ static member AreEqual ( expected : AsyncSeq < 'a >, actual : AsyncSeq < 'a >) =
34+ let exp = expected |> AsyncSeq.toList
35+ let act = actual |> AsyncSeq.toList
36+ let message = sprintf " expected=%A actual=%A " exp act
37+ Assert.True(( exp = act), message)
38+
39+
3140
3241[<Test>]
3342let ``AsyncSeq.toArray`` () =
@@ -1066,4 +1075,45 @@ let ``AsyncSeq.take should work``() =
10661075 }
10671076 let ss = s |> AsyncSeq.take 1
10681077 let ls = ss |> AsyncSeq.toList
1069- ()
1078+ ()
1079+
1080+
1081+ [<Test>]
1082+ let ``AsyncSeqSource.create should create empty sequence`` () =
1083+ let src = AsyncSeqSrc.create ()
1084+ let s = src |> AsyncSeqSrc.toAsyncSeq
1085+ src |> AsyncSeqSrc.close
1086+ let expected = AsyncSeq.empty
1087+ Assert.True( EQ expected s)
1088+
1089+
1090+ [<Test>]
1091+ let ``AsyncSeqSource.put should yield`` () =
1092+ let item = 1
1093+ let src = AsyncSeqSrc.create ()
1094+ let actual = src |> AsyncSeqSrc.toAsyncSeq
1095+ src |> AsyncSeqSrc.put item
1096+ src |> AsyncSeqSrc.close
1097+ let expected = AsyncSeq.singleton item
1098+ Assert.AreEqual ( expected, actual)
1099+
1100+ [<Test>]
1101+ let ``AsyncSeqSource.put should yield after async sequence is created`` () =
1102+ let item1 = 1
1103+ let item2 = 2
1104+ let src = AsyncSeqSrc.create ()
1105+ src |> AsyncSeqSrc.put item1
1106+ let actual = src |> AsyncSeqSrc.toAsyncSeq
1107+ src |> AsyncSeqSrc.put item2
1108+ src |> AsyncSeqSrc.close
1109+ let expected = AsyncSeq.ofSeq [ item2]
1110+ Assert.AreEqual ( expected, actual)
1111+
1112+
1113+ [<Test>]
1114+ let ``AsyncSeq.groupBy should work`` () =
1115+ let ls = List.init 4 id
1116+ let p i = i % 2
1117+ let expected = ls |> Seq.groupBy p |> Seq.map ( snd >> Seq.toList) |> Seq.toList |> AsyncSeq.ofSeq
1118+ let actual = ls |> AsyncSeq.ofSeq |> AsyncSeq.groupBy p |> AsyncSeq.mapAsyncParallel ( snd >> AsyncSeq.toListAsync)
1119+ Assert.True( EQ expected actual)
0 commit comments