END_TEST START_TEST (test_r3_node_find_edge) { node * n = r3_tree_create(10); node * child = r3_tree_create(3); fail_if( r3_node_add_child(n, strdup("/add") , child) == FALSE ); fail_if( r3_node_find_edge(n, "/add") == NULL ); fail_if( r3_node_find_edge(n, "/bar") != NULL ); r3_tree_free(n); }
edge * r3_node_connectl(node * n, const char * pat, int len, int dupl, node *child) { // find the same sub-pattern, if it does not exist, create one edge * e; e = r3_node_find_edge(n, pat); if (e) { return e; } if (dupl) { pat = zstrndup(pat, len); } e = r3_edge_create(pat, len, child); r3_node_append_edge(n, e); return e; }
/* parent node, edge pattern, child */ edge * r3_node_add_child(node * n, char * pat , node *child) { // find the same sub-pattern, if it does not exist, create one edge * e; e = r3_node_find_edge(n, pat); if (e) { return e; } e = r3_edge_create( pat, strlen(pat), child); r3_node_append_edge(n, e); // str_array_append(n->edge_patterns, pat); // assert( str_array_len(n->edge_patterns) == n->edge_len ); return e; }