Skip to content

Commit 917b669

Browse files
committed
Add (failing) traversal tests
1 parent 73617c5 commit 917b669

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

tests/FSharpPlus.Tests/Traversals.fs

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,60 @@ module Traversable =
252252
let l = s' |> Async.RunSynchronously |> Seq.take 10 |> Seq.toList
253253
CollectionAssert.AreEqual ([0;1;2;3;4;5;6;7;8;9], l)
254254

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+
255309
[<Test>]
256310
let traverseTask () =
257311
#if TEST_TRACE

0 commit comments

Comments
 (0)