summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@baturin.org>2015-09-23 01:40:18 +0600
committerDaniil Baturin <daniil@baturin.org>2015-09-23 01:40:18 +0600
commitc007e11142c605aaa8e8f3a0ff56b0fe657f8407 (patch)
tree7e78334ab52e1f9198cd1eafaa0fbdd44f474565 /test
parent0ac5704dd7a374ee4736a5cecb063c2ab49a63ce (diff)
downloadvyconf-c007e11142c605aaa8e8f3a0ff56b0fe657f8407.tar.gz
vyconf-c007e11142c605aaa8e8f3a0ff56b0fe657f8407.zip
Add delete function to Config_tree, add some tests for it.
Diffstat (limited to 'test')
-rw-r--r--test/config_tree_test.ml38
1 files changed, 33 insertions, 5 deletions
diff --git a/test/config_tree_test.ml b/test/config_tree_test.ml
index 58a95ad..516960d 100644
--- a/test/config_tree_test.ml
+++ b/test/config_tree_test.ml
@@ -1,18 +1,46 @@
open OUnit2
module VT = Vytree
-open Config_tree
+module CT = Config_tree
let test_set_create_node test_ctxt =
- let node = make "root" in
- let node = set node ["foo"; "bar"] "baz" ReplaceValue in
- let data = VT.get_data node ["foo"; "bar"] in
- assert_equal data.values ["baz"]
+ let path = ["foo"; "bar"] in
+ let node = CT.make "root" in
+ let node = CT.set node path "baz" CT.ReplaceValue in
+ let values = CT.get_values node path in
+ assert_equal values ["baz"]
+
+(* Deleting just one of many values should keep all other values intact *)
+let test_delete_just_value test_ctxt =
+ let path = ["foo"; "bar"] in
+ let node = CT.make "root" in
+ let node = CT.set node path "baz" CT.AddValue in
+ let node = CT.set node path "quux" CT.AddValue in
+ let node = CT.delete node path (Some "quux") in
+ assert_equal (CT.get_values node path) ["baz"]
+
+(* Deleting the last value should delete the whole leaf *)
+let test_delete_last_value test_ctxt =
+ let path = ["foo"; "bar"] in
+ let node = CT.make "root" in
+ let node = CT.set node path "baz" CT.AddValue in
+ let node = CT.delete node path (Some "baz") in
+ assert_equal ((not (VT.exists node path)) && (VT.exists node ["foo"])) true
+
+(* Deleting a non-leaf node should delete the whole subtree *)
+let test_delete_subtree test_ctxt =
+ let path = ["foo"; "bar"] in
+ let node = CT.make "root" in
+ let node = CT.set node path "baz" CT.AddValue in
+ let node = CT.delete node path None in
+ assert_equal (VT.list_children node) []
let suite =
"VyConf config tree tests" >::: [
"test_set_create_node" >:: test_set_create_node;
+ "test_delete_just_value" >:: test_delete_just_value;
+ "test_delete_last_value" >:: test_delete_last_value;
]
let () =