tests CHANGE add unit test for parse_namespace yin parser function
diff --git a/src/parser_yin.c b/src/parser_yin.c
index e7e600c..c060b5b 100644
--- a/src/parser_yin.c
+++ b/src/parser_yin.c
@@ -169,15 +169,6 @@
return LY_SUCCESS;
}
-/**
- * @brief Parse namespace statement.
- *
- * @param[in] xml_ctx xml context.
- * @param[in, out] data Data to read from.
- * @param[in, out] namespace Where namespace value should be stored.
- *
- * @return LY_ERR values.
- */
LY_ERR
parse_namespace(struct lyxml_context *xml_ctx, const char **data, const char **namespace)
{
@@ -186,7 +177,7 @@
ret = yin_parse_attribute(xml_ctx, data, YIN_ARG_URI, namespace);
LY_CHECK_RET(ret != LY_SUCCESS, ret);
- return LY_SUCCESS;
+ return ret;
}
/**
diff --git a/src/parser_yin.h b/src/parser_yin.h
index 6aa08e5..01cae2b 100644
--- a/src/parser_yin.h
+++ b/src/parser_yin.h
@@ -42,5 +42,16 @@
*/
LY_ERR parse_text_element(struct lyxml_context *xml_ctx, const char **data, const char **value);
+/**
+ * @brief Parse namespace statement.
+ *
+ * @param[in] xml_ctx xml context.
+ * @param[in, out] data Data to read from.
+ * @param[in, out] namespace Where namespace value should be stored.
+ *
+ * @return LY_ERR values.
+ */
+LY_ERR
+parse_namespace(struct lyxml_context *xml_ctx, const char **data, const char **namespace);
#endif /* LY_PARSER_YIN_H_*/
diff --git a/tests/src/test_parser_yin.c b/tests/src/test_parser_yin.c
index 996ecb3..97d39d8 100644
--- a/tests/src/test_parser_yin.c
+++ b/tests/src/test_parser_yin.c
@@ -71,7 +71,7 @@
xmlns:myext=\"urn:example:extensions\">\
<namespace uri=\"urn:example:foo\" xmlns:myext=\"urn:example:extensions\"/>\
<prefix xmlns:myxt=\"urn:emple:extensions\" value=\"foo\" xmlns:myext=\"urn:example:extensions\"/>\
- </module>",
+ </module>",
st->mod);
assert_int_equal(ret, LY_SUCCESS);
@@ -223,6 +223,27 @@
assert_int_equal(ret, LY_EVALID);
}
+static void
+test_parse_namespace(void **state)
+{
+ struct state *st = *state;
+ const char *res = NULL, *prefix = NULL, *name = NULL;
+ size_t prefix_len = 0, name_len = 0;
+ LY_ERR ret = LY_SUCCESS;
+
+ const char *data = "<namespace uri=\"urn:example:foo\"/>";
+ lyxml_get_element(st->xml_ctx, &data, &prefix, &prefix_len, &name, &name_len);
+ ret = parse_namespace(st->xml_ctx, &data, &res);
+ assert_int_equal(ret, LY_SUCCESS);
+ assert_string_equal(res, "urn:example:foo");
+ lydict_remove(st->ctx, "urn:example:foo");
+
+ data = "<namespace urr=\"urn:example:foo\"/>";
+ lyxml_get_element(st->xml_ctx, &data, &prefix, &prefix_len, &name, &name_len);
+ ret = parse_namespace(st->xml_ctx, &data, &res);
+ assert_int_equal(ret, LY_EVALID);
+}
+
int
main(void)
{
@@ -231,6 +252,7 @@
cmocka_unit_test_setup_teardown(test_parse, setup_f, teardown_f),
cmocka_unit_test_setup_teardown(test_meta, setup_f, teardown_f),
cmocka_unit_test_setup_teardown(test_parse_text_element, setup_f, teardown_f),
+ cmocka_unit_test_setup_teardown(test_parse_namespace, setup_f, teardown_f),
cmocka_unit_test(test_match_keyword),
cmocka_unit_test(test_match_argument),
};