This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
49
unikernel/duniverse/mirage-crypto/tests/test_numeric.ml
Normal file
49
unikernel/duniverse/mirage-crypto/tests/test_numeric.ml
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
open OUnit2
|
||||
|
||||
open Mirage_crypto.Uncommon
|
||||
open Mirage_crypto_pk
|
||||
|
||||
open Test_common
|
||||
|
||||
let n_encode_decode_selftest ~typ ~bound n =
|
||||
typ ^ "selftest" >:: times ~n @@ fun _ ->
|
||||
let r = Z_extra.gen bound in
|
||||
let s = Z_extra.(of_octets_be @@ to_octets_be r)
|
||||
and t = Z_extra.(of_octets_be @@ to_octets_be ~size:24 r) in
|
||||
assert_equal r s;
|
||||
assert_equal r t
|
||||
|
||||
let n_decode_reencode_selftest ~typ ~bytes n =
|
||||
typ ^ " selftest" >:: times ~n @@ fun _ ->
|
||||
let cs = Mirage_crypto_rng.generate bytes in
|
||||
let cs' = Z_extra.(to_octets_be ~size:bytes @@ of_octets_be cs) in
|
||||
assert_oct_equal cs cs'
|
||||
|
||||
let random_n_selftest ~typ n bounds =
|
||||
typ ^ " selftest" >::: (
|
||||
bounds |> List.map @@ fun (lo, hi) ->
|
||||
"selftest" >:: times ~n @@ fun _ ->
|
||||
let x = Z_extra.gen_r lo hi in
|
||||
if x < lo || x >= hi then assert_failure "range error"
|
||||
)
|
||||
|
||||
let int_safe_bytes = Sys.word_size // 8 - 1
|
||||
|
||||
let suite = [
|
||||
"Numeric extraction 1" >::: [
|
||||
n_encode_decode_selftest
|
||||
~typ:"z" ~bound:Z.(of_int64 Int64.max_int) 2000 ;
|
||||
] ;
|
||||
|
||||
"Numeric extraction 2" >::: [
|
||||
n_decode_reencode_selftest ~typ:"z" ~bytes:37 2000 ;
|
||||
];
|
||||
|
||||
"RNG extraction" >::: [
|
||||
random_n_selftest ~typ:"Z" 1000 [
|
||||
Z.(of_int 7, of_int 135);
|
||||
Z.(of_int 0, of_int 536870913);
|
||||
Z.(of_int 0, of_int64 2305843009213693953L)
|
||||
] ;
|
||||
]
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue