Skip to content

Commit b7fdd99

Browse files
committed
test cases for sequence and traverse
1 parent 779b073 commit b7fdd99

File tree

1 file changed

+57
-21
lines changed

1 file changed

+57
-21
lines changed

tests/FsToolkit.ErrorHandling.Tests/Option.fs

Lines changed: 57 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ let sequenceAsyncTests =
212212
]
213213

214214
let sequenceAsyncResultTests =
215-
ftestList "Option.sequenceAsyncResult Tests" [
215+
testList "Option.sequenceAsyncResult Tests" [
216216
testCaseAsync "sequenceAsyncResult returns the async Ok value if Some"
217217
<| async {
218218
let optAsyncOk =
@@ -251,9 +251,6 @@ let sequenceAsyncResultTests =
251251

252252
let valueNone = Expect.wantOk valueRes "Expect to get back OK"
253253
Expect.isNone valueNone "Expect to get back None"
254-
255-
// check things actually fail when fail
256-
Expect.isSome valueNone "This should fail"
257254
}
258255
]
259256

@@ -305,23 +302,60 @@ let traverseResultTests =
305302
|> Expect.hasOkValue (Some validLng)
306303
]
307304

308-
// to do
309-
// let traverseAsyncResultTests =
310-
// testList "Option.traverseAsyncResult Tests" [
311-
// testCaseAsync "traverseAsyncResult with valid latitute data"
312-
// <| async {
313-
// let tryCreateLatAsync = fun l -> async { return Latitude.TryCreate l }
314-
//
315-
// let! valueRes =
316-
// Some lat
317-
// |> Option.traverseAsyncResult tryCreateLatAsync
318-
//
319-
// let value = Expect.wantOk valueRes "Expect to get OK"
320-
// Expect.equal value (Some validLat) "Expect to get valid latitute"
321-
//
322-
// }
323-
//
324-
// ]
305+
let traverseAsyncResultTests =
306+
testList "Option.traverseAsyncResult Tests" [
307+
testCaseAsync "traverseAsyncResult with valid latitute data"
308+
<| async {
309+
let tryCreateLatAsync = fun l -> async { return Latitude.TryCreate l }
310+
311+
let! valueRes =
312+
Some lat
313+
|> Option.traverseAsyncResult tryCreateLatAsync
314+
315+
let value = Expect.wantOk valueRes "Expect to get OK"
316+
Expect.equal value (Some validLat) "Expect to get valid latitute"
317+
}
318+
319+
testCaseAsync "traverseAsyncResult id returns async Ok value if Some"
320+
<| async {
321+
let optAsyncOk =
322+
async { return Ok "foo" }
323+
|> Some
324+
325+
let! valueRes =
326+
optAsyncOk
327+
|> Option.traverseAsyncResult id
328+
329+
let value = Expect.wantOk valueRes "Expect to get back OK"
330+
Expect.equal value (Some "foo") "Expect to get back value"
331+
}
332+
333+
testCaseAsync "traverseAsyncResult id returns the async Error value if Some"
334+
<| async {
335+
let optAsyncOk =
336+
async { return Error "error" }
337+
|> Some
338+
339+
let! valueRes =
340+
optAsyncOk
341+
|> Option.traverseAsyncResult id
342+
343+
let errorValue = Expect.wantError valueRes "Expect to get back Error"
344+
Expect.equal errorValue "error" "Expect to get back the error value"
345+
}
346+
347+
testCaseAsync "traverseAsyncResult id returns None if None"
348+
<| async {
349+
let optAsyncNone = None
350+
351+
let! valueRes =
352+
optAsyncNone
353+
|> Option.traverseAsyncResult id
354+
355+
let valueNone = Expect.wantOk valueRes "Expect to get back OK"
356+
Expect.isNone valueNone "Expect to get back None"
357+
}
358+
]
325359

326360
let tryParseTests =
327361
testList "Option.tryParse" [
@@ -490,8 +524,10 @@ let optionOperatorsTests =
490524
let allTests =
491525
testList "Option Tests" [
492526
sequenceAsyncTests
527+
sequenceAsyncResultTests
493528
traverseAsyncTests
494529
traverseResultTests
530+
traverseAsyncResultTests
495531
tryParseTests
496532
tryGetValueTests
497533
ofResultTests

0 commit comments

Comments
 (0)