mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
118 lines
2.7 KiB
ABAP
118 lines
2.7 KiB
ABAP
CLASS ltcl_xml DEFINITION DEFERRED.
|
|
|
|
CLASS ltcl_xml_concrete DEFINITION FOR TESTING
|
|
FINAL
|
|
INHERITING FROM zcl_abapgit_xml
|
|
FRIENDS ltcl_xml.
|
|
ENDCLASS.
|
|
|
|
CLASS ltcl_xml_concrete IMPLEMENTATION.
|
|
ENDCLASS.
|
|
|
|
CLASS ltcl_xml DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|
|
|
PRIVATE SECTION.
|
|
|
|
METHODS setup.
|
|
|
|
METHODS:
|
|
space_leading_trailing FOR TESTING
|
|
RAISING zcx_abapgit_exception,
|
|
bad_xml_raises_exc FOR TESTING RAISING cx_static_check.
|
|
|
|
METHODS:
|
|
parse_xml
|
|
IMPORTING
|
|
iv_xml TYPE csequence
|
|
RAISING
|
|
zcx_abapgit_exception,
|
|
render_xml
|
|
IMPORTING
|
|
iv_name TYPE string
|
|
RETURNING
|
|
VALUE(rv_xml) TYPE string.
|
|
|
|
DATA mo_xml TYPE REF TO ltcl_xml_concrete.
|
|
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS ltcl_xml IMPLEMENTATION.
|
|
|
|
METHOD setup.
|
|
CREATE OBJECT mo_xml.
|
|
ENDMETHOD.
|
|
|
|
METHOD parse_xml.
|
|
|
|
DATA lv_xml TYPE string.
|
|
|
|
lv_xml = |<?xml version="1.0"?>|
|
|
&& |<{ mo_xml->c_abapgit_tag } { mo_xml->c_attr_version }="{ zif_abapgit_version=>c_xml_version }">|
|
|
&& iv_xml
|
|
&& |</{ mo_xml->c_abapgit_tag }>|.
|
|
|
|
mo_xml->parse( iv_xml = lv_xml ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD space_leading_trailing.
|
|
|
|
DATA: lv_from_xml TYPE string,
|
|
lv_to_xml TYPE string.
|
|
|
|
|
|
lv_from_xml = `<FOO> A </FOO>`.
|
|
|
|
parse_xml( lv_from_xml ).
|
|
|
|
lv_to_xml = render_xml( 'FOO' ).
|
|
|
|
cl_abap_unit_assert=>assert_equals(
|
|
act = lv_to_xml
|
|
exp = lv_from_xml ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD render_xml.
|
|
|
|
DATA: li_element TYPE REF TO if_ixml_element,
|
|
li_ostream TYPE REF TO if_ixml_ostream,
|
|
li_streamfactory TYPE REF TO if_ixml_stream_factory.
|
|
|
|
li_element = mo_xml->mi_xml_doc->find_from_path( |/{ mo_xml->c_abapgit_tag }/{ iv_name }| ).
|
|
|
|
li_streamfactory = mo_xml->mi_ixml->create_stream_factory( ).
|
|
|
|
li_ostream = li_streamfactory->create_ostream_cstring( rv_xml ).
|
|
|
|
li_element->render( ostream = li_ostream ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD bad_xml_raises_exc.
|
|
DATA: lv_xml TYPE string,
|
|
lo_error TYPE REF TO zcx_abapgit_exception,
|
|
lv_text TYPE string.
|
|
|
|
|
|
lv_xml = |<?xml version="1.0"?>|
|
|
&& |<{ mo_xml->c_abapgit_tag } { mo_xml->c_attr_version }="{ zif_abapgit_version=>c_xml_version }">|
|
|
&& |<open_tag>|
|
|
&& |</{ mo_xml->c_abapgit_tag }>|.
|
|
|
|
TRY.
|
|
mo_xml->parse( iv_xml = lv_xml ).
|
|
cl_abap_unit_assert=>fail( msg = 'Exception not raised' ).
|
|
|
|
CATCH zcx_abapgit_exception INTO lo_error.
|
|
lv_text = lo_error->get_text( ).
|
|
cl_abap_unit_assert=>assert_char_cp(
|
|
act = lv_text
|
|
exp = '*open_tag*' ).
|
|
ENDTRY.
|
|
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|