All files / src/objects zcl_abapgit_object_sfpf.clas.testclasses.abap

100% Statements 134/134
100% Branches 2/2
100% Functions 2/2
100% Lines 134/134

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 1351x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x  
CLASS ltcl_test_sort_contexts DEFINITION DEFERRED.
CLASS zcl_abapgit_object_sfpf DEFINITION LOCAL FRIENDS ltcl_test_sort_contexts.
 
 
CLASS ltcl_test_sort_contexts DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL.
 
  PRIVATE SECTION.
 
    METHODS basic FOR TESTING RAISING cx_static_check.
 
    METHODS parse
      IMPORTING
        iv_xml        TYPE string
      RETURNING
        VALUE(ri_doc) TYPE REF TO if_ixml_document.
 
    METHODS render
      IMPORTING
        ii_doc        TYPE REF TO if_ixml_document
      RETURNING
        VALUE(rv_xml) TYPE string.
ENDCLASS.
 
 
CLASS ltcl_test_sort_contexts IMPLEMENTATION.
 
  METHOD parse.
 
    DATA li_factory TYPE REF TO if_ixml_stream_factory.
    DATA li_istream TYPE REF TO if_ixml_istream.
    DATA li_parser  TYPE REF TO if_ixml_parser.
    DATA lv_subrc   TYPE i.
    DATA li_ixml    TYPE REF TO if_ixml.
 
    li_ixml = cl_ixml=>create( ).
    ri_doc = li_ixml->create_document( ).
 
    li_factory = li_ixml->create_stream_factory( ).
    li_istream = li_factory->create_istream_string( iv_xml ).
    li_parser = li_ixml->create_parser( stream_factory = li_factory
                                        istream        = li_istream
                                        document       = ri_doc ).
    li_parser->add_strip_space_element( ).
    lv_subrc = li_parser->parse( ).
    li_istream->close( ).
 
    cl_abap_unit_assert=>assert_equals(
      act = lv_subrc
      exp = 0 ).
 
  ENDMETHOD.
 
  METHOD render.
 
    DATA li_ostream  TYPE REF TO if_ixml_ostream.
    DATA li_renderer TYPE REF TO if_ixml_renderer.
    DATA li_factory  TYPE REF TO if_ixml_stream_factory.
    DATA li_ixml     TYPE REF TO if_ixml.
 
    li_ixml = cl_ixml=>create( ).
 
    li_factory = li_ixml->create_stream_factory( ).
    li_ostream = li_factory->create_ostream_cstring( rv_xml ).
    li_renderer = li_ixml->create_renderer(
      ostream  = li_ostream
      document = ii_doc ).
    li_renderer->render( ).
 
  ENDMETHOD.
 
  METHOD basic.
 
    DATA lv_xml     TYPE string.
    DATA lv_result  TYPE string.
    DATA li_xml_doc TYPE REF TO if_ixml_document.
 
    lv_xml =
      |<ROOT>| &&
      | <FPCONTEXTT>| &&
      |  <item>| &&
      |   <NAME>ZB</NAME>| &&
      |   <STATE>A</STATE>| &&
      |   <LANGUAGE>E</LANGUAGE>| &&
      |   <ID>1</ID>| &&
      |   <TEXT>fourth</TEXT>| &&
      |  </item>| &&
      |  <item>| &&
      |   <NAME>ZA</NAME>| &&
      |   <STATE>B</STATE>| &&
      |   <LANGUAGE>E</LANGUAGE>| &&
      |   <ID>1</ID>| &&
      |   <TEXT>third</TEXT>| &&
      |  </item>| &&
      |  <item>| &&
      |   <NAME>ZA</NAME>| &&
      |   <STATE>A</STATE>| &&
      |   <LANGUAGE>D</LANGUAGE>| &&
      |   <ID>1</ID>| &&
      |   <TEXT>second</TEXT>| &&
      |  </item>| &&
      |  <item>| &&
      |   <NAME>ZA</NAME>| &&
      |   <STATE>A</STATE>| &&
      |   <LANGUAGE>C</LANGUAGE>| &&
      |   <ID>2</ID>| &&
      |   <TEXT>id second</TEXT>| &&
      |  </item>| &&
      |  <item>| &&
      |   <NAME>ZA</NAME>| &&
      |   <STATE>A</STATE>| &&
      |   <LANGUAGE>C</LANGUAGE>| &&
      |   <ID>1</ID>| &&
      |   <TEXT>id first</TEXT>| &&
      |  </item>| &&
      | </FPCONTEXTT>| &&
      |</ROOT>|.
 
    li_xml_doc = parse( lv_xml ).
    zcl_abapgit_object_sfpf=>sort_contexts( li_xml_doc ).
    lv_result = render( li_xml_doc ).
 
    cl_abap_unit_assert=>assert_char_cp(
      act = lv_result
      exp = '*<FPCONTEXTT>' &&
            '<item><NAME>ZA</NAME><STATE>A</STATE><LANGUAGE>C</LANGUAGE><ID>1</ID><TEXT>id first</TEXT></item>' &&
            '<item><NAME>ZA</NAME><STATE>A</STATE><LANGUAGE>C</LANGUAGE><ID>2</ID><TEXT>id second</TEXT></item>' &&
            '<item><NAME>ZA</NAME><STATE>A</STATE><LANGUAGE>D</LANGUAGE><ID>1</ID><TEXT>second</TEXT></item>' &&
            '<item><NAME>ZA</NAME><STATE>B</STATE><LANGUAGE>E</LANGUAGE><ID>1</ID><TEXT>third</TEXT></item>' &&
            '<item><NAME>ZB</NAME><STATE>A</STATE><LANGUAGE>E</LANGUAGE><ID>1</ID><TEXT>fourth</TEXT></item>' &&
            '</FPCONTEXTT>*' ).
 
  ENDMETHOD.
 
ENDCLASS.