Adding upstream version 3.12.2.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
76b2c91d7e
commit
f3d737b374
66 changed files with 4041 additions and 2142 deletions
|
@ -23,11 +23,11 @@
|
|||
#define CHECK_LYD_STRING(INPUT, TEXT) \
|
||||
CHECK_LYD_STRING_PARAM(INPUT, TEXT, LYD_XML, LYD_PRINT_WITHSIBLINGS)
|
||||
|
||||
#define CHECK_PARSE_LYD_DIFF(INPUT_1, INPUT_2, OUT_DIFF) \
|
||||
assert_int_equal(LY_SUCCESS, lyd_diff_siblings(INPUT_1, INPUT_2, 0, &OUT_DIFF));\
|
||||
#define CHECK_PARSE_LYD_DIFF(INPUT_1, INPUT_2, OPTS, OUT_DIFF) \
|
||||
assert_int_equal(LY_SUCCESS, lyd_diff_siblings(INPUT_1, INPUT_2, OPTS, &OUT_DIFF));\
|
||||
assert_non_null(OUT_DIFF)
|
||||
|
||||
#define TEST_DIFF_3(XML1, XML2, XML3, DIFF1, DIFF2, MERGE) \
|
||||
#define TEST_DIFF_3(XML1, XML2, XML3, OPTS, DIFF1, DIFF2, MERGE) \
|
||||
{ \
|
||||
struct lyd_node *data1;\
|
||||
struct lyd_node *data2;\
|
||||
|
@ -38,13 +38,13 @@
|
|||
CHECK_PARSE_LYD(XML3, data3);\
|
||||
/* diff1 */ \
|
||||
struct lyd_node *diff1;\
|
||||
CHECK_PARSE_LYD_DIFF(data1, data2, diff1); \
|
||||
CHECK_PARSE_LYD_DIFF(data1, data2, OPTS, diff1); \
|
||||
CHECK_LYD_STRING(diff1, DIFF1); \
|
||||
assert_int_equal(lyd_diff_apply_all(&data1, diff1), LY_SUCCESS); \
|
||||
CHECK_LYD(data1, data2); \
|
||||
/* diff2 */ \
|
||||
struct lyd_node *diff2;\
|
||||
CHECK_PARSE_LYD_DIFF(data2, data3, diff2); \
|
||||
CHECK_PARSE_LYD_DIFF(data2, data3, OPTS, diff2); \
|
||||
CHECK_LYD_STRING(diff2, DIFF2); \
|
||||
assert_int_equal(lyd_diff_apply_all(&data2, diff2), LY_SUCCESS);\
|
||||
CHECK_LYD(data2, data3);\
|
||||
|
@ -59,248 +59,104 @@
|
|||
lyd_free_all(diff2);\
|
||||
}
|
||||
|
||||
const char *schema1 =
|
||||
"module defaults {\n"
|
||||
" yang-version 1.1;\n"
|
||||
" namespace \"urn:libyang:tests:defaults\";\n"
|
||||
" prefix df;\n"
|
||||
const char *schema =
|
||||
"module defaults {"
|
||||
"yang-version 1.1;"
|
||||
"namespace \"urn:libyang:tests:defaults\";"
|
||||
"prefix df;"
|
||||
""
|
||||
" feature unhide;\n"
|
||||
"import ietf-yang-metadata {prefix md;}"
|
||||
""
|
||||
" typedef defint32 {\n"
|
||||
" type int32;\n"
|
||||
" default \"42\";\n"
|
||||
" }\n"
|
||||
"feature unhide;"
|
||||
""
|
||||
" leaf hiddenleaf {\n"
|
||||
" if-feature \"unhide\";\n"
|
||||
" type int32;\n"
|
||||
" default \"42\";\n"
|
||||
" }\n"
|
||||
"md:annotation my-meta {type string;}"
|
||||
"md:annotation my-meta2 {type string;}"
|
||||
""
|
||||
" container df {\n"
|
||||
" leaf foo {\n"
|
||||
" type defint32;\n"
|
||||
" }\n"
|
||||
"typedef defint32 {type int32; default \"42\";}"
|
||||
""
|
||||
" leaf hiddenleaf {\n"
|
||||
" if-feature \"unhide\";\n"
|
||||
" type int32;\n"
|
||||
" default \"42\";\n"
|
||||
" }\n"
|
||||
""
|
||||
" container bar {\n"
|
||||
" presence \"\";\n"
|
||||
" leaf hi {\n"
|
||||
" type int32;\n"
|
||||
" default \"42\";\n"
|
||||
" }\n"
|
||||
""
|
||||
" leaf ho {\n"
|
||||
" type int32;\n"
|
||||
" mandatory true;\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
""
|
||||
" leaf-list llist {\n"
|
||||
" type defint32;\n"
|
||||
" ordered-by user;\n"
|
||||
" }\n"
|
||||
""
|
||||
" list ul {\n"
|
||||
" key \"l1\";\n"
|
||||
" ordered-by user;\n"
|
||||
" leaf l1 {\n"
|
||||
" type string;\n"
|
||||
" }\n"
|
||||
""
|
||||
" leaf l2 {\n"
|
||||
" type int32;\n"
|
||||
" }\n"
|
||||
""
|
||||
" container cont {\n"
|
||||
" leaf l3 {\n"
|
||||
" type string;\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
""
|
||||
" leaf-list dllist {\n"
|
||||
" type uint8;\n"
|
||||
" default \"1\";\n"
|
||||
" default \"2\";\n"
|
||||
" default \"3\";\n"
|
||||
" }\n"
|
||||
""
|
||||
" list list {\n"
|
||||
" key \"name\";\n"
|
||||
" leaf name {\n"
|
||||
" type string;\n"
|
||||
" }\n"
|
||||
""
|
||||
" leaf value {\n"
|
||||
" type int32;\n"
|
||||
" default \"42\";\n"
|
||||
" }\n"
|
||||
" list list2 {\n"
|
||||
" key \"name2\";\n"
|
||||
" leaf name2 {\n"
|
||||
" type string;\n"
|
||||
" }\n"
|
||||
" leaf value2 {\n"
|
||||
" type int32;\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
" }\n";
|
||||
const char *schema2 =
|
||||
" choice select {\n"
|
||||
" default \"a\";\n"
|
||||
" case a {\n"
|
||||
" choice a {\n"
|
||||
" leaf a1 {\n"
|
||||
" type int32;\n"
|
||||
" default \"42\";\n"
|
||||
" }\n"
|
||||
""
|
||||
" leaf a2 {\n"
|
||||
" type int32;\n"
|
||||
" default \"24\";\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
""
|
||||
" leaf b {\n"
|
||||
" type string;\n"
|
||||
" }\n"
|
||||
""
|
||||
" container c {\n"
|
||||
" presence \"\";\n"
|
||||
" leaf x {\n"
|
||||
" type int32;\n"
|
||||
" default \"42\";\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
""
|
||||
" choice select2 {\n"
|
||||
" default \"s2b\";\n"
|
||||
" leaf s2a {\n"
|
||||
" type int32;\n"
|
||||
" default \"42\";\n"
|
||||
" }\n"
|
||||
""
|
||||
" case s2b {\n"
|
||||
" choice s2b {\n"
|
||||
" default \"b1\";\n"
|
||||
" case b1 {\n"
|
||||
" leaf b1_1 {\n"
|
||||
" type int32;\n"
|
||||
" default \"42\";\n"
|
||||
" }\n"
|
||||
""
|
||||
" leaf b1_2 {\n"
|
||||
" type string;\n"
|
||||
" }\n"
|
||||
""
|
||||
" leaf b1_status {\n"
|
||||
" type int32;\n"
|
||||
" default \"42\";\n"
|
||||
" config false;\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
""
|
||||
" leaf b2 {\n"
|
||||
" type int32;\n"
|
||||
" default \"42\";\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
" list kl {\n"
|
||||
" config \"false\";\n"
|
||||
" leaf l1 {\n"
|
||||
" type string;\n"
|
||||
" }\n"
|
||||
""
|
||||
" leaf l2 {\n"
|
||||
" type int32;\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
""
|
||||
" leaf-list kll {\n"
|
||||
" config \"false\";\n"
|
||||
" type string;\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
""
|
||||
" container hidden {\n"
|
||||
" leaf foo {\n"
|
||||
" type int32;\n"
|
||||
" default \"42\";\n"
|
||||
" }\n"
|
||||
""
|
||||
" leaf baz {\n"
|
||||
" type int32;\n"
|
||||
" default \"42\";\n"
|
||||
" }\n"
|
||||
""
|
||||
" leaf papa {\n"
|
||||
" type int32;\n"
|
||||
" default \"42\";\n"
|
||||
" config false;\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
""
|
||||
" rpc rpc1 {\n"
|
||||
" input {\n"
|
||||
" leaf inleaf1 {\n"
|
||||
" type string;\n"
|
||||
" }\n"
|
||||
""
|
||||
" leaf inleaf2 {\n"
|
||||
" type string;\n"
|
||||
" default \"def1\";\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
""
|
||||
" output {\n"
|
||||
" leaf outleaf1 {\n"
|
||||
" type string;\n"
|
||||
" default \"def2\";\n"
|
||||
" }\n"
|
||||
""
|
||||
" leaf outleaf2 {\n"
|
||||
" type string;\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
""
|
||||
" notification notif {\n"
|
||||
" leaf ntfleaf1 {\n"
|
||||
" type string;\n"
|
||||
" default \"def3\";\n"
|
||||
" }\n"
|
||||
""
|
||||
" leaf ntfleaf2 {\n"
|
||||
" type string;\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
"}\n";
|
||||
"leaf hiddenleaf {if-feature \"unhide\"; type int32; default \"42\";}"
|
||||
"container df {"
|
||||
" leaf foo {type defint32; }"
|
||||
" leaf hiddenleaf {if-feature \"unhide\"; type int32; default \"42\";}"
|
||||
" container bar { presence \"\";"
|
||||
" leaf hi {type int32; default \"42\";}"
|
||||
" leaf ho {type int32; mandatory true;}"
|
||||
" }"
|
||||
" leaf-list llist {type defint32; ordered-by user;}"
|
||||
" list ul {key \"l1\"; ordered-by user;"
|
||||
" leaf l1 {type string;}"
|
||||
" leaf l2 {type int32;}"
|
||||
" container cont {"
|
||||
" leaf l3 {type string;}"
|
||||
" }"
|
||||
" }"
|
||||
" leaf-list dllist {type uint8; default \"1\"; default \"2\"; default \"3\";}"
|
||||
" list list {key \"name\";"
|
||||
" leaf name {type string;}"
|
||||
" leaf value {type int32; default \"42\";}"
|
||||
" list list2 {key \"name2\";"
|
||||
" leaf name2 {type string;}"
|
||||
" leaf value2 {type int32;}"
|
||||
" }"
|
||||
" }"
|
||||
" choice select {default \"a\";"
|
||||
" case a {"
|
||||
" choice a {"
|
||||
" leaf a1 {type int32; default \"42\";}"
|
||||
" leaf a2 {type int32; default \"24\";}"
|
||||
" }"
|
||||
" }"
|
||||
" leaf b {type string;}"
|
||||
" container c {presence \"\";"
|
||||
" leaf x {type int32; default \"42\";}"
|
||||
" }"
|
||||
" }"
|
||||
" choice select2 {default \"s2b\";"
|
||||
" leaf s2a {type int32; default \"42\";}"
|
||||
" case s2b {"
|
||||
" choice s2b {default \"b1\";"
|
||||
" case b1 {"
|
||||
" leaf b1_1 {type int32; default \"42\";}"
|
||||
" leaf b1_2 {type string;}"
|
||||
" leaf b1_status {type int32; default \"42\"; config false;}"
|
||||
" }"
|
||||
" leaf b2 {type int32; default \"42\";}"
|
||||
" }"
|
||||
" }"
|
||||
" }"
|
||||
" list kl {config \"false\";"
|
||||
" leaf l1 {type string;}"
|
||||
" leaf l2 {type int32;}"
|
||||
" }"
|
||||
" leaf-list kll {config \"false\"; type string;}"
|
||||
"}"
|
||||
"container hidden {"
|
||||
" leaf foo {type int32; default \"42\";}"
|
||||
" leaf baz {type int32; default \"42\";}"
|
||||
" leaf papa {type int32; default \"42\"; config false;}"
|
||||
"}"
|
||||
"rpc rpc1 {"
|
||||
" input {"
|
||||
" leaf inleaf1 {type string;}"
|
||||
" leaf inleaf2 {type string; default \"def1\";}"
|
||||
" }"
|
||||
" output {"
|
||||
" leaf outleaf1 {type string; default \"def2\";}"
|
||||
" leaf outleaf2 {type string;}"
|
||||
" }"
|
||||
"}"
|
||||
"notification notif {"
|
||||
" leaf ntfleaf1 {type string; default \"def3\";}"
|
||||
" leaf ntfleaf2 {type string;}"
|
||||
"}"
|
||||
"}";
|
||||
|
||||
static int
|
||||
setup(void **state)
|
||||
{
|
||||
char *schema;
|
||||
|
||||
UTEST_SETUP;
|
||||
|
||||
/* create one schema, longer than 4095 chars */
|
||||
schema = malloc(strlen(schema1) + strlen(schema2) + 1);
|
||||
strcpy(schema, schema1);
|
||||
strcat(schema, schema2);
|
||||
|
||||
UTEST_ADD_MODULE(schema, LYS_IN_YANG, NULL, NULL);
|
||||
free(schema);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -384,7 +240,7 @@ test_empty1(void **state)
|
|||
|
||||
struct lyd_node *diff;
|
||||
|
||||
CHECK_PARSE_LYD_DIFF(model_1, model_2, diff);
|
||||
CHECK_PARSE_LYD_DIFF(model_1, model_2, 0, diff);
|
||||
CHECK_LYD_STRING(diff,
|
||||
"<df xmlns=\"urn:libyang:tests:defaults\" xmlns:yang=\"urn:ietf:params:xml:ns:yang:1\" yang:operation=\"create\">\n"
|
||||
" <foo>42</foo>\n"
|
||||
|
@ -420,7 +276,7 @@ test_empty2(void **state)
|
|||
|
||||
struct lyd_node *diff;
|
||||
|
||||
CHECK_PARSE_LYD_DIFF(model_1, NULL, diff);
|
||||
CHECK_PARSE_LYD_DIFF(model_1, NULL, 0, diff);
|
||||
CHECK_LYD_STRING(diff,
|
||||
"<df xmlns=\"urn:libyang:tests:defaults\" xmlns:yang=\"urn:ietf:params:xml:ns:yang:1\" yang:operation=\"delete\">\n"
|
||||
" <foo>42</foo>\n"
|
||||
|
@ -455,7 +311,7 @@ test_empty_nested(void **state)
|
|||
|
||||
struct lyd_node *diff1;
|
||||
|
||||
CHECK_PARSE_LYD_DIFF(NULL, lyd_child(model_1), diff1);
|
||||
CHECK_PARSE_LYD_DIFF(NULL, lyd_child(model_1), 0, diff1);
|
||||
CHECK_LYD_STRING(diff1,
|
||||
"<df xmlns=\"urn:libyang:tests:defaults\" xmlns:yang=\"urn:ietf:params:xml:ns:yang:1\" yang:operation=\"none\">\n"
|
||||
" <foo yang:operation=\"create\">42</foo>\n"
|
||||
|
@ -463,7 +319,7 @@ test_empty_nested(void **state)
|
|||
|
||||
struct lyd_node *diff2;
|
||||
|
||||
CHECK_PARSE_LYD_DIFF(lyd_child(model_1), NULL, diff2);
|
||||
CHECK_PARSE_LYD_DIFF(lyd_child(model_1), NULL, 0, diff2);
|
||||
CHECK_LYD_STRING(diff2,
|
||||
"<df xmlns=\"urn:libyang:tests:defaults\" xmlns:yang=\"urn:ietf:params:xml:ns:yang:1\" yang:operation=\"none\">\n"
|
||||
" <foo yang:operation=\"delete\">42</foo>\n"
|
||||
|
@ -565,7 +421,7 @@ test_leaf(void **state)
|
|||
" <baz yang:operation=\"delete\">42</baz>\n"
|
||||
"</hidden>\n";
|
||||
|
||||
TEST_DIFF_3(xml1, xml2, xml3, out_diff_1, out_diff_2, out_merge);
|
||||
TEST_DIFF_3(xml1, xml2, xml3, 0, out_diff_1, out_diff_2, out_merge);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -641,7 +497,7 @@ test_list(void **state)
|
|||
" </list>\n"
|
||||
"</df>\n";
|
||||
|
||||
TEST_DIFF_3(xml1, xml2, xml3, out_diff_1, out_diff_2, out_merge);
|
||||
TEST_DIFF_3(xml1, xml2, xml3, 0, out_diff_1, out_diff_2, out_merge);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -713,7 +569,7 @@ test_nested_list(void **state)
|
|||
|
||||
CHECK_PARSE_LYD(xml1, data1);
|
||||
CHECK_PARSE_LYD(xml2, data2);
|
||||
CHECK_PARSE_LYD_DIFF(data1, data2, diff);
|
||||
CHECK_PARSE_LYD_DIFF(data1, data2, 0, diff);
|
||||
|
||||
CHECK_LYD_STRING(diff,
|
||||
"<df xmlns=\"urn:libyang:tests:defaults\" xmlns:yang=\"urn:ietf:params:xml:ns:yang:1\" yang:operation=\"none\">\n"
|
||||
|
@ -810,7 +666,7 @@ test_userord_llist(void **state)
|
|||
" <llist yang:orig-default=\"false\" yang:orig-value=\"2\" yang:value=\"\" yang:operation=\"replace\">5</llist>\n"
|
||||
"</df>\n";
|
||||
|
||||
TEST_DIFF_3(xml1, xml2, xml3, out_diff_1, out_diff_2, out_merge);
|
||||
TEST_DIFF_3(xml1, xml2, xml3, 0, out_diff_1, out_diff_2, out_merge);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -856,7 +712,7 @@ test_userord_llist2(void **state)
|
|||
" <llist yang:orig-value=\"1\" yang:operation=\"delete\">2</llist>\n"
|
||||
"</df>\n";
|
||||
|
||||
TEST_DIFF_3(xml1, xml2, xml3, out_diff_1, out_diff_2, out_merge);
|
||||
TEST_DIFF_3(xml1, xml2, xml3, 0, out_diff_1, out_diff_2, out_merge);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -899,7 +755,7 @@ test_userord_mix(void **state)
|
|||
" <llist yang:value=\"1\" yang:operation=\"create\">4</llist>\n"
|
||||
"</df>\n";
|
||||
|
||||
TEST_DIFF_3(xml1, xml2, xml3, out_diff_1, out_diff_2, out_merge);
|
||||
TEST_DIFF_3(xml1, xml2, xml3, 0, out_diff_1, out_diff_2, out_merge);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -985,7 +841,7 @@ test_userord_list(void **state)
|
|||
" </ul>\n"
|
||||
"</df>\n";
|
||||
|
||||
TEST_DIFF_3(xml1, xml2, xml3, out_diff_1, out_diff_2, out_merge);
|
||||
TEST_DIFF_3(xml1, xml2, xml3, 0, out_diff_1, out_diff_2, out_merge);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1064,7 +920,7 @@ test_userord_list2(void **state)
|
|||
" </ul>\n"
|
||||
"</df>\n";
|
||||
|
||||
TEST_DIFF_3(xml1, xml2, xml3, out_diff_1, out_diff_2, out_merge);
|
||||
TEST_DIFF_3(xml1, xml2, xml3, 0, out_diff_1, out_diff_2, out_merge);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1176,7 +1032,7 @@ test_userord_list3(void **state)
|
|||
" </ul>\n"
|
||||
"</df>\n";
|
||||
|
||||
TEST_DIFF_3(xml1, xml2, xml3, out_diff_1, out_diff_2, out_merge);
|
||||
TEST_DIFF_3(xml1, xml2, xml3, 0, out_diff_1, out_diff_2, out_merge);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1302,7 +1158,7 @@ test_keyless_list(void **state)
|
|||
" </kl>\n"
|
||||
"</df>\n";
|
||||
|
||||
TEST_DIFF_3(xml1, xml2, xml3, out_diff_1, out_diff_2, out_merge);
|
||||
TEST_DIFF_3(xml1, xml2, xml3, 0, out_diff_1, out_diff_2, out_merge);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1349,7 +1205,7 @@ test_state_llist(void **state)
|
|||
" <kll yang:position=\"1\" yang:operation=\"create\">d</kll>\n"
|
||||
"</df>\n";
|
||||
|
||||
TEST_DIFF_3(xml1, xml2, xml3, out_diff_1, out_diff_2, out_merge);
|
||||
TEST_DIFF_3(xml1, xml2, xml3, 0, out_diff_1, out_diff_2, out_merge);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1435,6 +1291,89 @@ test_wd(void **state)
|
|||
lyd_free_all(diff2);
|
||||
}
|
||||
|
||||
static void
|
||||
test_metadata(void **state)
|
||||
{
|
||||
(void) state;
|
||||
const char *xml1 = "<df xmlns=\"urn:libyang:tests:defaults\" xmlns:df=\"urn:libyang:tests:defaults\">\n"
|
||||
" <list df:my-meta=\"val1\">\n"
|
||||
" <name>a</name>\n"
|
||||
" <value df:my-meta2=\"val2\">1</value>\n"
|
||||
" </list>\n"
|
||||
" <list>\n"
|
||||
" <name df:my-meta=\"val10\">b</name>\n"
|
||||
" <value df:my-meta=\"repeated\" df:my-meta=\"repeated\">2</value>\n"
|
||||
" </list>\n"
|
||||
"</df>\n";
|
||||
const char *xml2 = "<df xmlns=\"urn:libyang:tests:defaults\" xmlns:df=\"urn:libyang:tests:defaults\">\n"
|
||||
" <list>\n"
|
||||
" <name>b</name>\n"
|
||||
" <value df:my-meta=\"repeated\">2</value>\n"
|
||||
" </list>\n"
|
||||
" <list>\n"
|
||||
" <name df:my-meta2=\"val22\">c</name>\n"
|
||||
" <value df:my-meta2=\"val23\">3</value>\n"
|
||||
" </list>\n"
|
||||
"</df>\n";
|
||||
const char *xml3 = "<df xmlns=\"urn:libyang:tests:defaults\" xmlns:df=\"urn:libyang:tests:defaults\" df:my-meta=\"top\">\n"
|
||||
" <list>\n"
|
||||
" <name>b</name>\n"
|
||||
" <value df:my-meta=\"repeated\" df:my-meta=\"new\">2</value>\n"
|
||||
" </list>\n"
|
||||
" <list>\n"
|
||||
" <name df:my-meta=\"val22\">c</name>\n"
|
||||
" <value df:my-meta2=\"val23\">3</value>\n"
|
||||
" </list>\n"
|
||||
"</df>\n";
|
||||
|
||||
const char *out_diff_1 =
|
||||
"<df xmlns=\"urn:libyang:tests:defaults\" xmlns:yang=\"urn:ietf:params:xml:ns:yang:1\" yang:operation=\"none\">\n"
|
||||
" <list yang:operation=\"delete\" yang:meta-delete=\"defaults:my-meta=val1\">\n"
|
||||
" <name>a</name>\n"
|
||||
" <value yang:meta-delete=\"defaults:my-meta2=val2\">1</value>\n"
|
||||
" </list>\n"
|
||||
" <list>\n"
|
||||
" <name yang:meta-delete=\"defaults:my-meta=val10\">b</name>\n"
|
||||
" <value yang:orig-default=\"false\" yang:meta-delete=\"defaults:my-meta=repeated\">2</value>\n"
|
||||
" </list>\n"
|
||||
" <list yang:operation=\"create\">\n"
|
||||
" <name yang:meta-create=\"defaults:my-meta2=val22\">c</name>\n"
|
||||
" <value yang:meta-create=\"defaults:my-meta2=val23\">3</value>\n"
|
||||
" </list>\n"
|
||||
"</df>\n";
|
||||
const char *out_diff_2 =
|
||||
"<df xmlns=\"urn:libyang:tests:defaults\" xmlns:yang=\"urn:ietf:params:xml:ns:yang:1\" yang:operation=\"none\" "
|
||||
"yang:meta-create=\"defaults:my-meta=top\">\n"
|
||||
" <list>\n"
|
||||
" <name>b</name>\n"
|
||||
" <value yang:orig-default=\"false\" yang:meta-create=\"defaults:my-meta=new\">2</value>\n"
|
||||
" </list>\n"
|
||||
" <list>\n"
|
||||
" <name yang:meta-delete=\"defaults:my-meta2=val22\" yang:meta-create=\"defaults:my-meta=val22\">c</name>\n"
|
||||
" <value yang:operation=\"none\">3</value>\n"
|
||||
" </list>\n"
|
||||
"</df>\n";
|
||||
const char *out_merge =
|
||||
"<df xmlns=\"urn:libyang:tests:defaults\" xmlns:yang=\"urn:ietf:params:xml:ns:yang:1\" yang:operation=\"none\" "
|
||||
"yang:meta-create=\"defaults:my-meta=top\">\n"
|
||||
" <list yang:operation=\"delete\" yang:meta-delete=\"defaults:my-meta=val1\">\n"
|
||||
" <name>a</name>\n"
|
||||
" <value yang:meta-delete=\"defaults:my-meta2=val2\">1</value>\n"
|
||||
" </list>\n"
|
||||
" <list>\n"
|
||||
" <name yang:meta-delete=\"defaults:my-meta=val10\">b</name>\n"
|
||||
" <value yang:orig-default=\"false\" yang:meta-delete=\"defaults:my-meta=repeated\" "
|
||||
"yang:meta-create=\"defaults:my-meta=new\">2</value>\n"
|
||||
" </list>\n"
|
||||
" <list yang:operation=\"create\">\n"
|
||||
" <name yang:meta-create=\"defaults:my-meta=val22\">c</name>\n"
|
||||
" <value yang:meta-create=\"defaults:my-meta2=val23\">3</value>\n"
|
||||
" </list>\n"
|
||||
"</df>\n";
|
||||
|
||||
TEST_DIFF_3(xml1, xml2, xml3, LYD_DIFF_META, out_diff_1, out_diff_2, out_merge);
|
||||
}
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
|
@ -1457,6 +1396,7 @@ main(void)
|
|||
UTEST(test_keyless_list, setup),
|
||||
UTEST(test_state_llist, setup),
|
||||
UTEST(test_wd, setup),
|
||||
UTEST(test_metadata, setup),
|
||||
};
|
||||
|
||||
return cmocka_run_group_tests(tests, NULL, NULL);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue