Persistent store with Git semantics: lazy reads, delayed writes, content-addressing
at main 51 lines 1.7 kB view raw
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 ] )