more test coverage
[protos/libecoli.git] / lib / ecoli_node_str.c
index 3cbc31b..80134b0 100644 (file)
@@ -87,7 +87,7 @@ ec_node_str_complete(const struct ec_node *gen_node,
 
        /* no completion */
        if (str[n] != '\0')
-               return 0; // XXX add a no_match instead?
+               return EC_PARSED_NOMATCH;
 
        if (ec_completed_add_item(completed, gen_node, NULL, EC_COMP_FULL,
                                        str, node->string) < 0)
@@ -110,17 +110,10 @@ static void ec_node_str_free_priv(struct ec_node *gen_node)
        ec_free(node->string);
 }
 
-static size_t ec_node_str_get_max_parse_len(const struct ec_node *gen_node)
-{
-       (void)gen_node;
-       return 1;
-}
-
 static struct ec_node_type ec_node_str_type = {
        .name = "str",
        .parse = ec_node_str_parse,
        .complete = ec_node_str_complete,
-       .get_max_parse_len = ec_node_str_get_max_parse_len,
        .desc = ec_node_str_desc,
        .size = sizeof(struct ec_node_str),
        .free_priv = ec_node_str_free_priv,
@@ -139,9 +132,7 @@ int ec_node_str_set_str(struct ec_node *gen_node, const char *str)
 
        if (str == NULL)
                return -EINVAL;
-       if (node->string != NULL)
-               return -EEXIST; // XXX allow to replace
-
+       ec_free(node->string);
        node->string = ec_strdup(str);
        if (node->string == NULL)
                return -ENOMEM;
@@ -218,8 +209,7 @@ static int ec_node_str_testcase(void)
        }
        ret |= EC_TEST_CHECK_COMPLETE(node,
                EC_NODE_ENDLIST,
-               EC_NODE_ENDLIST,
-               "");
+               EC_NODE_ENDLIST);
        ret |= EC_TEST_CHECK_COMPLETE(node,
                "", EC_NODE_ENDLIST,
                "foo", EC_NODE_ENDLIST);