int main() { struct tree_node *root; struct tree_node *left, *right; int i = 1,j=2,k=3; root = create_tree_node(&i); left = create_tree_node(&j); right = create_tree_node(&k); TREE_ADD(root, left, left); TREE_ADD(root, right, right); traverse_path(root,traverse); destroy_tree(root,NULL); }
static void test_print(void) { struct kz_lookup_ipv6_node *root = ipv6_node_new(); TREE_CHECK(root, "0|::/0\n"); TREE_ADD(root, "::", 32); TREE_ADD(root, "::", 64); TREE_ADD(root, "ffff::", 16); TREE_ADD(root, "ffff:ff00::", 32); TREE_ADD(root, "ffff:f000::", 32); TREE_CHECK(root, "0|::/0\n" " 1|::/32\n" " 2|::/64\n" " 1|ffff::/16\n" " 2|ffff:f000::/20\n" " 3|ffff:f000::/32\n" " 3|ffff:ff00::/32\n"); ipv6_destroy(root); }
static void test_add(void) { struct kz_lookup_ipv6_node *root = NULL; /* construct an empty tree */ TREE_NEW(root); TREE_CHECK(root, "0|::/0\n"); /* postfix insertion */ TREE_ADD(root, "ffff::", 15); TREE_ADD(root, "ffff:ffff::", 31); TREE_CHECK(root, "0|::/0\n" " 1|ffff::/15\n" " 2|ffff:ffff::/31\n"); TREE_NEW(root); TREE_ADD(root, "::", 15); TREE_ADD(root, "::", 31); TREE_CHECK(root, "0|::/0\n" " 1|::/15\n" " 2|::/31\n"); /* inserting shorter prefix */ TREE_NEW(root); TREE_ADD(root, "ffff:ffff::", 31); TREE_ADD(root, "ffff::", 15); TREE_CHECK(root, "0|::/0\n" " 1|ffff::/15\n" " 2|ffff:ffff::/31\n"); TREE_NEW(root); TREE_ADD(root, "::", 31); TREE_ADD(root, "::", 15); TREE_CHECK(root, "0|::/0\n" " 1|::/15\n" " 2|::/31\n"); /* same prefix length, but different prefix */ TREE_NEW(root); TREE_ADD(root, "ffff::", 16); TREE_ADD(root, "f0ff::", 16); TREE_CHECK(root, "0|::/0\n" " 1|f0ff::/4\n" " 2|f0ff::/16\n" " 2|ffff::/16\n"); TREE_NEW(root); TREE_ADD(root, "00ff::", 16); TREE_ADD(root, "0fff::", 16); TREE_CHECK(root, "0|::/0\n" " 1|fff::/4\n" " 2|ff::/16\n" " 2|fff::/16\n"); /* adding a node already present */ TREE_NEW(root); TREE_ADD(root, "fe80::", 10); TREE_ADD(root, "fe80::", 10); TREE_ADD(root, "fe8f::", 10); TREE_CHECK(root, "0|::/0\n" " 1|fe80::/10\n"); ipv6_destroy(root); }