abapGit/src/syntax/zcl_abapgit_syntax_abap.clas.testclasses.abap
Lars Hvam 704198f521
unit testing test (#4345)
* update deps

* update deps

* remove CHAR01 usages

* update deps

* update deps

* update deps

* all unit tests in syntax now running!

* update deps

* update deps

* update deps

* enable additional exception unit tests

* zcl_abapgit_string_map running

* upd

* login manager running

* update deps, add progress clas

* upd

* update deps

* fix whitespace

* update deps

* upd

* update deps

* update deps

* update deps

* use cl_abap newline

* upd

* run more

* sort

* update deps

* add intf

* update deps

* upd

* add zcl_abapgit_exit

* some xml interfaces

* zcl_abapgit_version running
2020-12-27 18:00:59 +01:00

896 lines
29 KiB
ABAP

CLASS ltcl_abapgit_syntax_abap DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
DATA:
mo_cut TYPE REF TO zcl_abapgit_syntax_abap.
METHODS:
setup,
report_header FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_abapgit_syntax_abap IMPLEMENTATION.
METHOD setup.
CREATE OBJECT mo_cut.
ENDMETHOD.
METHOD report_header.
DATA lv_act TYPE string.
lv_act = mo_cut->process_line( |REPORT zfoo.| ).
cl_abap_unit_assert=>assert_equals(
exp = |<span class="keyword">REPORT</span> zfoo.|
act = lv_act ).
ENDMETHOD.
ENDCLASS.
CLASS ltcl_syntax_basic_logic DEFINITION DEFERRED.
CLASS zcl_abapgit_syntax_abap DEFINITION LOCAL FRIENDS ltcl_syntax_basic_logic.
*----------------------------------------------------------------------*
* CLASS ltcl_syntax_basic_logic DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS ltcl_syntax_basic_logic DEFINITION FINAL FOR TESTING RISK LEVEL HARMLESS
DURATION SHORT.
PRIVATE SECTION.
DATA mo_syntax_highlighter TYPE REF TO zcl_abapgit_syntax_abap.
METHODS:
setup,
process_line FOR TESTING,
format_line FOR TESTING,
apply_style FOR TESTING.
ENDCLASS.
*----------------------------------------------------------------------*
* CLASS ltcl_syntax_highlighter IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS ltcl_syntax_basic_logic IMPLEMENTATION.
METHOD setup.
CREATE OBJECT mo_syntax_highlighter.
ENDMETHOD.
METHOD format_line.
DATA:
lv_line TYPE string,
lv_line_act TYPE string,
lv_line_exp TYPE string.
lv_line = 'call function ''FM_NAME''. " Commented'.
lv_line_exp =
'<span class="keyword">call</span>' &&
' <span class="keyword">function</span>' &&
' <span class="text">&#39;FM_NAME&#39;</span>.' &&
' <span class="comment">&quot; Commented</span>'.
lv_line_act = mo_syntax_highlighter->process_line( lv_line ).
cl_abap_unit_assert=>assert_equals( exp = lv_line_exp
act = lv_line_act
msg = |Error during formating: { lv_line }| ).
ENDMETHOD.
METHOD apply_style.
DATA lv_line_act TYPE string.
" Call the method and compare results
lv_line_act = mo_syntax_highlighter->apply_style(
iv_line = 'CALL FUNCTION'
iv_class = zcl_abapgit_syntax_abap=>c_css-keyword ).
cl_abap_unit_assert=>assert_equals(
act = lv_line_act
exp = '<span class="keyword">CALL FUNCTION</span>'
msg = 'Failure during applying of style.' ).
ENDMETHOD.
METHOD process_line.
DATA lv_line_act TYPE string.
" Call the method with empty parameter and compare results
lv_line_act = mo_syntax_highlighter->process_line( '' ).
cl_abap_unit_assert=>assert_equals(
act = lv_line_act
exp = ''
msg = 'Failure in method process_line.' ).
" Call the method with non-empty line and compare results
lv_line_act = mo_syntax_highlighter->process_line( '* CALL FUNCTION' ).
cl_abap_unit_assert=>assert_equals(
act = lv_line_act
exp = '<span class="comment">* CALL FUNCTION</span>'
msg = 'Failure in method process_line.' ).
ENDMETHOD.
ENDCLASS.
CLASS ltcl_syntax_cases DEFINITION DEFERRED.
CLASS zcl_abapgit_syntax_abap DEFINITION LOCAL FRIENDS ltcl_syntax_cases.
*----------------------------------------------------------------------*
* CLASS ltcl_syntax_cases definition
*----------------------------------------------------------------------*
CLASS ltcl_syntax_cases DEFINITION FINAL FOR TESTING RISK LEVEL HARMLESS
DURATION SHORT.
PRIVATE SECTION.
DATA:
mt_after_parse TYPE zcl_abapgit_syntax_abap=>ty_match_tt,
mt_after_order TYPE zcl_abapgit_syntax_abap=>ty_match_tt,
mt_after_extend TYPE zcl_abapgit_syntax_abap=>ty_match_tt.
METHODS:
do_test IMPORTING iv_line TYPE string
iv_filename TYPE string,
generate_parse IMPORTING iv_token TYPE c
iv_offset TYPE i
iv_length TYPE i,
generate_order IMPORTING iv_token TYPE c
iv_offset TYPE i
iv_length TYPE i
iv_text_tag TYPE string,
generate_extend IMPORTING iv_token TYPE c
iv_offset TYPE i
iv_length TYPE i
iv_text_tag TYPE string,
test_abap_01 FOR TESTING,
test_abap_02 FOR TESTING,
test_abap_03 FOR TESTING,
test_abap_04 FOR TESTING,
test_abap_05 FOR TESTING,
test_abap_06 FOR TESTING,
test_abap_07 FOR TESTING,
test_abap_08 FOR TESTING.
ENDCLASS.
*----------------------------------------------------------------------*
* CLASS ltcl_syntax_cases IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS ltcl_syntax_cases IMPLEMENTATION.
METHOD do_test.
DATA: lt_matches_act TYPE zcl_abapgit_syntax_abap=>ty_match_tt,
ls_match LIKE LINE OF lt_matches_act,
lv_offs TYPE i,
lo_syntax TYPE REF TO zcl_abapgit_syntax_abap.
CREATE OBJECT lo_syntax.
lt_matches_act = lo_syntax->parse_line( iv_line ).
SORT lt_matches_act BY offset.
cl_abap_unit_assert=>assert_equals( exp = mt_after_parse
act = lt_matches_act
msg = |Error during parsing: { iv_line }| ).
lo_syntax->order_matches( EXPORTING iv_line = iv_line
CHANGING ct_matches = lt_matches_act ).
cl_abap_unit_assert=>assert_equals( exp = mt_after_order
act = lt_matches_act
msg = |Error during ordering: { iv_line }| ).
lo_syntax->extend_matches(
EXPORTING
iv_line = iv_line
CHANGING
ct_matches = lt_matches_act ).
cl_abap_unit_assert=>assert_equals( exp = mt_after_extend
act = lt_matches_act
msg = |Error during extending: { iv_line }| ).
" Check consistency
lv_offs = 0.
LOOP AT lt_matches_act INTO ls_match.
IF ls_match-offset <> lv_offs.
cl_abap_unit_assert=>assert_equals( exp = lv_offs
act = ls_match-offset
msg = | Error during consistency check: { sy-tabix }| ).
ENDIF.
lv_offs = lv_offs + ls_match-length.
ENDLOOP.
ENDMETHOD.
METHOD generate_parse.
DATA ls_match TYPE zcl_abapgit_syntax_abap=>ty_match.
ls_match-token = iv_token.
ls_match-offset = iv_offset.
ls_match-length = iv_length.
APPEND ls_match TO mt_after_parse.
ENDMETHOD.
METHOD generate_order.
DATA ls_match TYPE zcl_abapgit_syntax_abap=>ty_match.
ls_match-token = iv_token.
ls_match-offset = iv_offset.
ls_match-length = iv_length.
ls_match-text_tag = iv_text_tag.
APPEND ls_match TO mt_after_order.
ENDMETHOD.
METHOD generate_extend.
DATA ls_match TYPE zcl_abapgit_syntax_abap=>ty_match.
ls_match-token = iv_token.
ls_match-offset = iv_offset.
ls_match-length = iv_length.
ls_match-text_tag = iv_text_tag.
APPEND ls_match TO mt_after_extend.
ENDMETHOD.
******************************************************
* Test parsing and ordering of comments *
******************************************************
METHOD test_abap_01.
DATA lv_line TYPE string.
lv_line = '* commented out line with key word data'.
" Generate table with expected values after parsing
generate_parse( iv_token = 'C'
iv_offset = 0
iv_length = 1 ).
generate_parse( iv_token = 'K'
iv_offset = 12
iv_length = 3 ).
generate_parse( iv_token = 'K'
iv_offset = 16
iv_length = 4 ).
generate_parse( iv_token = 'K'
iv_offset = 21
iv_length = 4 ).
generate_parse( iv_token = 'K'
iv_offset = 26
iv_length = 3 ).
generate_parse( iv_token = 'K'
iv_offset = 30
iv_length = 4 ).
generate_parse( iv_token = 'K'
iv_offset = 35
iv_length = 4 ).
" Generate table with expected values after ordering
generate_order( iv_token = 'C'
iv_offset = 0
iv_length = 39
iv_text_tag = '' ).
" Generate table with expected values after ordering
generate_extend( iv_token = 'C'
iv_offset = 0
iv_length = 39
iv_text_tag = '' ).
do_test( iv_line = lv_line
iv_filename = '*.abap' ).
ENDMETHOD.
******************************************************
* Test parsing and ordering of remainder of string *
******************************************************
METHOD test_abap_02.
DATA lv_line TYPE string.
lv_line = 'data: lv_var_name type string.'.
" Generate table with expected values after parsing
generate_parse( iv_token = 'K'
iv_offset = 0
iv_length = 4 ).
generate_parse( iv_token = 'K'
iv_offset = 18
iv_length = 4 ).
generate_parse( iv_token = 'K'
iv_offset = 23
iv_length = 6 ).
" Generate table with expected values after ordering
generate_order( iv_token = 'K'
iv_offset = 0
iv_length = 4
iv_text_tag = '' ).
generate_order( iv_token = 'K'
iv_offset = 18
iv_length = 4
iv_text_tag = '' ).
generate_order( iv_token = 'K'
iv_offset = 23
iv_length = 6
iv_text_tag = '' ).
" Generate table with expected values after extending
generate_extend( iv_token = 'K'
iv_offset = 0
iv_length = 4
iv_text_tag = '' ).
generate_extend( iv_token = '.'
iv_offset = 4
iv_length = 14
iv_text_tag = '' ).
generate_extend( iv_token = 'K'
iv_offset = 18
iv_length = 4
iv_text_tag = '' ).
generate_extend( iv_token = '.'
iv_offset = 22
iv_length = 1
iv_text_tag = '' ).
generate_extend( iv_token = 'K'
iv_offset = 23
iv_length = 6
iv_text_tag = '' ).
generate_extend( iv_token = '.'
iv_offset = 29
iv_length = 1
iv_text_tag = '' ).
do_test( iv_line = lv_line
iv_filename = '*.abap' ).
ENDMETHOD.
******************************************************
* Test parsing and ordering of key words & texts *
******************************************************
METHOD test_abap_03.
DATA lv_line TYPE string.
lv_line = 'call function ''FM_NAME''. " Commented'.
" Generate table with expected values after parsing
generate_parse( iv_token = 'K'
iv_offset = 0
iv_length = 4 ).
generate_parse( iv_token = 'K'
iv_offset = 5
iv_length = 8 ).
generate_parse( iv_token = 'T'
iv_offset = 14
iv_length = 1 ).
generate_parse( iv_token = 'T'
iv_offset = 22
iv_length = 1 ).
generate_parse( iv_token = 'C'
iv_offset = 25
iv_length = 1 ).
" Generate table with expected values after ordering
generate_order( iv_token = 'K'
iv_offset = 0
iv_length = 4
iv_text_tag = '' ).
generate_order( iv_token = 'K'
iv_offset = 5
iv_length = 8
iv_text_tag = '' ).
generate_order( iv_token = 'T'
iv_offset = 14
iv_length = 9
iv_text_tag = '''' ).
generate_order( iv_token = 'C'
iv_offset = 25
iv_length = 11
iv_text_tag = '' ).
" Generate table with expected values after extending
generate_extend( iv_token = 'K'
iv_offset = 0
iv_length = 4
iv_text_tag = '' ).
generate_extend( iv_token = '.'
iv_offset = 4
iv_length = 1
iv_text_tag = '' ).
generate_extend( iv_token = 'K'
iv_offset = 5
iv_length = 8
iv_text_tag = '' ).
generate_extend( iv_token = '.'
iv_offset = 13
iv_length = 1
iv_text_tag = '' ).
generate_extend( iv_token = 'T'
iv_offset = 14
iv_length = 9
iv_text_tag = '''' ).
generate_extend( iv_token = '.'
iv_offset = 23
iv_length = 2
iv_text_tag = '' ).
generate_extend( iv_token = 'C'
iv_offset = 25
iv_length = 11
iv_text_tag = '' ).
do_test( iv_line = lv_line
iv_filename = '*.abap' ).
ENDMETHOD.
******************************************************
* Test parsing and ordering of key words in texts *
******************************************************
METHOD test_abap_04.
DATA lv_line TYPE string.
lv_line = 'constants: lc_var type string value ''simpletext data simpletext''.'.
" Generate table with expected values after parsing
generate_parse( iv_token = 'K'
iv_offset = 0
iv_length = 9 ).
generate_parse( iv_token = 'K'
iv_offset = 18
iv_length = 4 ).
generate_parse( iv_token = 'K'
iv_offset = 23
iv_length = 6 ).
generate_parse( iv_token = 'K'
iv_offset = 30
iv_length = 5 ).
generate_parse( iv_token = 'T'
iv_offset = 36
iv_length = 1 ).
generate_parse( iv_token = 'K'
iv_offset = 48
iv_length = 4 ).
generate_parse( iv_token = 'T'
iv_offset = 63
iv_length = 1 ).
" Generate table with expected values after ordering
generate_order( iv_token = 'K'
iv_offset = 0
iv_length = 9
iv_text_tag = '' ).
generate_order( iv_token = 'K'
iv_offset = 18
iv_length = 4
iv_text_tag = '' ).
generate_order( iv_token = 'K'
iv_offset = 23
iv_length = 6
iv_text_tag = '' ).
generate_order( iv_token = 'K'
iv_offset = 30
iv_length = 5
iv_text_tag = '' ).
generate_order( iv_token = 'T'
iv_offset = 36
iv_length = 28
iv_text_tag = '''' ).
" Generate table with expected values after ordering
generate_extend( iv_token = 'K'
iv_offset = 0
iv_length = 9
iv_text_tag = '' ).
generate_extend( iv_token = '.'
iv_offset = 9
iv_length = 9
iv_text_tag = '' ).
generate_extend( iv_token = 'K'
iv_offset = 18
iv_length = 4
iv_text_tag = '' ).
generate_extend( iv_token = '.'
iv_offset = 22
iv_length = 1
iv_text_tag = '' ).
generate_extend( iv_token = 'K'
iv_offset = 23
iv_length = 6
iv_text_tag = '' ).
generate_extend( iv_token = '.'
iv_offset = 29
iv_length = 1
iv_text_tag = '' ).
generate_extend( iv_token = 'K'
iv_offset = 30
iv_length = 5
iv_text_tag = '' ).
generate_extend( iv_token = '.'
iv_offset = 35
iv_length = 1
iv_text_tag = '' ).
generate_extend( iv_token = 'T'
iv_offset = 36
iv_length = 28
iv_text_tag = '''' ).
generate_extend( iv_token = '.'
iv_offset = 64
iv_length = 1
iv_text_tag = '' ).
do_test( iv_line = lv_line
iv_filename = '*.abap' ).
ENDMETHOD.
******************************************************
* Test parsing and ordering texts in curly brackets *
******************************************************
METHOD test_abap_05.
DATA lv_line TYPE string.
lv_line = 'a = |{ b }={ c }|.'.
" Generate table with expected values after parsing
generate_parse( iv_token = 'T'
iv_offset = 4
iv_length = 1 ).
generate_parse( iv_token = 'T'
iv_offset = 5
iv_length = 1 ).
generate_parse( iv_token = 'K'
iv_offset = 7
iv_length = 1 ).
generate_parse( iv_token = 'T'
iv_offset = 9
iv_length = 1 ).
generate_parse( iv_token = 'T'
iv_offset = 11
iv_length = 1 ).
generate_parse( iv_token = 'K'
iv_offset = 13
iv_length = 1 ).
generate_parse( iv_token = 'T'
iv_offset = 15
iv_length = 1 ).
generate_parse( iv_token = 'T'
iv_offset = 16
iv_length = 1 ).
" Generate table with expected values after ordering
generate_order( iv_token = 'T'
iv_offset = 4
iv_length = 1
iv_text_tag = '|' ).
generate_order( iv_token = 'K'
iv_offset = 7
iv_length = 1
iv_text_tag = '' ).
generate_order( iv_token = 'T'
iv_offset = 10
iv_length = 1
iv_text_tag = '}' ).
generate_order( iv_token = 'K'
iv_offset = 13
iv_length = 1
iv_text_tag = '' ).
generate_order( iv_token = 'T'
iv_offset = 16
iv_length = 1
iv_text_tag = '}' ).
" Generate table with expected values after extending
generate_extend( iv_token = '.'
iv_offset = 0
iv_length = 4
iv_text_tag = '' ).
generate_extend( iv_token = 'T'
iv_offset = 4
iv_length = 1
iv_text_tag = '|' ).
generate_extend( iv_token = '.'
iv_offset = 5
iv_length = 2
iv_text_tag = '' ).
generate_extend( iv_token = 'K'
iv_offset = 7
iv_length = 1
iv_text_tag = '' ).
generate_extend( iv_token = '.'
iv_offset = 8
iv_length = 2
iv_text_tag = '' ).
generate_extend( iv_token = 'T'
iv_offset = 10
iv_length = 1
iv_text_tag = '}' ).
generate_extend( iv_token = '.'
iv_offset = 11
iv_length = 2
iv_text_tag = '' ).
generate_extend( iv_token = 'K'
iv_offset = 13
iv_length = 1
iv_text_tag = '' ).
generate_extend( iv_token = '.'
iv_offset = 14
iv_length = 2
iv_text_tag = '' ).
generate_extend( iv_token = 'T'
iv_offset = 16
iv_length = 1
iv_text_tag = '}' ).
generate_extend( iv_token = '.'
iv_offset = 17
iv_length = 1
iv_text_tag = '' ).
do_test( iv_line = lv_line
iv_filename = '*.abap' ).
ENDMETHOD.
******************************************************
* Test parsing and ordering of texts *
******************************************************
METHOD test_abap_06.
DATA lv_line TYPE string.
lv_line = 'lv_line = lc_constant && |XYZ { ''ab'' && |ac{ ''UU'' }| }|'.
" Generate table with expected values after parsing
generate_parse( iv_token = 'K'
iv_offset = 22
iv_length = 2 ).
generate_parse( iv_token = 'T'
iv_offset = 25
iv_length = 1 ).
generate_parse( iv_token = 'T'
iv_offset = 30
iv_length = 1 ).
generate_parse( iv_token = 'T'
iv_offset = 32
iv_length = 1 ).
generate_parse( iv_token = 'T'
iv_offset = 35
iv_length = 1 ).
generate_parse( iv_token = 'K'
iv_offset = 37
iv_length = 2 ).
generate_parse( iv_token = 'T'
iv_offset = 40
iv_length = 1 ).
generate_parse( iv_token = 'T'
iv_offset = 43
iv_length = 1 ).
generate_parse( iv_token = 'T'
iv_offset = 45
iv_length = 1 ).
generate_parse( iv_token = 'T'
iv_offset = 48
iv_length = 1 ).
generate_parse( iv_token = 'T'
iv_offset = 50
iv_length = 1 ).
generate_parse( iv_token = 'T'
iv_offset = 51
iv_length = 1 ).
generate_parse( iv_token = 'T'
iv_offset = 53
iv_length = 1 ).
generate_parse( iv_token = 'T'
iv_offset = 54
iv_length = 1 ).
" Generate table with expected values after ordering
generate_order( iv_token = 'K'
iv_offset = 22
iv_length = 2
iv_text_tag = '' ).
generate_order( iv_token = 'T'
iv_offset = 25
iv_length = 5
iv_text_tag = '|' ).
generate_order( iv_token = 'T'
iv_offset = 32
iv_length = 4
iv_text_tag = '''' ).
generate_order( iv_token = 'K'
iv_offset = 37
iv_length = 2
iv_text_tag = '' ).
generate_order( iv_token = 'T'
iv_offset = 40
iv_length = 3
iv_text_tag = '|' ).
generate_order( iv_token = 'T'
iv_offset = 45
iv_length = 4
iv_text_tag = '''' ).
generate_order( iv_token = 'T'
iv_offset = 51
iv_length = 1
iv_text_tag = '}' ).
generate_order( iv_token = 'T'
iv_offset = 54
iv_length = 1
iv_text_tag = '}' ).
" Generate table with expected values after extending
generate_extend( iv_token = '.'
iv_offset = 00
iv_length = 22
iv_text_tag = '' ).
generate_extend( iv_token = 'K'
iv_offset = 22
iv_length = 2
iv_text_tag = '' ).
generate_extend( iv_token = '.'
iv_offset = 24
iv_length = 1
iv_text_tag = '' ).
generate_extend( iv_token = 'T'
iv_offset = 25
iv_length = 5
iv_text_tag = '|' ).
generate_extend( iv_token = '.'
iv_offset = 30
iv_length = 2
iv_text_tag = '' ).
generate_extend( iv_token = 'T'
iv_offset = 32
iv_length = 4
iv_text_tag = '''' ).
generate_extend( iv_token = '.'
iv_offset = 36
iv_length = 1
iv_text_tag = '' ).
generate_extend( iv_token = 'K'
iv_offset = 37
iv_length = 2
iv_text_tag = '' ).
generate_extend( iv_token = '.'
iv_offset = 39
iv_length = 1
iv_text_tag = '' ).
generate_extend( iv_token = 'T'
iv_offset = 40
iv_length = 3
iv_text_tag = '|' ).
generate_extend( iv_token = '.'
iv_offset = 43
iv_length = 2
iv_text_tag = '' ).
generate_extend( iv_token = 'T'
iv_offset = 45
iv_length = 4
iv_text_tag = '''' ).
generate_extend( iv_token = '.'
iv_offset = 49
iv_length = 2
iv_text_tag = '' ).
generate_extend( iv_token = 'T'
iv_offset = 51
iv_length = 1
iv_text_tag = '}' ).
generate_extend( iv_token = '.'
iv_offset = 52
iv_length = 2
iv_text_tag = '' ).
generate_extend( iv_token = 'T'
iv_offset = 54
iv_length = 1
iv_text_tag = '}' ).
do_test( iv_line = lv_line
iv_filename = '*.abap' ).
ENDMETHOD.
********************************************************
* Check that '*' in select statement is not a match *
********************************************************
METHOD test_abap_07.
DATA lv_line TYPE string.
lv_line = 'SELECT * FROM foo'.
" Generate table with expected values after parsing
generate_parse( iv_token = 'K'
iv_offset = 0
iv_length = 6 ).
generate_parse( iv_token = 'K'
iv_offset = 9
iv_length = 4 ).
" Generate table with expected values after ordering
generate_order( iv_token = 'K'
iv_offset = 0
iv_length = 6
iv_text_tag = '' ).
generate_order( iv_token = 'K'
iv_offset = 9
iv_length = 4
iv_text_tag = '' ).
" Generate table with expected values after extending
generate_extend( iv_token = 'K'
iv_offset = 0
iv_length = 6
iv_text_tag = '' ).
generate_extend( iv_token = '.'
iv_offset = 6
iv_length = 3
iv_text_tag = '' ).
generate_extend( iv_token = 'K'
iv_offset = 9
iv_length = 4
iv_text_tag = '' ).
generate_extend( iv_token = '.'
iv_offset = 13
iv_length = 4
iv_text_tag = '' ).
do_test( iv_line = lv_line
iv_filename = '*.abap' ).
ENDMETHOD.
********************************************************
* Test parsing and ordering of key words in structures *
********************************************************
METHOD test_abap_08.
DATA lv_line TYPE string.
lv_line = 'lv_length = <match>-length.'.
" Generate table with expected values after parsing
generate_parse( iv_token = 'K'
iv_offset = 13
iv_length = 5 ).
generate_parse( iv_token = 'K'
iv_offset = 20
iv_length = 6 ).
" Generate table with expected values after extending
generate_extend( iv_token = '.'
iv_offset = 0
iv_length = 27
iv_text_tag = '' ).
do_test( iv_line = lv_line
iv_filename = '*.abap' ).
ENDMETHOD.
ENDCLASS.