File tree Expand file tree Collapse file tree 2 files changed +34
-2
lines changed
src/FSharp.Control.TaskSeq.Test Expand file tree Collapse file tree 2 files changed +34
-2
lines changed Original file line number Diff line number Diff line change @@ -24,7 +24,10 @@ let validateSequence ts =
2424
2525module 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
Original file line number Diff line number Diff line change 11module TaskSeq.Tests.Singleton
22
3- open System.Threading .Tasks
43open Xunit
54open FsUnit.Xunit
65open FsToolkit.ErrorHandling
76
87open FSharp.Control
98
9+ //
10+ // TaskSeq.singleton
11+ //
12+
1013module 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+
2144module 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
You can’t perform that action at this time.
0 commit comments