summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@baturin.org>2015-02-24 22:57:46 +0600
committerDaniil Baturin <daniil@baturin.org>2015-02-24 22:57:46 +0600
commitb02d815d0de1b358a253806290932e85a0ac34b6 (patch)
tree93a485e9d0a167db61351406488a30e2aaedbf36
parent30a6ac8bb9faf96f79574fb16fc8765ea855a9e4 (diff)
downloadvyconf-b02d815d0de1b358a253806290932e85a0ac34b6.tar.gz
vyconf-b02d815d0de1b358a253806290932e85a0ac34b6.zip
Add tests for Vytree.insert_child
-rw-r--r--test/vyconf_tree_test.ml38
1 files changed, 36 insertions, 2 deletions
diff --git a/test/vyconf_tree_test.ml b/test/vyconf_tree_test.ml
index 0444177..d9cb76a 100644
--- a/test/vyconf_tree_test.ml
+++ b/test/vyconf_tree_test.ml
@@ -1,17 +1,51 @@
open OUnit2
open Vytree
-let test1 test_ctxt = assert_equal 0 0
-
+(* Destructuting a freshly made node gives us what
+ we made it from *)
let test_make_node test_ctxt =
let node = make "root" () in
assert_equal (name_of_node node) "root";
assert_equal (data_of_node node) ();
assert_equal (children_of_node node) []
+(* XXX: these comparisons are awkward, but this is
+ probably the only way to track the problem
+ down to insert if insert breaks *)
+
+(* Inserting at single-item path adds a child to
+ children list *)
+let test_insert_immediate_child test_ctxt =
+ let node = make "root" () in
+ let node' = insert_child () node ["foo"] () in
+ assert_equal (children_of_node node')
+ [make "foo" ()]
+
+(* Inserting one child after another adds it to the
+ end of the children list *)
+let test_insert_multiple_children test_ctxt =
+ let node = make "root" () in
+ let node' = insert_child () node ["foo"] () in
+ let node'' = insert_child () node' ["bar"] () in
+ assert_equal (children_of_node node'')
+ [make "foo" (); make "bar" ()]
+
+(* Inserting a child at a two-item path creates a tree
+ two levels deep *)
+let test_insert_multi_level test_ctxt =
+ let node = make "root" () in
+ let node' = insert_child () node ["foo"; "bar"] () in
+ let bar = make "bar" () in
+ let foo = make_full "foo" () [bar] in
+ let root = make_full "root" () [foo] in
+ assert_equal root node'
+
let suite =
"VyConf tree tests" >::: [
"test_make_node" >:: test_make_node;
+ "test_insert_immediate_child" >:: test_insert_immediate_child;
+ "test_insert_multiple_children" >:: test_insert_multiple_children;
+ "test_insert_multi_level" >:: test_insert_multi_level;
]
let () =