Skip to content

Commit e6ee035

Browse files
committed
api TEST new merge test
1 parent dad0a3c commit e6ee035

File tree

1 file changed

+74
-3
lines changed

1 file changed

+74
-3
lines changed

tests/api/test_tree_data_merge.c

Lines changed: 74 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,76 @@ test_merge4(void **state)
309309
free(printed);
310310
}
311311

312+
static void
313+
test_merge5(void **state)
314+
{
315+
struct state *st = (*state);
316+
const char *sch =
317+
"module merge {"
318+
"namespace \"http://test/merge\";"
319+
"prefix merge;"
320+
321+
"container inner1 {"
322+
"list b-list1 {"
323+
"key p1;"
324+
"leaf p1 {"
325+
"type uint8;"
326+
"}"
327+
"leaf p2 {"
328+
"type string;"
329+
"}"
330+
"leaf p3 {"
331+
"type boolean;"
332+
"default false;"
333+
"}"
334+
"}"
335+
"}"
336+
"}";
337+
338+
339+
const char *trg =
340+
"<inner1 xmlns=\"http://test/merge\">"
341+
"<b-list1>"
342+
"<p1>1</p1>"
343+
"<p2>a</p2>"
344+
"<p3>true</p3>"
345+
"</b-list1>"
346+
"</inner1>";
347+
const char *src =
348+
"<inner1 xmlns=\"http://test/merge\">"
349+
"<b-list1>"
350+
"<p1>1</p1>"
351+
"<p2>b</p2>"
352+
"</b-list1>"
353+
"</inner1>";
354+
const char *result =
355+
"<inner1 xmlns=\"http://test/merge\">"
356+
"<b-list1>"
357+
"<p1>1</p1>"
358+
"<p2>b</p2>"
359+
"<p3>true</p3>"
360+
"</b-list1>"
361+
"</inner1>";
362+
char *printed = NULL;
363+
364+
assert_ptr_not_equal(lys_parse_mem(st->ctx1, sch, LYS_IN_YANG), NULL);
365+
366+
st->source = lyd_parse_mem(st->ctx1, src, LYD_XML, LYD_OPT_CONFIG);
367+
assert_ptr_not_equal(st->source, NULL);
368+
369+
st->target = lyd_parse_mem(st->ctx1, trg, LYD_XML, LYD_OPT_CONFIG);
370+
assert_ptr_not_equal(st->target, NULL);
371+
372+
/* merge them */
373+
assert_int_equal(lyd_merge(st->target, st->source, LYD_OPT_EXPLICIT), 0);
374+
assert_int_equal(lyd_validate(&st->target, LYD_OPT_CONFIG, NULL), 0);
375+
376+
/* check the result */
377+
lyd_print_mem(&printed, st->target, LYD_XML, LYP_WITHSIBLINGS);
378+
assert_string_equal(printed, result);
379+
free(printed);
380+
}
381+
312382
static void
313383
test_merge_dflt1(void **state)
314384
{
@@ -546,21 +616,22 @@ test_merge_to_ctx_with_missing_schema(void **state)
546616
free(printed);
547617
}
548618

549-
550-
int main(void)
619+
int
620+
main(void)
551621
{
552622
const struct CMUnitTest tests[] = {
553623
cmocka_unit_test_setup_teardown(test_merge, setup_dflt, teardown_dflt),
554624
cmocka_unit_test_setup_teardown(test_merge2, setup_dflt, teardown_dflt),
555625
cmocka_unit_test_setup_teardown(test_merge3, setup_dflt, teardown_dflt),
556626
cmocka_unit_test_setup_teardown(test_merge4, setup_dflt, teardown_dflt),
627+
cmocka_unit_test_setup_teardown(test_merge5, setup_dflt, teardown_dflt),
557628
cmocka_unit_test_setup_teardown(test_merge_dflt1, setup_dflt, teardown_dflt),
558629
cmocka_unit_test_setup_teardown(test_merge_dflt2, setup_dflt, teardown_dflt),
559630
cmocka_unit_test_setup_teardown(test_merge_to_trgctx1, setup_mctx, teardown_mctx),
560631
cmocka_unit_test_setup_teardown(test_merge_to_trgctx2, setup_mctx, teardown_mctx),
561632
cmocka_unit_test_setup_teardown(test_merge_to_ctx, setup_mctx, teardown_mctx),
562633
cmocka_unit_test_setup_teardown(test_merge_to_ctx_with_missing_schema, setup_mctx, teardown_mctx),
563-
};
634+
};
564635

565636
return cmocka_run_group_tests(tests, NULL, NULL);
566637
}

0 commit comments

Comments
 (0)