Source file unveil.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
open Types.PathPermission

let as_permission permission =
  match permission with
  | Read -> "r"
  | Write -> "w"
  | Execute -> "x"
  | CreateAndRemove -> "c"
;;

let%test _ = as_permission Read = "r"
let%test _ = as_permission Write = "w"
let%test _ = as_permission Execute = "x"
let%test _ = as_permission CreateAndRemove = "c"

let as_permissions permissions =
  ListLabels.map ~f:as_permission permissions |> StringLabels.concat ~sep:""
;;

let%test _ = as_permissions [] |> String.equal ""
let%test _ = as_permissions [ Read ] |> String.equal "r"
let%test _ = as_permissions [ Read; Execute ] |> String.equal "rx"

let%test _ =
  as_permissions [ Read; Write; Execute; CreateAndRemove ] |> String.equal "rwxc"
;;