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
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 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---- <TESTS> " ^ 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 ;
- print_endline "\n---- ALL TESTS COMPLETED ----"
+ close_out oc;
+ print_endline ("\n\n---- </TESTS> " ^ 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))
;;