@@ -7,7 +7,8 @@ open Expecto
77
88[<Tests>]
99let tests =
10- testList " Sequence tests"
10+ testList
11+ " Sequence tests"
1112 [ testAsync " should return values in same order as given tasks" {
1213 let dummyAsync : int -> AsyncResult < int , string > = Ok >> AsyncResult.fromResult
1314
@@ -17,6 +18,7 @@ let tests =
1718 [ ( dummyAsync 1 )
1819 ( dummyAsync 2 )
1920 ( dummyAsync 3 ) ]
21+
2022 let! actual = AsyncResult.sequence input
2123 Expect.equal actual expected " should equal"
2224 }
@@ -42,24 +44,50 @@ let tests =
4244
4345[<Tests>]
4446let taskTests =
45- testList " Task tests"
46- [ testAsync " should convert from Task<string> to AsyncResult" {
47- let input = Async.singleton " Hello" |> Async.StartAsTask
47+ testList
48+ " Task tests"
49+ [ testAsync " should convert from Task<string> to AsyncResult" {
50+ let input =
51+ Async.singleton " Hello" |> Async.StartAsTask
52+
53+ let expectedValue = Ok " Hello"
54+
55+ let! actual = AsyncResult.fromTask input
56+
57+ Expect.equal actual expectedValue " Should be equal"
58+ }
59+ testAsync " fromTask failing Task should result in Error" {
60+
61+ let input =
62+ Async.singleton " Hello"
63+ |> Async.map ( fun _ -> failwith " boom" )
64+ |> Async.StartAsTask
65+
66+ let expectedValue =
67+ Error " One or more errors occurred. (boom)"
4868
49- let expectedValue = Ok " Hello "
69+ let! actual = AsyncResult.fromTask input
5070
51- let! actual = AsyncResult.fromTask input
71+ Expect.equal actual expectedValue " Should be equal"
72+ }
73+ testAsync " should convert from Task to AsyncResult" {
74+ let source = new CancellationTokenSource()
75+ let input : Task = Task.Delay( 0 , source.Token)
5276
53- Expect.equal actual expectedValue " Should be equal"
54- }
55- ; testAsync " should convert from TeeTask to AsyncResult" {
56- let source = new CancellationTokenSource()
57- let input = Task.Delay( 0 , source.Token)
58-
59- let expectedValue = Ok " Hello"
77+ let expectedValue = Ok()
6078
61- let! actual = AsyncResult.fromTask input
79+ let! actual = AsyncResult.fromUnitTask input
6280
63- Expect.equal actual expectedValue " Should be equal"
64- }]
81+ Expect.equal actual expectedValue " Should be equal"
82+ }
83+ testAsync " failing Task should result in Error" {
84+ let source = new CancellationTokenSource()
85+ let input : Task = Task.Delay( 1000 , source.Token)
86+ let expectedValue = Error " A task was canceled."
6587
88+ source.Cancel()
89+
90+ let! actual = AsyncResult.fromUnitTask input
91+
92+ Expect.equal actual expectedValue " Should be equal"
93+ } ]
0 commit comments