objective categorical abstract machine language personal data server
1open Mist.Util
2
3let test_leading_zeros () =
4 let cases = Hashtbl.create 4 in
5 Hashtbl.add cases "2653ae71" 0 ;
6 Hashtbl.add cases "blue" 1 ;
7 Hashtbl.add cases "app.bsky.feed.post/454397e440ec" 4 ;
8 Hashtbl.add cases "app.bsky.feed.post/9adeb165882c" 8 ;
9 cases
10 |> Hashtbl.iter (fun key value ->
11 Alcotest.(check int)
12 ("leading zeros on hash " ^ key)
13 value
14 (leading_zeros_on_hash key) )
15
16let test_shared_prefix_length () =
17 let cases = Hashtbl.create 5 in
18 Hashtbl.add cases ("2653ae71", "2653ae71") 8 ;
19 Hashtbl.add cases ("2653ae71", "2653ae01") 6 ;
20 Hashtbl.add cases ("2653ae71", "26530e71") 4 ;
21 Hashtbl.add cases ("2653ae71", "2603ae71") 2 ;
22 Hashtbl.add cases ("2653ae71", "0653ae71") 0 ;
23 cases
24 |> Hashtbl.iter (fun (a, b) value ->
25 Alcotest.(check int)
26 ("prefix length between " ^ a ^ " and " ^ b)
27 value (shared_prefix_length a b) )
28
29let () =
30 Alcotest.run "util"
31 [ ( "repo utils"
32 , [ ("leading_zeros", `Quick, test_leading_zeros)
33 ; ("shared_prefix_length", `Quick, test_shared_prefix_length) ] ) ]