@@ -547,6 +547,70 @@ let sequenceAsyncResultATests =
547547 }
548548 ]
549549
550+ let traverseVOptionMTests =
551+ testList " List.traverseVOptionM Tests" [
552+ let tryTweetVOption x =
553+ match x with
554+ | x when String.IsNullOrEmpty x -> ValueNone
555+ | _ -> ValueSome x
556+
557+ testCase " traverseVOption with a list of valid data"
558+ <| fun _ ->
559+ let tweets = [
560+ " Hi"
561+ " Hello"
562+ " Hola"
563+ ]
564+
565+ let expected = ValueSome tweets
566+ let actual = List.traverseVOptionM tryTweetVOption tweets
567+
568+ Expect.equal actual expected " Should have a list of valid tweets"
569+
570+ testCase " traverseVOption with few invalid data"
571+ <| fun _ ->
572+ let tweets = [
573+ " Hi"
574+ " Hello"
575+ String.Empty
576+ ]
577+
578+ let actual = List.traverseVOptionM tryTweetVOption tweets
579+ Expect.equal actual ValueNone " traverse the list and return value none"
580+ ]
581+
582+ let sequenceVOptionMTests =
583+ testList " List.sequenceVOptionM Tests" [
584+ let tryTweetOption x =
585+ match x with
586+ | x when String.IsNullOrEmpty x -> ValueNone
587+ | _ -> ValueSome x
588+
589+ testCase " traverseVOption with a list of valid data"
590+ <| fun _ ->
591+ let tweets = [
592+ " Hi"
593+ " Hello"
594+ " Hola"
595+ ]
596+
597+ let expected = ValueSome tweets
598+ let actual = List.sequenceVOptionM ( List.map tryTweetOption tweets)
599+
600+ Expect.equal actual expected " Should have a list of valid tweets"
601+
602+ testCase " sequenceVOptionM with few invalid data"
603+ <| fun _ ->
604+ let tweets = [
605+ String.Empty
606+ " Hello"
607+ String.Empty
608+ ]
609+
610+ let actual = List.sequenceVOptionM ( List.map tryTweetOption tweets)
611+ Expect.equal actual ValueNone " traverse the list and return value none"
612+ ]
613+
550614let allTests =
551615 testList " List Tests" [
552616 traverseResultMTests
@@ -563,4 +627,6 @@ let allTests =
563627 sequenceAsyncResultMTests
564628 sequenceAsyncOptionMTests
565629 sequenceAsyncResultATests
630+ traverseVOptionMTests
631+ sequenceVOptionMTests
566632 ]
0 commit comments