summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@baturin.org>2015-04-02 11:52:00 +0600
committerDaniil Baturin <daniil@baturin.org>2015-04-02 11:52:00 +0600
commitaed10315b97f770e07bf1acbf2f4cb7aa64b81ae (patch)
tree80ac0c5b9fc4720f0c98b3a53e1c3d41d212a637
parent13e194a7bcf3161f05bcfb55d1433d46601018a3 (diff)
downloadvyconf-aed10315b97f770e07bf1acbf2f4cb7aa64b81ae.tar.gz
vyconf-aed10315b97f770e07bf1acbf2f4cb7aa64b81ae.zip
Fix Vytree.update and its unit test.
-rw-r--r--src/vytree.ml6
-rw-r--r--test/vyconf_tree_test.ml2
2 files changed, 5 insertions, 3 deletions
diff --git a/src/vytree.ml b/src/vytree.ml
index 89743fb..ed1a23e 100644
--- a/src/vytree.ml
+++ b/src/vytree.ml
@@ -87,8 +87,10 @@ let delete node path =
do_with_child delete_immediate node path
let update node path data =
- let update_data data' node' dummy =
- {node' with data=data'}
+ let update_data data' node' name =
+ let child = find_or_fail node' name in
+ let child = { child with data=data' } in
+ replace node' child
in do_with_child (update_data data) node path
let rec get node path =
diff --git a/test/vyconf_tree_test.ml b/test/vyconf_tree_test.ml
index eca40ce..3d8c52a 100644
--- a/test/vyconf_tree_test.ml
+++ b/test/vyconf_tree_test.ml
@@ -94,7 +94,7 @@ let test_get_child_nonexistent test_ctxt =
let test_update test_ctxt =
let node = make "root" 0 in
let node = insert 0 node ["foo"] 1 in
- assert_equal (data_of_node (update node ["foo"] 9)) 9
+ assert_equal (data_of_node (get (update node ["foo"] 9) ["foo"])) 9
let suite =
"VyConf tree tests" >::: [