@@ -565,6 +565,109 @@ test_nc_rpc_subscribe(void **state)
565565 nc_rpc_free (rpc );
566566}
567567
568+ /* function to check if values of getdata rpc are set correctly */
569+ void
570+ check_getdata (struct nc_rpc * rpc , char * datastore , const char * filter , const char * config_filter ,
571+ char * * origin_filter , int origin_filter_count , int negated_origin_filter , uint16_t max_depth ,
572+ int with_origin , NC_WD_MODE wd_mode )
573+ {
574+ assert_int_equal (nc_rpc_get_type (rpc ), NC_RPC_GETDATA );
575+ struct nc_rpc_getdata * rpc_getdata = (struct nc_rpc_getdata * )rpc ;
576+
577+ assert_int_equal (rpc_getdata -> type , NC_RPC_GETDATA );
578+ assert_string_equal (rpc_getdata -> datastore , datastore );
579+ assert_string_equal (rpc_getdata -> filter , filter );
580+ assert_string_equal (rpc_getdata -> config_filter , config_filter );
581+ assert_string_equal (* rpc_getdata -> origin_filter , * origin_filter );
582+ assert_int_equal (rpc_getdata -> origin_filter_count , origin_filter_count );
583+ assert_int_equal (rpc_getdata -> negated_origin_filter , negated_origin_filter );
584+ assert_int_equal (rpc_getdata -> max_depth , max_depth );
585+ assert_int_equal (rpc_getdata -> with_origin , with_origin );
586+ assert_int_equal (rpc_getdata -> wd_mode , wd_mode );
587+ }
588+
589+ static void
590+ test_nc_rpc_getdata (void * * state )
591+ {
592+ (void )state ;
593+ struct nc_rpc * rpc = NULL ;
594+
595+ /* create getdata rpc with NC_PARAMTYPE_CONST */
596+ char * origin_filters = "origin_filter" ;
597+ rpc = nc_rpc_getdata ("candidate" , "filter" , "true" , & origin_filters , 1 , 1 , 3 , 1 , NC_WD_UNKNOWN , NC_PARAMTYPE_CONST );
598+ assert_non_null (rpc );
599+ check_getdata (rpc , "candidate" , "filter" , "true" , & origin_filters , 1 , 1 , 3 , 1 , NC_WD_UNKNOWN );
600+ nc_rpc_free (rpc );
601+
602+ /* create getdata rpc with NC_PARAMTYPE_FREE */
603+ char * datastore = strdup ("running" );
604+ char * filter = strdup ("filter" );
605+ char * config_filter = strdup ("true" );
606+ char buf [20 ] = {0 };
607+ char * * origin_filter ;
608+ int origin_filter_count = 2 ;
609+
610+ origin_filter = calloc (origin_filter_count , sizeof * origin_filter );
611+ assert_non_null (origin_filter );
612+ for (int i = 0 ; i < origin_filter_count ; i ++ ) {
613+ snprintf (buf , sizeof (buf ) - 1 , "origin_filter%d" , i + 1 );
614+ origin_filter [i ] = strdup (buf );
615+ }
616+
617+ rpc = nc_rpc_getdata (datastore , filter , config_filter , origin_filter , origin_filter_count , 2 , 3 , 1 , NC_WD_EXPLICIT , NC_PARAMTYPE_FREE );
618+ assert_non_null (rpc );
619+ check_getdata (rpc , datastore , filter , config_filter , origin_filter , origin_filter_count , 2 , 3 , 1 , NC_WD_EXPLICIT );
620+ nc_rpc_free (rpc );
621+
622+ /* create getdata rpc with NC_PARAMTYPE_DUP_AND_FREE */
623+ char * origin_filter1 = "origin_filter1" ;
624+ rpc = nc_rpc_getdata ("startup" , "filter1" , "false" , & origin_filter1 , 1 , 0 , 3 , 1 , NC_WD_ALL , NC_PARAMTYPE_DUP_AND_FREE );
625+ assert_non_null (rpc );
626+ check_getdata (rpc , "startup" , "filter1" , "false" , & origin_filter1 , 1 , 0 , 3 , 1 , NC_WD_ALL );
627+ nc_rpc_free (rpc );
628+ }
629+
630+ /* function to check if values of editdata rpc are set correctly */
631+ void
632+ check_editdata (struct nc_rpc * rpc , char * datastore , NC_RPC_EDIT_DFLTOP default_op , const char * edit_content )
633+ {
634+ assert_int_equal (nc_rpc_get_type (rpc ), NC_RPC_EDITDATA );
635+ struct nc_rpc_editdata * rpc_editdata = (struct nc_rpc_editdata * )rpc ;
636+
637+ assert_int_equal (rpc_editdata -> type , NC_RPC_EDITDATA );
638+ assert_string_equal (rpc_editdata -> datastore , datastore );
639+ assert_int_equal (rpc_editdata -> default_op , default_op );
640+ assert_string_equal (rpc_editdata -> edit_cont , edit_content );
641+ }
642+
643+ static void
644+ test_nc_rpc_editdata (void * * state )
645+ {
646+ (void )state ;
647+ struct nc_rpc * rpc = NULL ;
648+
649+ /* create editdata rpc with NC_PARAMTYPE_CONST */
650+ rpc = nc_rpc_editdata ("candidate" , NC_RPC_EDIT_DFLTOP_UNKNOWN , "edit" , NC_PARAMTYPE_CONST );
651+ assert_non_null (rpc );
652+ check_editdata (rpc , "candidate" , NC_RPC_EDIT_DFLTOP_UNKNOWN , "edit" );
653+ nc_rpc_free (rpc );
654+
655+ /* create editdata rpc with NC_PARAMTYPE_FREE */
656+ char * datastore = strdup ("running" );
657+ char * edit_cont = strdup ("edit_data" );
658+
659+ rpc = nc_rpc_editdata (datastore , NC_RPC_EDIT_DFLTOP_MERGE , edit_cont , NC_PARAMTYPE_FREE );
660+ assert_non_null (rpc );
661+ check_editdata (rpc , datastore , NC_RPC_EDIT_DFLTOP_MERGE , edit_cont );
662+ nc_rpc_free (rpc );
663+
664+ /* create editdata rpc with NC_PARAMTYPE_DUP_AND_FREE */
665+ rpc = nc_rpc_editdata ("startup" , NC_RPC_EDIT_DFLTOP_REPLACE , "edit_cont" , NC_PARAMTYPE_DUP_AND_FREE );
666+ assert_non_null (rpc );
667+ check_editdata (rpc , "startup" , NC_RPC_EDIT_DFLTOP_REPLACE , "edit_cont" );
668+ nc_rpc_free (rpc );
669+ }
670+
568671int
569672main (void )
570673{
@@ -585,6 +688,8 @@ main(void)
585688 cmocka_unit_test_setup_teardown (test_nc_rpc_validate , setup_f , teardown_f ),
586689 cmocka_unit_test_setup_teardown (test_nc_rpc_getschema , setup_f , teardown_f ),
587690 cmocka_unit_test_setup_teardown (test_nc_rpc_subscribe , setup_f , teardown_f ),
691+ cmocka_unit_test_setup_teardown (test_nc_rpc_getdata , setup_f , teardown_f ),
692+ cmocka_unit_test_setup_teardown (test_nc_rpc_editdata , setup_f , teardown_f ),
588693 };
589694
590695 return cmocka_run_group_tests (tests , NULL , NULL );
0 commit comments