CLASS ltcl_xml DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PUBLIC SECTION. METHODS: up FOR TESTING RAISING zcx_abapgit_exception, empty FOR TESTING RAISING zcx_abapgit_exception, input FOR TESTING RAISING zcx_abapgit_exception, read_intf FOR TESTING RAISING zcx_abapgit_exception, down FOR TESTING RAISING zcx_abapgit_exception. TYPES: BEGIN OF ty_old, foo TYPE i, bar TYPE c LENGTH 1, END OF ty_old. TYPES: BEGIN OF ty_new, foo TYPE i, bar TYPE c LENGTH 1, moo TYPE f, END OF ty_new. ENDCLASS. CLASS ltcl_xml IMPLEMENTATION. METHOD input. DATA lv_xml TYPE string. DATA lo_input TYPE REF TO zcl_abapgit_xml_input. DATA ls_data TYPE ty_old. lv_xml = |\n| && |\n| && | \n| && | \n| && | \n| && | 2\n| && | \n| && | \n| && | \n| && ||. CREATE OBJECT lo_input EXPORTING iv_xml = lv_xml. lo_input->zif_abapgit_xml_input~read( EXPORTING iv_name = 'DATA' CHANGING cg_data = ls_data ). cl_abap_unit_assert=>assert_equals( act = ls_data-foo exp = 2 ). ENDMETHOD. METHOD empty. DATA: ls_old TYPE ty_old, ls_new TYPE ty_new, lv_xml TYPE string, lo_input TYPE REF TO zcl_abapgit_xml_input, lo_output TYPE REF TO zcl_abapgit_xml_output. CLEAR ls_old. CREATE OBJECT lo_output. lo_output->zif_abapgit_xml_output~add( iv_name = 'DATA' ig_data = ls_old ). lv_xml = lo_output->zif_abapgit_xml_output~render( ). CREATE OBJECT lo_input EXPORTING iv_xml = lv_xml. lo_input->zif_abapgit_xml_input~read( EXPORTING iv_name = 'DATA' CHANGING cg_data = ls_new ). cl_abap_unit_assert=>assert_equals( act = ls_new-foo exp = ls_old-foo ). cl_abap_unit_assert=>assert_equals( act = ls_new-bar exp = ls_old-bar ). ENDMETHOD. METHOD up. DATA: ls_old TYPE ty_old, ls_new TYPE ty_new, lv_xml TYPE string, lo_input TYPE REF TO zcl_abapgit_xml_input, lo_output TYPE REF TO zcl_abapgit_xml_output. ls_old-foo = 2. ls_old-bar = 'A'. CREATE OBJECT lo_output. lo_output->zif_abapgit_xml_output~add( iv_name = 'DATA' ig_data = ls_old ). lv_xml = lo_output->zif_abapgit_xml_output~render( ). CREATE OBJECT lo_input EXPORTING iv_xml = lv_xml. lo_input->zif_abapgit_xml_input~read( EXPORTING iv_name = 'DATA' CHANGING cg_data = ls_new ). cl_abap_unit_assert=>assert_equals( act = ls_new-foo exp = ls_old-foo ). cl_abap_unit_assert=>assert_equals( act = ls_new-bar exp = ls_old-bar ). ENDMETHOD. METHOD down. DATA: ls_old TYPE ty_old, ls_new TYPE ty_new, lv_xml TYPE string, lo_input TYPE REF TO zcl_abapgit_xml_input, lo_output TYPE REF TO zcl_abapgit_xml_output. ls_new-foo = 2. ls_new-bar = 'A'. ls_new-moo = 5. CREATE OBJECT lo_output. lo_output->zif_abapgit_xml_output~add( iv_name = 'DATA' ig_data = ls_new ). lv_xml = lo_output->zif_abapgit_xml_output~render( ). CREATE OBJECT lo_input EXPORTING iv_xml = lv_xml. lo_input->zif_abapgit_xml_input~read( EXPORTING iv_name = 'DATA' CHANGING cg_data = ls_old ). cl_abap_unit_assert=>assert_equals( act = ls_old-foo exp = ls_new-foo ). cl_abap_unit_assert=>assert_equals( act = ls_old-bar exp = ls_new-bar ). ENDMETHOD. METHOD read_intf. DATA ls_vseointerf TYPE vseointerf. DATA lv_xml TYPE string. DATA lo_input TYPE REF TO zcl_abapgit_xml_input. lv_xml = |\n| && |\n| && | \n| && | \n| && | \n| && | ZIF_ABAPGIT_UNIT_TEST\n| && | E\n| && | test\n| && | 2\n| && | 1\n| && | X\n| && | \n| && | \n| && | \n| && ||. CREATE OBJECT lo_input EXPORTING iv_xml = lv_xml. lo_input->zif_abapgit_xml_input~read( EXPORTING iv_name = 'VSEOINTERF' CHANGING cg_data = ls_vseointerf ). cl_abap_unit_assert=>assert_equals( act = ls_vseointerf-langu exp = 'E' ). cl_abap_unit_assert=>assert_equals( act = ls_vseointerf-descript exp = 'test' ). ENDMETHOD. ENDCLASS.