@@ -252,6 +252,60 @@ module Traversable =
252
252
let l = s' |> Async.RunSynchronously |> Seq.take 10 |> Seq.toList
253
253
CollectionAssert.AreEqual ([ 0 ; 1 ; 2 ; 3 ; 4 ; 5 ; 6 ; 7 ; 8 ; 9 ], l)
254
254
255
+ [<Test>]
256
+ let traverseInfiniteAsyncNonEmptySequences =
257
+ let s = NonEmptySeq.initInfinite async.Return
258
+ let s ' = sequence s
259
+ let l = s' |> Async.RunSynchronously |> Seq.take 10 |> Seq.toList
260
+ CollectionAssert.AreEqual ([ 0 ; 1 ; 2 ; 3 ; 4 ; 5 ; 6 ; 7 ; 8 ; 9 ], l)
261
+
262
+ [<Test>]
263
+ let traverseNonEmptySeqs () =
264
+ #if TEST_ TRACE
265
+ Traces.reset()
266
+ #endif
267
+
268
+ let r1 = traverse async.Return ( NonEmptySeq.unsafeOfSeq ( Seq.initInfinite id))
269
+ CollectionAssert.AreEqual ([ 0 ; 1 ], r1 |> map ( NonEmptySeq.take 2 ) |> Async.RunSynchronously)
270
+ Assert.IsInstanceOf< Option< Async< int NonEmptySeq>>> ( Some r1)
271
+ #if TEST_ TRACE
272
+ CollectionAssert.AreEqual ([ " Traverse ^a" ; " Traverse NonEmptySeq: 'T NonEmptySeq, 'T -> Async<'U>" ], Traces.get())
273
+ #endif
274
+
275
+ #if TEST_ TRACE
276
+ Traces.reset()
277
+ #endif
278
+
279
+ let r2 = NonEmptySeq<_>. Traverse ( NonEmptySeq.unsafeOfSeq ( Seq.initInfinite id), async.Return)
280
+ CollectionAssert.AreEqual ([ 0 ; 1 ], r2 |> map ( NonEmptySeq.take 2 ) |> Async.RunSynchronously)
281
+ Assert.IsInstanceOf< Option< Async< int NonEmptySeq>>> ( Some r2)
282
+ #if TEST_ TRACE
283
+ CollectionAssert.AreEqual ([ " Traverse NonEmptySeq: 'T NonEmptySeq, 'T -> Async<'U>" ], Traces.get())
284
+ #endif
285
+
286
+ #if TEST_ TRACE
287
+ Traces.reset()
288
+ #endif
289
+
290
+ let r3 = traverse ( fun x -> if x <> 10 then Some x else None) ( NonEmptySeq.initInfinite id)
291
+ Assert.AreEqual( None, r3)
292
+ Assert.IsInstanceOf< Option< NonEmptySeq< int> option>> ( Some r3)
293
+ #if TEST_ TRACE
294
+ CollectionAssert.AreEqual ([ " Traverse ^a" ; " Traverse NonEmptySeq: NonEmptySeq, 'T -> Functor<'U>" ], Traces.get())
295
+ #endif
296
+
297
+ #if TEST_ TRACE
298
+ Traces.reset()
299
+ #endif
300
+
301
+ let r4 = NonEmptySeq<_>. Traverse ( NonEmptySeq.initInfinite id, fun x -> if x <> 10 then Some x else None)
302
+ Assert.AreEqual( None, r4)
303
+ Assert.IsInstanceOf< Option< NonEmptySeq< int> option>> ( Some r4)
304
+ #if TEST_ TRACE
305
+ CollectionAssert.AreEqual ([ " Traverse NonEmptySeq: NonEmptySeq, 'T -> Functor<'U>" ], Traces.get())
306
+ #endif
307
+
308
+
255
309
[<Test>]
256
310
let traverseTask () =
257
311
#if TEST_ TRACE
0 commit comments