All files / src/syntax zcl_abapgit_syntax_js.clas.testclasses.abap

100% Statements 188/188
100% Branches 18/18
100% Functions 17/17
100% Lines 188/188

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 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 1891x 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 14x 14x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 20x 20x 20x 20x 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 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x  
CLASS ltcl_syntax_js DEFINITION FINAL FOR TESTING
  DURATION SHORT
  RISK LEVEL HARMLESS.
 
  PRIVATE SECTION.
    DATA mo_cut TYPE REF TO zcl_abapgit_syntax_js.
    METHODS:
      setup,
      language_keywords FOR TESTING,
      values FOR TESTING,
      value_boundaries FOR TESTING,
      built_in_objects FOR TESTING,
      built_in_members FOR TESTING,
      case_sensitive FOR TESTING,
      identifier_boundaries FOR TESTING,
      quoted_strings FOR TESTING,
      escaped_quotes FOR TESTING,
      unterminated_string FOR TESTING,
      inline_comments FOR TESTING,
      multiline_comments FOR TESTING,
      instance_state FOR TESTING,
      template_literals FOR TESTING.
ENDCLASS.
 
 
CLASS ltcl_syntax_js IMPLEMENTATION.
 
  METHOD setup.
    CREATE OBJECT mo_cut.
  ENDMETHOD.
 
  METHOD language_keywords.
    DATA lt_keywords TYPE STANDARD TABLE OF string WITH DEFAULT KEY.
    DATA lv_keyword TYPE string.
    DATA lv_keywords TYPE string.
 
    lv_keywords = 'async|await|catch|class|const|debugger|enum|extends|finally|from|instanceof|' &&
                  'let|of|static|super|throw|try|typeof|using|yield'.
    SPLIT lv_keywords AT '|' INTO TABLE lt_keywords.
    LOOP AT lt_keywords INTO lv_keyword.
      cl_abap_unit_assert=>assert_equals(
        act = mo_cut->process_line( lv_keyword )
        exp = |<span class="keyword">{ lv_keyword }</span>| ).
    ENDLOOP.
  ENDMETHOD.
 
  METHOD values.
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( 'false true null void undefined NaN Infinity' )
      exp = |<span class="values">false</span> <span class="values">true</span> |
            && |<span class="values">null</span> <span class="values">void</span> |
            && |<span class="values">undefined</span> <span class="values">NaN</span> |
            && |<span class="values">Infinity</span>| ).
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( 'return void 0;' )
      exp = '<span class="keyword">return</span> <span class="values">void</span> 0;' ).
  ENDMETHOD.
 
  METHOD value_boundaries.
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( 'False TRUE Null Void Undefined nan infinity trueValue null_ $false' )
      exp = 'False TRUE Null Void Undefined nan infinity trueValue null_ $false' ).
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( '"false true null void undefined NaN Infinity"' )
      exp = '<span class="text">"false true null void undefined NaN Infinity"</span>' ).
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( '// false true null void undefined NaN Infinity' )
      exp = '<span class="comment">// false true null void undefined NaN Infinity</span>' ).
  ENDMETHOD.
 
  METHOD built_in_objects.
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( 'Array Promise Map Set Symbol BigInt Uint8Array JSON Function function' )
      exp = |<span class="variables">Array</span> <span class="variables">Promise</span> |
            && |<span class="variables">Map</span> <span class="variables">Set</span> |
            && |<span class="variables">Symbol</span> <span class="variables">BigInt</span> |
            && |<span class="variables">Uint8Array</span> <span class="variables">JSON</span> |
            && |<span class="variables">Function</span> <span class="keyword">function</span>| ).
  ENDMETHOD.
 
  METHOD built_in_members.
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( 'document.querySelector(item).innerHTML = parseInt(value);' )
      exp = |<span class="keyword">document</span>.<span class="keyword">querySelector</span>(item).|
            && |<span class="keyword">innerHTML</span> = <span class="keyword">parseInt</span>(|
            && |<span class="keyword">value</span>);| ).
  ENDMETHOD.
 
  METHOD case_sensitive.
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( 'CONST array promise ParseInt innerhtml math nan True' )
      exp = 'CONST array promise ParseInt innerhtml math nan True' ).
  ENDMETHOD.
 
  METHOD identifier_boundaries.
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( '$const const$ _return return_ const1 1const myPromise' )
      exp = '$const const$ _return return_ const1 1const myPromise' ).
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( 'value-return' )
      exp = |<span class="keyword">value</span>-<span class="keyword">return</span>| ).
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( 'anchor applet bytetostring fileupload layer unit' )
      exp = 'anchor applet bytetostring fileupload layer unit' ).
  ENDMETHOD.
 
  METHOD quoted_strings.
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( '"const // /*"; return' )
      exp = |<span class="text">"const // /*"</span>; <span class="keyword">return</span>| ).
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( '''Promise " //''; const' )
      exp = |<span class="text">'Promise " //'</span>; <span class="keyword">const</span>| ).
  ENDMETHOD.
 
  METHOD escaped_quotes.
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( '"a\" const"; return' )
      exp = '<span class="text">"a\" const"</span>; <span class="keyword">return</span>' ).
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( '"a\\"; return' )
      exp = '<span class="text">"a\\"</span>; <span class="keyword">return</span>' ).
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( '''a\'' const''; return' )
      exp = '<span class="text">''a\'' const''</span>; <span class="keyword">return</span>' ).
  ENDMETHOD.
 
  METHOD unterminated_string.
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( '"const // rest' )
      exp = '<span class="text">"const // rest</span>' ).
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( 'return' )
      exp = '<span class="keyword">return</span>' ).
  ENDMETHOD.
 
  METHOD inline_comments.
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( '/* first */ const /* second */ return // tail' )
      exp = |<span class="comment">/* first */</span> <span class="keyword">const</span> |
            && |<span class="comment">/* second */</span> <span class="keyword">return</span> |
            && |<span class="comment">// tail</span>| ).
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( '*/ const' )
      exp = '*/ <span class="keyword">const</span>' ).
  ENDMETHOD.
 
  METHOD multiline_comments.
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( 'const /* start' )
      exp = '<span class="keyword">const</span> <span class="comment">/* start</span>' ).
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( '"return" // still /* comment' )
      exp = '<span class="comment">"return" // still /* comment</span>' ).
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( 'end */ let' )
      exp = '<span class="comment">end */</span> <span class="keyword">let</span>' ).
  ENDMETHOD.
 
  METHOD instance_state.
    DATA lo_other TYPE REF TO zcl_abapgit_syntax_js.
    DATA lv_line TYPE string.
 
    lv_line = mo_cut->process_line( '/* start' ).
    CREATE OBJECT lo_other.
    cl_abap_unit_assert=>assert_equals(
      act = lo_other->process_line( 'const' )
      exp = '<span class="keyword">const</span>' ).
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( 'const' )
      exp = '<span class="comment">const</span>' ).
    cl_abap_unit_assert=>assert_equals(
      act = lv_line
      exp = '<span class="comment">/* start</span>' ).
  ENDMETHOD.
 
  METHOD template_literals.
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( '`const // start' )
      exp = '<span class="text">`const // start</span>' ).
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( 'Promise /* text */' )
      exp = '<span class="text">Promise /* text */</span>' ).
    cl_abap_unit_assert=>assert_equals(
      act = mo_cut->process_line( 'end\` text`; return' )
      exp = '<span class="text">end\` text`</span>; <span class="keyword">return</span>' ).
  ENDMETHOD.
ENDCLASS.