Skip to content

Commit fd4c737

Browse files
committed
more tests for ofObservableBuffered
1 parent e1f1630 commit fd4c737

1 file changed

Lines changed: 28 additions & 13 deletions

File tree

tests/FSharp.Control.AsyncSeq.Tests/AsyncSeqTests.fs

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -367,35 +367,50 @@ let ``AsyncSeq.while should allow do at end``() =
367367
Assert.True(true)
368368

369369
let observe vs err =
370+
let discarded = ref false
370371
{ new IObservable<'U> with
371372
member x.Subscribe(observer) =
372373
for v in vs do
373374
observer.OnNext v
374375
if err then
375376
observer.OnError (Failure "fail")
376377
observer.OnCompleted()
377-
{ new IDisposable with member __.Dispose() = () } }
378+
{ new IDisposable with member __.Dispose() = discarded := true } },
379+
(fun _ -> discarded.Value)
378380

379381
[<Test>]
380-
let ``AsyncSeq.ofObservable should work (empty)``() =
381-
Assert.True(observe [] false |> AsyncSeq.ofObservableBuffered |> AsyncSeq.toList |> Async.RunSynchronously = [])
382+
let ``AsyncSeq.ofObservableBuffered should work (empty)``() =
383+
let src, discarded = observe [] false
384+
Assert.True(src |> AsyncSeq.ofObservableBuffered |> AsyncSeq.toList |> Async.RunSynchronously = [])
385+
Assert.True(discarded())
382386

383387
[<Test>]
384-
let ``AsyncSeq.ofObservable should work (sinngleton)``() =
385-
Assert.True(observe [1] false |> AsyncSeq.ofObservableBuffered |> AsyncSeq.toList |> Async.RunSynchronously = [1])
388+
let ``AsyncSeq.ofObservableBuffered should work (sinngleton)``() =
389+
let src, discarded = observe [1] false
390+
Assert.True(src |> AsyncSeq.ofObservableBuffered |> AsyncSeq.toList |> Async.RunSynchronously = [1])
391+
Assert.True(discarded())
386392

387393
[<Test>]
388-
let ``AsyncSeq.ofObservable should work (ten)``() =
389-
Assert.True(observe [1..10] false |> AsyncSeq.ofObservableBuffered |> AsyncSeq.toList |> Async.RunSynchronously = [1..10])
394+
let ``AsyncSeq.ofObservableBuffered should work (ten)``() =
395+
let src, discarded = observe [1..10] false
396+
Assert.True(src |> AsyncSeq.ofObservableBuffered |> AsyncSeq.toList |> Async.RunSynchronously = [1..10])
397+
Assert.True(discarded())
390398

391399
[<Test>]
392-
let ``AsyncSeq.ofObservable should work (empty, fail)``() =
393-
Assert.True(try (observe [] true |> AsyncSeq.ofObservableBuffered |> AsyncSeq.toList |> Async.RunSynchronously |> ignore); false with _ -> true)
400+
let ``AsyncSeq.ofObservableBuffered should work (empty, fail)``() =
401+
let src, discarded = observe [] true
402+
Assert.True(try (src |> AsyncSeq.ofObservableBuffered |> AsyncSeq.toList |> Async.RunSynchronously |> ignore); false with _ -> true)
403+
Assert.True(discarded())
394404

395405
[<Test>]
396-
let ``AsyncSeq.ofObservable should work (one, fail)``() =
397-
Assert.True(try (observe [1] true |> AsyncSeq.ofObservableBuffered |> AsyncSeq.toList |> Async.RunSynchronously |> ignore); false with _ -> true)
406+
let ``AsyncSeq.ofObservableBuffered should work (one, fail)``() =
407+
let src, discarded = observe [1] true
408+
Assert.True(try (src |> AsyncSeq.ofObservableBuffered |> AsyncSeq.toList |> Async.RunSynchronously |> ignore); false with _ -> true)
409+
Assert.True(discarded())
398410

399411
[<Test>]
400-
let ``AsyncSeq.ofObservable should work (one, take)``() =
401-
Assert.True(observe [1] false |> AsyncSeq.ofObservableBuffered |> AsyncSeq.take 1 |> AsyncSeq.toList |> Async.RunSynchronously = [1])
412+
let ``AsyncSeq.ofObservableBuffered should work (one, take)``() =
413+
let src, discarded = observe [1] true
414+
Assert.True(src |> AsyncSeq.ofObservableBuffered |> AsyncSeq.take 1 |> AsyncSeq.toList |> Async.RunSynchronously = [1])
415+
// Take doesn't correctly run finally clauses, see https://github.com/fsprojects/FSharp.Control.AsyncSeq/issues/15
416+
//Assert.True(discarded())

0 commit comments

Comments
 (0)