75 lines
1.6 KiB
OCaml
75 lines
1.6 KiB
OCaml
open! Import
|
|
open! Nativeint
|
|
|
|
let%expect_test "hash coherence" =
|
|
check_int_hash_coherence [%here] (module Nativeint);
|
|
[%expect {| |}]
|
|
;;
|
|
|
|
type test_case = nativeint * int32 * int64
|
|
|
|
let test_cases : test_case list =
|
|
[ 0x0000_0011n, 0x1100_0000l, 0x1100_0000_0000_0000L
|
|
; 0x0000_1122n, 0x2211_0000l, 0x2211_0000_0000_0000L
|
|
; 0x0011_2233n, 0x3322_1100l, 0x3322_1100_0000_0000L
|
|
; 0x1122_3344n, 0x4433_2211l, 0x4433_2211_0000_0000L
|
|
]
|
|
;;
|
|
|
|
let%expect_test "bswap native" =
|
|
List.iter test_cases ~f:(fun (arg, bswap_int32, bswap_int64) ->
|
|
let result = bswap arg in
|
|
match Sys.word_size_in_bits with
|
|
| 32 -> assert (Int32.equal bswap_int32 (Nativeint.to_int32_trunc result))
|
|
| 64 -> assert (Int64.equal bswap_int64 (Nativeint.to_int64 result))
|
|
| _ -> assert false)
|
|
;;
|
|
|
|
let%expect_test "binary" =
|
|
quickcheck_m
|
|
[%here]
|
|
(module struct
|
|
type t = nativeint [@@deriving quickcheck, sexp_of]
|
|
end)
|
|
~f:(fun (t : t) -> ignore (Binary.to_string t : string));
|
|
[%expect {| |}]
|
|
;;
|
|
|
|
let test_binary i =
|
|
Binary.to_string_hum i |> print_endline;
|
|
Binary.to_string i |> print_endline;
|
|
print_s [%sexp (i : Binary.t)]
|
|
;;
|
|
|
|
let%expect_test "binary" =
|
|
test_binary 0b01n;
|
|
[%expect {|
|
|
0b1
|
|
0b1
|
|
0b1
|
|
|}];
|
|
test_binary 0b100n;
|
|
[%expect {|
|
|
0b100
|
|
0b100
|
|
0b100
|
|
|}];
|
|
test_binary 0b101n;
|
|
[%expect {|
|
|
0b101
|
|
0b101
|
|
0b101
|
|
|}];
|
|
test_binary 0b101010_10101010n;
|
|
[%expect {|
|
|
0b10_1010_1010_1010
|
|
0b10101010101010
|
|
0b10_1010_1010_1010
|
|
|}];
|
|
test_binary 0b111111_00000000n;
|
|
[%expect {|
|
|
0b11_1111_0000_0000
|
|
0b11111100000000
|
|
0b11_1111_0000_0000
|
|
|}]
|
|
;;
|