;; Internal tests

(test
 (name util_print_test)
 (modules util_print_test)
 (package qcheck-multicoretests-util)
 (libraries qcheck-multicoretests-util))

(test
 (name util_pp)
 (modules util_pp)
 (package qcheck-multicoretests-util)
 (libraries qcheck-core qcheck-multicoretests-util)
 (action
  (setenv OCAMLRUNPARAM "%{env:OCAMLRUNPARAM=b},v=0"
   (setenv MCTUTILS_TRUNCATE ""
    (run %{dep:util_pp.exe})))))

(rule
 (alias runtest)
 (package qcheck-multicoretests-util)
 (action
  (progn
   (with-outputs-to util_pp_trunc150.output
    (setenv OCAMLRUNPARAM "%{env:OCAMLRUNPARAM=b},v=0"
     (setenv MCTUTILS_TRUNCATE 150
      (run %{dep:util_pp.exe}))))
   (diff? util_pp_trunc150.expected util_pp_trunc150.output))))

(rule
 (alias runtest)
 (package qcheck-multicoretests-util)
 (action
  (progn
   (with-outputs-to util_pp_trunc79.output
    (setenv OCAMLRUNPARAM "%{env:OCAMLRUNPARAM=b},v=0"
     (setenv MCTUTILS_TRUNCATE 79
      (run %{dep:util_pp.exe}))))
   (diff? util_pp_trunc79.expected util_pp_trunc79.output))))

(rule
 (alias runtest)
 (package qcheck-multicoretests-util)
 (action
  (progn
   (with-outputs-to util_pp_trunc5.output
    (setenv OCAMLRUNPARAM "%{env:OCAMLRUNPARAM=b},v=0"
     (setenv MCTUTILS_TRUNCATE 5
      (run %{dep:util_pp.exe}))))
   (diff? util_pp_trunc5.expected util_pp_trunc5.output))))

(executable
 (name cleanup_lin)
 (modules cleanup_lin)
 (libraries qcheck-lin.domain)
 (enabled_if (>= %{ocaml_version} 5)))

(rule
 (alias runtest)
 (package qcheck-lin)
 (action (run %{exe:cleanup_lin.exe} --verbose))
 (enabled_if (>= %{ocaml_version} 5)))

(executable
 (name cleanup_stm)
 (modules cleanup_stm)
 (libraries qcheck-stm.sequential qcheck-stm.domain)
 (enabled_if (>= %{ocaml_version} 5)))

(rule
 (alias runtest)
 (package qcheck-stm)
 (action (run %{exe:cleanup_stm.exe} --verbose))
 (enabled_if (>= %{ocaml_version} 5)))

(rule
 (enabled_if (and (= %{arch_sixtyfour} true) (>= %{ocaml_version} 5)))
 (action (copy mutable_set_v5.expected.64 mutable_set_v5.expected)))

(rule
 (enabled_if (and (= %{arch_sixtyfour} false) (>= %{ocaml_version} 5)))
 (action (copy mutable_set_v5.expected.32 mutable_set_v5.expected)))

(rule
 (enabled_if (and (= %{arch_sixtyfour} true) (< %{ocaml_version} 5)))
 (action (copy mutable_set_v4.expected.64 mutable_set_v5.expected)))

(rule
 (enabled_if (and (= %{arch_sixtyfour} false) (< %{ocaml_version} 5)))
 (action (copy mutable_set_v4.expected.32 mutable_set_v5.expected)))

(test
 (name mutable_set_v5)
 (modules mutable_set_v5)
 (package qcheck-stm)
 (libraries qcheck-stm.sequential threads.posix)
 (action
  (with-accepted-exit-codes 1
   (setenv OCAMLRUNPARAM "%{env:OCAMLRUNPARAM=b},v=0"
    (run ./%{test} --seed 229109553)))))

(test
 (name stm_next_state_exc)
 (modules stm_next_state_exc)
 (package qcheck-stm)
 (libraries qcheck-stm.sequential qcheck-stm.domain)
 (enabled_if (>= %{ocaml_version} 5)))
