diff options
author | Daniil Baturin <daniil@baturin.org> | 2015-02-24 22:57:46 +0600 |
---|---|---|
committer | Daniil Baturin <daniil@baturin.org> | 2015-02-24 22:57:46 +0600 |
commit | b02d815d0de1b358a253806290932e85a0ac34b6 (patch) | |
tree | 93a485e9d0a167db61351406488a30e2aaedbf36 | |
parent | 30a6ac8bb9faf96f79574fb16fc8765ea855a9e4 (diff) | |
download | vyconf-b02d815d0de1b358a253806290932e85a0ac34b6.tar.gz vyconf-b02d815d0de1b358a253806290932e85a0ac34b6.zip |
Add tests for Vytree.insert_child
-rw-r--r-- | test/vyconf_tree_test.ml | 38 |
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 () = |