Skip to content

Commit 9137f03

Browse files
committed
wip
1 parent 8273056 commit 9137f03

File tree

2 files changed

+45
-17
lines changed

2 files changed

+45
-17
lines changed

src/Insurello.AsyncExtra.Tests/AsyncExtraTests.fs

Lines changed: 44 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ open Expecto
77

88
[<Tests>]
99
let 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>]
4446
let 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+
} ]

src/Insurello.AsyncExtra/AsyncExtra.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ module AsyncResult =
3030
| Choice1Of2 response -> Ok response
3131
| Choice2Of2 exn -> Error exn.Message)
3232

33-
let fromTeeTask: System.Threading.Tasks.Task -> AsyncResult<unit, string> =
33+
let fromUnitTask: System.Threading.Tasks.Task -> AsyncResult<unit, string> =
3434
fun task ->
3535
task
3636
|> Async.AwaitTask

0 commit comments

Comments
 (0)