summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/value_checker.ml6
-rw-r--r--src/value_checker.mli2
-rw-r--r--test/value_checker_test.ml9
3 files changed, 17 insertions, 0 deletions
diff --git a/src/value_checker.ml b/src/value_checker.ml
index ed7c5d1..245b769 100644
--- a/src/value_checker.ml
+++ b/src/value_checker.ml
@@ -16,3 +16,9 @@ let validate_value validators value_constraint value =
| Unix.WEXITED 0 -> true
| _ -> false
with Not_found -> raise (Bad_validator t)
+
+let rec validate_any validators constraints value =
+ match constraints with
+ | [] -> false
+ | c :: cs -> if validate_value validators c value then true
+ else validate_any validators cs value
diff --git a/src/value_checker.mli b/src/value_checker.mli
index 96d8f3c..115ec9f 100644
--- a/src/value_checker.mli
+++ b/src/value_checker.mli
@@ -3,3 +3,5 @@ type value_constraint = Regex of string | External of string * string
exception Bad_validator of string
val validate_value : (string, string) Hashtbl.t -> value_constraint -> string -> bool
+
+val validate_any : (string, string) Hashtbl.t -> value_constraint list -> string -> bool
diff --git a/test/value_checker_test.ml b/test/value_checker_test.ml
index f7161f2..a975d93 100644
--- a/test/value_checker_test.ml
+++ b/test/value_checker_test.ml
@@ -30,6 +30,13 @@ let test_check_external_bad_validator test_ctxt =
let v = "fgsfds" in
assert_raises (Bad_validator "invalid") (fun () -> validate_value validators c v)
+let test_validate_any_valid test_ctxt =
+ let cs = [Regex "\\d+"; Regex "[a-z]+"; External ("anything", "")] in
+ assert_equal (validate_any validators cs "AAAA") true
+
+let test_validate_any_invalid test_ctxt =
+ let cs = [Regex "\\d+"; Regex "[a-z]+"] in
+ assert_equal (validate_any validators cs "AAAA") false
let suite =
"VyConf value checker tests" >::: [
@@ -38,6 +45,8 @@ let suite =
"test_check_external_valid" >:: test_check_external_valid;
"test_check_external_invalid" >:: test_check_external_invalid;
"test_check_external_bad_validator" >:: test_check_external_bad_validator;
+ "test_validate_any_valid" >:: test_validate_any_valid;
+ "test_validate_any_invalid" >:: test_validate_any_invalid;
]
let () =