@@ -281,6 +281,39 @@ test_compare_diff_ctx(void **state)
281281 _UC -> in = NULL ;
282282}
283283
284+ static void
285+ test_dup_anydata_to_ctx (void * * state )
286+ {
287+ struct ly_ctx * ctx1 = NULL , * ctx2 = NULL ;
288+ struct lyd_node * tree = NULL , * dup = NULL ;
289+ const char * schema ;
290+ const char * data ;
291+
292+ (void )state ;
293+
294+ schema = "module c {yang-version 1.1; namespace \"urn:tests:c\"; prefix c;"
295+ "container root {anydata payload;}}" ;
296+ data = "<root xmlns=\"urn:tests:c\">"
297+ "<payload><unknown xmlns=\"urn:unknown:c\" xmlns:x=\"urn:x\" x:attr=\"1\">"
298+ "<child>text</child></unknown></payload></root>" ;
299+
300+ assert_int_equal (LY_SUCCESS , ly_ctx_new (TESTS_SRC "/../modules" , 0 , & ctx1 ));
301+ assert_int_equal (LY_SUCCESS , ly_ctx_new (TESTS_SRC "/../modules" , 0 , & ctx2 ));
302+ assert_int_equal (LY_SUCCESS , lys_parse_mem (ctx1 , schema , LYS_IN_YANG , NULL ));
303+ assert_int_equal (LY_SUCCESS , lys_parse_mem (ctx2 , schema , LYS_IN_YANG , NULL ));
304+
305+ assert_int_equal (LY_SUCCESS , lyd_parse_data_mem (ctx1 , data , LYD_XML , 0 , LYD_VALIDATE_PRESENT , & tree ));
306+ assert_int_equal (LY_SUCCESS , lyd_dup_siblings_to_ctx (tree , ctx2 , NULL , LYD_DUP_RECURSIVE | LYD_DUP_WITH_FLAGS , & dup ));
307+
308+ lyd_free_all (tree );
309+ ly_ctx_destroy (ctx1 );
310+
311+ assert_int_equal (LY_SUCCESS , lyd_trim_xpath (& dup , "//*" , NULL ));
312+
313+ lyd_free_all (dup );
314+ ly_ctx_destroy (ctx2 );
315+ }
316+
284317static void
285318test_dup (void * * state )
286319{
@@ -836,6 +869,7 @@ main(void)
836869 const struct CMUnitTest tests [] = {
837870 UTEST (test_compare , setup ),
838871 UTEST (test_compare_diff_ctx , setup ),
872+ UTEST (test_dup_anydata_to_ctx ),
839873 UTEST (test_dup , setup ),
840874 UTEST (test_target , setup ),
841875 UTEST (test_list_pos , setup ),
0 commit comments