From 8d4e364d47e1c33bd94952c8b562d279e498693c Mon Sep 17 00:00:00 2001 From: Kate Date: Wed, 26 Jan 2022 21:14:59 +0000 Subject: [PATCH] Add some tests --- opam-0install-cudf.opam | 1 + test/cudf/dune | 4 ++ test/cudf/test.ml | 87 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+) create mode 100644 test/cudf/dune create mode 100644 test/cudf/test.ml diff --git a/opam-0install-cudf.opam b/opam-0install-cudf.opam index f063e91..1074f2c 100644 --- a/opam-0install-cudf.opam +++ b/opam-0install-cudf.opam @@ -24,6 +24,7 @@ depends: [ "cudf" "ocaml" {>= "4.08.0"} "0install-solver" + "alcotest" {with-test} ] build: ["dune" "build" "-p" name "-j" jobs] run-test: ["dune" "test" "-p" name "-j" jobs] diff --git a/test/cudf/dune b/test/cudf/dune new file mode 100644 index 0000000..beefe6b --- /dev/null +++ b/test/cudf/dune @@ -0,0 +1,4 @@ +(test + (name test) + (package opam-0install-cudf) + (libraries alcotest opam-0install-cudf)) diff --git a/test/cudf/test.ml b/test/cudf/test.ml new file mode 100644 index 0000000..323aea8 --- /dev/null +++ b/test/cudf/test.ml @@ -0,0 +1,87 @@ +let universe = + Cudf.load_universe [ + {Cudf.default_package with package = "a"; version = 1}; + {Cudf.default_package with package = "a"; version = 2}; + {Cudf.default_package with package = "a"; version = 3}; + {Cudf.default_package with package = "a"; version = 4}; + + {Cudf.default_package with package = "b"; version = 1}; + {Cudf.default_package with package = "b"; version = 2; pkg_extra = [("avoid-version", `Int 1)]}; + {Cudf.default_package with package = "b"; version = 3; pkg_extra = [("avoid-version", `Int 0)]}; + {Cudf.default_package with package = "b"; version = 4}; + + {Cudf.default_package with package = "c"; version = 1; pkg_extra = [("avoid-version", `Int 1)]}; + {Cudf.default_package with package = "c"; version = 2}; + {Cudf.default_package with package = "c"; version = 3}; + {Cudf.default_package with package = "c"; version = 4; pkg_extra = [("avoid-version", `Int 0)]}; + + {Cudf.default_package with package = "d"; version = 1; pkg_extra = [("avoid-version", `Int 0)]}; + {Cudf.default_package with package = "d"; version = 2}; + {Cudf.default_package with package = "d"; version = 3}; + {Cudf.default_package with package = "d"; version = 4; pkg_extra = [("avoid-version", `Int 1)]}; + ] + +let solve ?prefer_oldest req = + let x = Opam_0install_cudf.create ?prefer_oldest ~constraints:[] universe in + match Opam_0install_cudf.solve x req with + | Ok sel -> Ok (Opam_0install_cudf.packages_of_result sel) + | Error diag -> Error (Opam_0install_cudf.diagnostics ~verbose:true diag) + +let simple_solve () = + Alcotest.(check (result (list (pair string int)) string)) + "equal" (Ok [("a", 4)]) + (solve [("a", `Essential)]) + +let simple_oldest () = + Alcotest.(check (result (list (pair string int)) string)) + "equal" (Ok [("a", 1)]) + (solve ~prefer_oldest:true [("a", `Essential)]) + +let simple_avoid_1 () = + Alcotest.(check (result (list (pair string int)) string)) + "equal" (Ok [("b", 4)]) + (solve [("b", `Essential)]) + +let oldest_avoid_1 () = + Alcotest.(check (result (list (pair string int)) string)) + "equal" (Ok [("b", 1)]) + (solve ~prefer_oldest:true [("b", `Essential)]) + +let simple_avoid_2 () = + Alcotest.(check (result (list (pair string int)) string)) + "equal" (Ok [("c", 4)]) + (solve [("c", `Essential)]) + +let oldest_avoid_2 () = + Alcotest.(check (result (list (pair string int)) string)) + "equal" (Ok [("c", 2)]) + (solve ~prefer_oldest:true [("c", `Essential)]) + +let simple_avoid_3 () = + Alcotest.(check (result (list (pair string int)) string)) + "equal" (Ok [("d", 3)]) + (solve [("d", `Essential)]) + +let oldest_avoid_3 () = + Alcotest.(check (result (list (pair string int)) string)) + "equal" (Ok [("d", 1)]) + (solve ~prefer_oldest:true [("d", `Essential)]) + +let () = + Alcotest.run "cudf" + [ + ( "simple solve", + [ + Alcotest.test_case "normal" `Quick simple_solve; + Alcotest.test_case "oldest" `Quick simple_oldest; + ] ); + ( "avoid-version", + [ + Alcotest.test_case "normal 1" `Quick simple_avoid_1; + Alcotest.test_case "oldest 1" `Quick oldest_avoid_2; + Alcotest.test_case "normal 2" `Quick simple_avoid_2; + Alcotest.test_case "oldest 2" `Quick oldest_avoid_2; + Alcotest.test_case "normal 3" `Quick simple_avoid_3; + Alcotest.test_case "oldest 3" `Quick oldest_avoid_3; + ] ); + ]