-module(zbintrees_tests). -compile({no_auto_import,[get/1, put/2]}). -import(zbintrees, [root/1, get/1, put/2, right/1, left/1, top/1, set_left_branch/2, set_right_branch/2]). -include_lib("eunit/include/eunit.hrl"). -define(TEST_TREE, {[], {fork, a, {fork,b,undefined,undefined}, {fork,c,undefined,{fork,d,undefined,undefined}}}}). root_test_() -> [?_assertEqual({[], {fork, a, undefined, undefined}}, root(a))]. get_test_() -> [?_assertEqual(a, get(root(a))), ?_assertEqual(c, get(right(?TEST_TREE)))]. put_test_() -> [?_assertEqual(c, get(put(c, root(a)))), ?_assertEqual(f, get(put(f, right(?TEST_TREE)))), ?_assertEqual(z, get(put(z, left(left(?TEST_TREE))))), ?_assertEqual(top(top(put(z, left(left(?TEST_TREE))))), {[], {fork, a, {fork,b,{fork,z,undefined,undefined},undefined}, {fork,c,undefined,{fork,d,undefined,undefined}}}})]. right_test_() -> [?_assertEqual({[{right, a, {fork, b, undefined, undefined}}], {fork, c, undefined, {fork,d,undefined,undefined}}}, right(?TEST_TREE)), ?_assertMatch({_, undefined}, right(right(right(?TEST_TREE)))), ?_assertError(function_clause, right(right(right(right(?TEST_TREE)))))]. left_test_() -> [?_assertEqual({[{left,a,{fork,c,undefined,{fork,d,undefined,undefined}}}], {fork, b, undefined, undefined}}, left(?TEST_TREE)), ?_assertMatch({_, undefined}, left(left(?TEST_TREE))), ?_assertError(function_clause, left(left(left(?TEST_TREE))))]. top_test_() -> [?_assertError(function_clause, top(?TEST_TREE)), ?_assertEqual(?TEST_TREE, top(left(?TEST_TREE))), ?_assertEqual(?TEST_TREE, top(right(?TEST_TREE))), ?_assertEqual(?TEST_TREE, top(top(right(left(?TEST_TREE))))), ?_assertEqual({[{left,a,{fork,c,undefined,{fork,d,undefined,undefined}}}], {fork, b, undefined, undefined}}, left(top(right(?TEST_TREE))))].