Skip to content

Commit bee1d58

Browse files
committed
Add some more tests
1 parent eba56b5 commit bee1d58

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

src/FSharp.Control.TaskSeq.Test/TaskSeq.Cast.Tests.fs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ let validateSequence ts =
2424

2525
module EmptySeq =
2626
[<Fact>]
27-
let ``Null source is invalid`` () = assertNullArg <| fun () -> TaskSeq.box null
27+
let ``Null source is invalid`` () =
28+
assertNullArg <| fun () -> TaskSeq.box null
29+
assertNullArg <| fun () -> TaskSeq.unbox null
30+
assertNullArg <| fun () -> TaskSeq.cast null
2831

2932
[<Theory; ClassData(typeof<TestEmptyVariants>)>]
3033
let ``TaskSeq-box empty`` variant = Gen.getEmptyVariant variant |> TaskSeq.box |> verifyEmpty

src/FSharp.Control.TaskSeq.Test/TaskSeq.Singleton.Tests.fs

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
module TaskSeq.Tests.Singleton
22

3-
open System.Threading.Tasks
43
open Xunit
54
open FsUnit.Xunit
65
open FsToolkit.ErrorHandling
76

87
open FSharp.Control
98

9+
//
10+
// TaskSeq.singleton
11+
//
12+
1013
module EmptySeq =
1114

1215
[<Theory; ClassData(typeof<TestEmptyVariants>)>]
@@ -18,13 +21,39 @@ module EmptySeq =
1821
|> TaskSeq.exactlyOne
1922
|> Task.map (should equal 10)
2023

24+
module SideEffects =
25+
[<Fact>]
26+
let ``TaskSeq-singleton with a mutable value`` () =
27+
let mutable x = 0
28+
let ts = TaskSeq.singleton x
29+
x <- x + 1
30+
31+
// mutable value is dereferenced when passed to a function
32+
ts |> TaskSeq.exactlyOne |> Task.map (should equal 0)
33+
34+
[<Fact>]
35+
let ``TaskSeq-singleton with a ref cell`` () =
36+
let x = ref 0
37+
let ts = TaskSeq.singleton x
38+
x.Value <- x.Value + 1
39+
40+
ts
41+
|> TaskSeq.exactlyOne
42+
|> Task.map (fun x -> x.Value |> should equal 1)
43+
2144
module Other =
2245
[<Fact>]
2346
let ``TaskSeq-singleton creates a sequence of one`` () =
2447
TaskSeq.singleton 42
2548
|> TaskSeq.exactlyOne
2649
|> Task.map (should equal 42)
2750

51+
[<Fact>]
52+
let ``TaskSeq-singleton with null as value`` () =
53+
TaskSeq.singleton null
54+
|> TaskSeq.exactlyOne
55+
|> Task.map (should be Null)
56+
2857
[<Fact>]
2958
let ``TaskSeq-singleton can be yielded multiple times`` () =
3059
let singleton = TaskSeq.singleton 42

0 commit comments

Comments
 (0)