summaryrefslogtreecommitdiff
path: root/tests/test_runner/Utils.ml
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_runner/Utils.ml')
-rw-r--r--tests/test_runner/Utils.ml12
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/test_runner/Utils.ml b/tests/test_runner/Utils.ml
new file mode 100644
index 00000000..79be617c
--- /dev/null
+++ b/tests/test_runner/Utils.ml
@@ -0,0 +1,12 @@
+(*** Convenience functions *)
+
+let map_while (f : 'a -> 'b option) (input : 'a list) : 'b list =
+ let _, result =
+ List.fold_left
+ (fun (continue, out) a ->
+ if continue then
+ match f a with None -> (false, out) | Some b -> (true, b :: out)
+ else (continue, out))
+ (true, []) input
+ in
+ List.rev result