summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/vytree.ml2
-rw-r--r--src/vytree.mli2
-rw-r--r--test/vytree_test.ml6
3 files changed, 10 insertions, 0 deletions
diff --git a/src/vytree.ml b/src/vytree.ml
index 93d3d71..b5dcba6 100644
--- a/src/vytree.ml
+++ b/src/vytree.ml
@@ -97,6 +97,8 @@ let rec get node path =
| [name] -> find_or_fail node name
| name :: names -> get (find_or_fail node name) names
+let get_data node path = data_of_node @@ get node path
+
let exists node path =
try ignore (get node path); true
with Nonexistent_path -> false
diff --git a/src/vytree.mli b/src/vytree.mli
index e912922..6a7eda1 100644
--- a/src/vytree.mli
+++ b/src/vytree.mli
@@ -31,4 +31,6 @@ val get : 'a t -> string list -> 'a t
val get_existent_path : 'a t -> string list -> string list
+val get_data : 'a t -> string list -> 'a
+
val exists : 'a t -> string list -> bool
diff --git a/test/vytree_test.ml b/test/vytree_test.ml
index 86a6269..5fb51ff 100644
--- a/test/vytree_test.ml
+++ b/test/vytree_test.ml
@@ -126,6 +126,11 @@ let test_exists_nonexistent test_ctxt =
let node = insert node ["foo"; "bar"] () in
assert_equal (exists node ["foo"; "bar"; "baz"]) false
+let test_get_data test_ctxt =
+ let node = make 0 "root" in
+ let node = insert node ["foo"] 1 in
+ let node = insert node ["foo"; "bar"] 42 in
+ assert_equal (get_data node ["foo"; "bar"]) 42
let suite =
"VyConf tree tests" >::: [
@@ -146,6 +151,7 @@ let suite =
"test_get_existent_path" >:: test_get_existent_path;
"test_exists_existent" >:: test_exists_existent;
"test_exists_nonexistent" >:: test_exists_nonexistent;
+ "test_get_data" >:: test_get_data;
]
let () =