forked from
gazagnaire.org/irmin
Persistent store with Git semantics: lazy reads, delayed writes, content-addressing
1open Irmin
2
3let test_empty_tree () =
4 let tree = Tree.Git.empty () in
5 Alcotest.(check (option string))
6 "find empty" None
7 (Tree.Git.find tree [ "foo" ])
8
9let test_tree_add_find () =
10 let tree = Tree.Git.empty () in
11 let tree = Tree.Git.add tree [ "foo"; "bar" ] "content" in
12 Alcotest.(check (option string))
13 "find added" (Some "content")
14 (Tree.Git.find tree [ "foo"; "bar" ])
15
16let test_tree_remove () =
17 let tree = Tree.Git.empty () in
18 let tree = Tree.Git.add tree [ "foo" ] "content" in
19 let tree = Tree.Git.remove tree [ "foo" ] in
20 Alcotest.(check (option string))
21 "find removed" None
22 (Tree.Git.find tree [ "foo" ])
23
24let test_tree_overwrite () =
25 let tree = Tree.Git.empty () in
26 let tree = Tree.Git.add tree [ "key" ] "value1" in
27 let tree = Tree.Git.add tree [ "key" ] "value2" in
28 Alcotest.(check (option string))
29 "find overwritten" (Some "value2")
30 (Tree.Git.find tree [ "key" ])
31
32let test_tree_nested () =
33 let tree = Tree.Git.empty () in
34 let tree = Tree.Git.add tree [ "a"; "b"; "c" ] "deep" in
35 let tree = Tree.Git.add tree [ "a"; "x" ] "shallow" in
36 Alcotest.(check (option string))
37 "find deep" (Some "deep")
38 (Tree.Git.find tree [ "a"; "b"; "c" ]);
39 Alcotest.(check (option string))
40 "find shallow" (Some "shallow")
41 (Tree.Git.find tree [ "a"; "x" ])
42
43let suite =
44 ( "Tree",
45 [
46 Alcotest.test_case "empty tree" `Quick test_empty_tree;
47 Alcotest.test_case "tree add/find" `Quick test_tree_add_find;
48 Alcotest.test_case "tree remove" `Quick test_tree_remove;
49 Alcotest.test_case "tree overwrite" `Quick test_tree_overwrite;
50 Alcotest.test_case "tree nested" `Quick test_tree_nested;
51 ] )