@@ -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+
312382static void
313383test_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