open! Import
open! Sign

let%test "of_int" = of_int 37 = Pos && of_int (-22) = Neg && of_int 0 = Zero

let%test_unit "( * )" =
  List.cartesian_product all all
  |> List.iter ~f:(fun (s1, s2) ->
    [%test_result: int]
      (to_int (s1 * s2))
      ~expect:(Int.( * ) (to_int s1) (to_int s2)))
;;

let%expect_test ("hash coherence" [@tags "64-bits-only"]) =
  check_hash_coherence [%here] (module Sign) all;
  [%expect {| |}]
;;

open! Import
open! Sign

let%test "of_int" = of_int 37 = Pos && of_int (-22) = Neg && of_int 0 = Zero

let%test_unit "( * )" =
  List.cartesian_product all all
  |> List.iter ~f:(fun (s1, s2) ->
    [%test_result: int]
      (to_int (s1 * s2))
      ~expect:(Int.( * ) (to_int s1) (to_int s2)))
;;

let%expect_test ("hash coherence" [@tags "64-bits-only"]) =
  check_hash_coherence [%here] (module Sign) all;
  [%expect {| |}]
;;
