diff options
-rw-r--r-- | src/value_checker.ml | 6 | ||||
-rw-r--r-- | src/value_checker.mli | 2 | ||||
-rw-r--r-- | test/value_checker_test.ml | 9 |
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 () = |