X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=ocaml%2Fsimple_test.ml;h=3ec4bb767f9f9a33829ba114a4c4462b80b2eaab;hb=f3bb4936d8b5aa478f16bb0e9fefc8b40a9af58d;hp=438b7b572f0a6ebc845a0a90514a2e3c19782664;hpb=f1873841a3271d332cb8429b46e7bc7e0bca2402;p=fireball-separation.git diff --git a/ocaml/simple_test.ml b/ocaml/simple_test.ml index 438b7b5..3ec4bb7 100644 --- a/ocaml/simple_test.ml +++ b/ocaml/simple_test.ml @@ -1,6 +1,10 @@ open Simple;; open Util;; +let with_const = + List.mem "--with-const" (Array.to_list Sys.argv) + ;; + let acaso l = let n = Random.int (List.length l) in List.nth l n @@ -24,13 +28,14 @@ let gen n vars = else let inerts, lams = if Random.int 2 = 0 then inerts, ("(" ^ acaso vars ^ ". " ^ acaso2 inerts lams ^ ")") :: lams else ("(" ^ acaso inerts ^ " " ^ acaso2 inerts lams^ ")") :: inerts, lams - in aux (n-1) inerts lams - in aux (2*n) vars [] + in aux (n-1) inerts lams in + let inerts = if with_const then "C" :: vars else vars in + aux (2*n) inerts [] ;; let rec repeat f n = - prerr_endline "\n########################### NEW TEST ###########################"; + print_endline "\n########################### NEW TEST ###########################"; f () ; if n > 0 then repeat f (n-1) ;; @@ -43,13 +48,28 @@ let main = let vars = Array.to_list (Array.init no_bound_vars (fun x -> "x" ^ string_of_int x)) in + let file = Filename.temp_file ~temp_dir:"./problems/" "simple.constants.auto." "" in + let oc = open_out file in + print_endline ("\n\n---- " ^ file) ; + repeat (fun _ -> let div, convs = gen complex vars in - let str = "$ random simple test \nD " ^ div ^ String.concat "\nC " convs ^ "\n" in + let str = " \nD " ^ div ^ String.concat "\nC " convs ^ "\n" in print_endline str; - let open Simple in - (solve ++ problem_of ++ Parser.problem_of_string) str + try + (solve ++ problem_of ++ Parser.problem_of_string) ("$" ^ str) + with Simple.Fail _ as e -> + let str = "$ failing test problem \n# Failed because: " ^ Printexc.to_string e ^ str in + Printf.fprintf oc "%s\n" str ) num ; - prerr_endline "\n---- ALL TESTS COMPLETED ----" + close_out oc; + print_endline ("\n\n---- " ^ file); + let filesize filename = + let ic = open_in filename in + let size = in_channel_length ic in + close_in ic ; size in + if filesize file = 0 + then (print_endline "---- All tests succeeded."; Sys.remove file ) + else (print_endline ("---- Not all tests succeeded. See " ^ file)) ;;