open StateCPSMonad
open TestBubbleSortCommon
module InstantiateCode = struct
open Runcode
open Print_code
module Lang = Code
let string_of_code gen : string = (*mimicking Print_code.format_code*)
let code = .< fun a -> .~(runM (gen ..) []) >. in
let (cde, _) = close_code_delay_check code in
let cde = (cde : Trx.closed_code_repr :> Parsetree.expression) in
Pprintast.string_of_expression cde
let printcode gen =
let code = .< fun a -> .~(runM (gen ..) []) >. in
let ppf = Format.std_formatter in
print_endline "before-test";
(* Print_code.print_code Format.std_formatter code; *)
let (cde, check) = close_code_delay_check code in
(* print_closed_code ppf cde; *)
Format.fprintf ppf ".<@,%a>.@ " format_code cde;
(* end print_closed_code *)
print_newline ();
print_endline "after-test";
try check ()
with e -> Format.fprintf ppf "\n%s" (Printexc.to_string e)
(* end print_code *)
let instantiate gen =
let code = .< fun a -> .~(runM (gen ..) []) >. in
(* printcode gen; *)
Runcode.run code
end
module Testing = Tests (InstantiateCode)