forked from rescript-lang/rescript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathounit_hash_stubs_test.ml
74 lines (69 loc) · 2.35 KB
/
ounit_hash_stubs_test.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
let ((>::),
(>:::)) = OUnit.((>::),(>:::))
let (=~) = OUnit.assert_equal
let count = 2_000_000
let bench () =
Ounit_tests_util.time "int hash set" begin fun _ ->
let v = Hash_set_int.create 2_000_000 in
for i = 0 to count do
Hash_set_int.add v i
done ;
for _ = 0 to 3 do
for i = 0 to count do
assert (Hash_set_int.mem v i)
done
done
end;
Ounit_tests_util.time "int hash set" begin fun _ ->
let v = Hash_set_poly.create 2_000_000 in
for i = 0 to count do
Hash_set_poly.add v i
done ;
for _ = 0 to 3 do
for i = 0 to count do
assert (Hash_set_poly.mem v i)
done
done
end
type id (* = Ident.t *) = { stamp : int; name : string; mutable flags : int; }
let hash id = Bs_hash_stubs.hash_stamp_and_name id.stamp id.name
let suites =
__FILE__
>:::
[
__LOC__ >:: begin fun _ ->
Bs_hash_stubs.hash_int 0 =~ Hashtbl.hash 0
end;
__LOC__ >:: begin fun _ ->
Bs_hash_stubs.hash_int max_int =~ Hashtbl.hash max_int
end;
__LOC__ >:: begin fun _ ->
Bs_hash_stubs.hash_int max_int =~ Hashtbl.hash max_int
end;
__LOC__ >:: begin fun _ ->
Bs_hash_stubs.hash_string "The quick brown fox jumps over the lazy dog" =~
Hashtbl.hash "The quick brown fox jumps over the lazy dog"
end;
__LOC__ >:: begin fun _ ->
Array.init 100 (fun i -> String.make i 'a' )
|> Array.iter (fun x ->
Bs_hash_stubs.hash_string x =~ Hashtbl.hash x)
end;
__LOC__ >:: begin fun _ ->
(* only stamp matters here *)
hash {stamp = 1 ; name = "xx"; flags = 0} =~ Bs_hash_stubs.hash_small_int 1 ;
hash {stamp = 11 ; name = "xx"; flags = 0} =~ Bs_hash_stubs.hash_small_int 11;
end;
__LOC__ >:: begin fun _ ->
(* only string matters here *)
hash {stamp = 0 ; name = "Pervasives"; flags = 0} =~ Bs_hash_stubs.hash_string "Pervasives";
hash {stamp = 0 ; name = "UU"; flags = 0} =~ Bs_hash_stubs.hash_string "UU";
end;
__LOC__ >:: begin fun _ ->
let v = Array.init 20 (fun i -> i) in
let u = Array.init 30 (fun i -> (0-i) ) in
Bs_hash_stubs.int_unsafe_blit
v 0 u 10 20 ;
OUnit.assert_equal u (Array.init 30 (fun i -> if i < 10 then -i else i - 10))
end
]