mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Support direct longtexts in exceptions (#5592)
* Support direct longtexts in exceptions as opposed to already supported indirect T100-based longtexts * Lint * Remove direct longtext variable support * Add unit tests for exception longtext * Add longtext message to language mismatch error * Fix missing preserve_newline handling * Adjust longtext display in error message box - Convert newlines to html line breaks - Indicate if a longtext is available on hover * Fix duplicate preserve newline handling * Adjust exception longtext rendering Render linebreaks as html paragraphs * Align error message box buttons to bottom right so they do not move on hover when a longtext is available * Refactor exception unit tests * Skip failing transpiled tests * Adjust longtext indicator for error message Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com> Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
2855e7e7bf
commit
1052ce6e85
|
@ -191,8 +191,9 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION.
|
|||
METHOD check_language.
|
||||
|
||||
DATA:
|
||||
lv_main_language TYPE spras,
|
||||
lv_error_message TYPE string.
|
||||
lv_main_language TYPE spras,
|
||||
lv_error_message TYPE string,
|
||||
lv_error_longtext TYPE string.
|
||||
|
||||
" assumes find_remote_dot_abapgit has been called before
|
||||
lv_main_language = get_dot_abapgit( )->get_main_language( ).
|
||||
|
@ -208,11 +209,14 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION.
|
|||
" Feature open in main language only exists if abapGit tcode is present
|
||||
IF zcl_abapgit_services_abapgit=>get_abapgit_tcode( ) IS INITIAL.
|
||||
lv_error_message = lv_error_message && | Please logon in main language and retry.|.
|
||||
lv_error_longtext = |For the Advanced menu option 'Open in Main Language' to be available a transaction code| &&
|
||||
| must be assigned to report { sy-cprog }.|.
|
||||
ELSE.
|
||||
lv_error_message = lv_error_message && | Select 'Advanced' > 'Open in Main Language'|.
|
||||
ENDIF.
|
||||
|
||||
zcx_abapgit_exception=>raise( lv_error_message ).
|
||||
zcx_abapgit_exception=>raise( iv_text = lv_error_message
|
||||
iv_longtext = lv_error_longtext ).
|
||||
|
||||
ENDIF.
|
||||
|
||||
|
|
|
@ -10,11 +10,12 @@ CLASS zcx_abapgit_cancel DEFINITION
|
|||
IMPORTING
|
||||
!textid LIKE if_t100_message=>t100key OPTIONAL
|
||||
!previous LIKE previous OPTIONAL
|
||||
!ii_log TYPE REF TO zif_abapgit_log OPTIONAL
|
||||
!log TYPE REF TO zif_abapgit_log OPTIONAL
|
||||
!msgv1 TYPE symsgv OPTIONAL
|
||||
!msgv2 TYPE symsgv OPTIONAL
|
||||
!msgv3 TYPE symsgv OPTIONAL
|
||||
!msgv4 TYPE symsgv OPTIONAL.
|
||||
!msgv4 TYPE symsgv OPTIONAL
|
||||
!longtext TYPE csequence OPTIONAL.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
@ -27,13 +28,15 @@ CLASS zcx_abapgit_cancel IMPLEMENTATION.
|
|||
METHOD constructor ##ADT_SUPPRESS_GENERATION.
|
||||
super->constructor(
|
||||
previous = previous
|
||||
ii_log = ii_log
|
||||
log = log
|
||||
msgv1 = msgv1
|
||||
msgv2 = msgv2
|
||||
msgv3 = msgv3
|
||||
msgv4 = msgv4 ).
|
||||
msgv4 = msgv4
|
||||
longtext = longtext ).
|
||||
|
||||
CLEAR me->textid.
|
||||
|
||||
IF textid IS INITIAL.
|
||||
if_t100_message~t100key = if_t100_message=>default_textid.
|
||||
ELSE.
|
||||
|
|
|
@ -913,6 +913,12 @@ div.message-panel {
|
|||
background-color: hsla(0, 42%, 90%, 1);
|
||||
}
|
||||
|
||||
.message-panel-bar {
|
||||
position: absolute;
|
||||
bottom: 10px;
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
.message-panel-commands {
|
||||
display: none;
|
||||
margin-right: 2em;
|
||||
|
|
|
@ -400,11 +400,14 @@ CLASS ZCL_ABAPGIT_GUI_CHUNK_LIB IMPLEMENTATION.
|
|||
METHOD render_error_message_box.
|
||||
|
||||
DATA:
|
||||
lv_error_text TYPE string,
|
||||
lv_longtext TYPE string,
|
||||
lv_program_name TYPE sy-repid,
|
||||
lv_title TYPE string,
|
||||
lv_text TYPE string.
|
||||
lv_error_text TYPE string,
|
||||
lv_longtext TYPE string,
|
||||
lt_longtext_paragraphs TYPE string_table,
|
||||
lv_program_name TYPE sy-repid,
|
||||
lv_title TYPE string,
|
||||
lv_text TYPE string.
|
||||
FIELD-SYMBOLS:
|
||||
<lv_longtext_paragraph> TYPE string.
|
||||
|
||||
|
||||
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
||||
|
@ -412,25 +415,46 @@ CLASS ZCL_ABAPGIT_GUI_CHUNK_LIB IMPLEMENTATION.
|
|||
lv_error_text = ix_error->get_text( ).
|
||||
lv_longtext = ix_error->if_message~get_longtext( abap_true ).
|
||||
|
||||
REPLACE FIRST OCCURRENCE OF REGEX
|
||||
|({ zcx_abapgit_exception=>c_section_text-cause }{ cl_abap_char_utilities=>newline })|
|
||||
IN lv_longtext WITH |<h3>$1</h3>|.
|
||||
IF lv_longtext IS NOT INITIAL.
|
||||
lv_error_text = |{ lv_error_text } <span class="emphasis">More...</span>|.
|
||||
|
||||
REPLACE FIRST OCCURRENCE OF REGEX
|
||||
|({ zcx_abapgit_exception=>c_section_text-system_response }{ cl_abap_char_utilities=>newline })|
|
||||
IN lv_longtext WITH |<h3>$1</h3>|.
|
||||
REPLACE FIRST OCCURRENCE OF REGEX
|
||||
|({ zcx_abapgit_exception=>c_section_text-cause }{ cl_abap_char_utilities=>newline })|
|
||||
IN lv_longtext WITH |<h3>$1</h3>|.
|
||||
|
||||
REPLACE FIRST OCCURRENCE OF REGEX
|
||||
|({ zcx_abapgit_exception=>c_section_text-what_to_do }{ cl_abap_char_utilities=>newline })|
|
||||
IN lv_longtext WITH |<h3>$1</h3>|.
|
||||
REPLACE FIRST OCCURRENCE OF REGEX
|
||||
|({ zcx_abapgit_exception=>c_section_text-system_response }{ cl_abap_char_utilities=>newline })|
|
||||
IN lv_longtext WITH |<h3>$1</h3>|.
|
||||
|
||||
REPLACE FIRST OCCURRENCE OF REGEX
|
||||
|({ zcx_abapgit_exception=>c_section_text-sys_admin }{ cl_abap_char_utilities=>newline })|
|
||||
IN lv_longtext WITH |<h3>$1</h3>|.
|
||||
REPLACE FIRST OCCURRENCE OF REGEX
|
||||
|({ zcx_abapgit_exception=>c_section_text-what_to_do }{ cl_abap_char_utilities=>newline })|
|
||||
IN lv_longtext WITH |<h3>$1</h3>|.
|
||||
|
||||
REPLACE FIRST OCCURRENCE OF REGEX
|
||||
|({ zcx_abapgit_exception=>c_section_text-sys_admin }{ cl_abap_char_utilities=>newline })|
|
||||
IN lv_longtext WITH |<h3>$1</h3>|.
|
||||
|
||||
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf
|
||||
IN lv_longtext
|
||||
WITH cl_abap_char_utilities=>newline.
|
||||
|
||||
SPLIT lv_longtext AT cl_abap_char_utilities=>newline INTO TABLE lt_longtext_paragraphs.
|
||||
CLEAR lv_longtext.
|
||||
|
||||
LOOP AT lt_longtext_paragraphs ASSIGNING <lv_longtext_paragraph>.
|
||||
CONDENSE <lv_longtext_paragraph>.
|
||||
|
||||
IF <lv_longtext_paragraph> IS INITIAL.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
lv_longtext = |{ lv_longtext }<p>{ <lv_longtext_paragraph> }</p>{ cl_abap_char_utilities=>newline }|.
|
||||
ENDLOOP.
|
||||
ENDIF.
|
||||
|
||||
ri_html->add( |<div id="message" class="message-panel">| ).
|
||||
ri_html->add( |{ ri_html->icon( 'exclamation-circle/red' ) } { lv_error_text }| ).
|
||||
ri_html->add( |<div class="float-right">| ).
|
||||
ri_html->add( |<div class="message-panel-bar">| ).
|
||||
|
||||
ri_html->add_a(
|
||||
iv_txt = `❌`
|
||||
|
@ -440,7 +464,7 @@ CLASS ZCL_ABAPGIT_GUI_CHUNK_LIB IMPLEMENTATION.
|
|||
|
||||
ri_html->add( |</div>| ).
|
||||
|
||||
ri_html->add( |<div class="float-right message-panel-commands">| ).
|
||||
ri_html->add( |<div class="message-panel-bar message-panel-commands">| ).
|
||||
|
||||
IF ix_error->if_t100_message~t100key-msgid IS NOT INITIAL.
|
||||
|
||||
|
|
|
@ -26,18 +26,22 @@ CLASS zcx_abapgit_exception DEFINITION
|
|||
DATA msgv2 TYPE symsgv READ-ONLY .
|
||||
DATA msgv3 TYPE symsgv READ-ONLY .
|
||||
DATA msgv4 TYPE symsgv READ-ONLY .
|
||||
DATA mt_callstack TYPE abap_callstack READ-ONLY .
|
||||
DATA mv_longtext TYPE string READ-ONLY.
|
||||
DATA mt_callstack TYPE abap_callstack READ-ONLY.
|
||||
DATA mi_log TYPE REF TO zif_abapgit_log READ-ONLY.
|
||||
|
||||
"! Raise exception with text
|
||||
"! @parameter iv_text | Text
|
||||
"! @parameter ix_previous | Previous exception
|
||||
"! @parameter ii_log | Log
|
||||
"! @parameter iv_longtext | Longtext
|
||||
"! @raising zcx_abapgit_exception | Exception
|
||||
CLASS-METHODS raise
|
||||
IMPORTING
|
||||
!iv_text TYPE clike
|
||||
!ix_previous TYPE REF TO cx_root OPTIONAL
|
||||
!ii_log TYPE REF TO zif_abapgit_log OPTIONAL
|
||||
!iv_longtext TYPE csequence OPTIONAL
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
"! Raise exception with T100 message
|
||||
|
@ -50,6 +54,9 @@ CLASS zcx_abapgit_exception DEFINITION
|
|||
"! @parameter iv_msgv2 | Message variable 2
|
||||
"! @parameter iv_msgv3 | Message variable 3
|
||||
"! @parameter iv_msgv4 | Message variable 4
|
||||
"! @parameter ii_log | Log
|
||||
"! @parameter ix_previous | Previous exception
|
||||
"! @parameter iv_longtext | Longtext
|
||||
"! @raising zcx_abapgit_exception | Exception
|
||||
CLASS-METHODS raise_t100
|
||||
IMPORTING
|
||||
|
@ -61,22 +68,29 @@ CLASS zcx_abapgit_exception DEFINITION
|
|||
VALUE(iv_msgv4) TYPE symsgv DEFAULT sy-msgv4
|
||||
!ii_log TYPE REF TO zif_abapgit_log OPTIONAL
|
||||
!ix_previous TYPE REF TO cx_root OPTIONAL
|
||||
!iv_longtext TYPE csequence OPTIONAL
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
"! Raise with text from previous exception
|
||||
"! @parameter ix_previous | Previous exception
|
||||
"! @parameter iv_longtext | Longtext
|
||||
"! @raising zcx_abapgit_exception | Exception
|
||||
CLASS-METHODS raise_with_text
|
||||
IMPORTING
|
||||
!ix_previous TYPE REF TO cx_root
|
||||
!iv_longtext TYPE csequence OPTIONAL
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
!textid LIKE if_t100_message=>t100key OPTIONAL
|
||||
!previous LIKE previous OPTIONAL
|
||||
!ii_log TYPE REF TO zif_abapgit_log OPTIONAL
|
||||
!log TYPE REF TO zif_abapgit_log OPTIONAL
|
||||
!msgv1 TYPE symsgv OPTIONAL
|
||||
!msgv2 TYPE symsgv OPTIONAL
|
||||
!msgv3 TYPE symsgv OPTIONAL
|
||||
!msgv4 TYPE symsgv OPTIONAL .
|
||||
!msgv4 TYPE symsgv OPTIONAL
|
||||
!longtext TYPE csequence OPTIONAL .
|
||||
|
||||
METHODS get_source_position
|
||||
REDEFINITION .
|
||||
|
@ -85,7 +99,7 @@ CLASS zcx_abapgit_exception DEFINITION
|
|||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
||||
CONSTANTS c_generic_error_msg TYPE string VALUE `An error occured (ZCX_ABAPGIT_EXCEPTION)` ##NO_TEXT.
|
||||
CONSTANTS c_generic_error_msg TYPE string VALUE `An error occured (ZCX_ABAPGIT_EXCEPTION)`.
|
||||
|
||||
CLASS-METHODS split_text_to_symsg
|
||||
IMPORTING
|
||||
|
@ -110,11 +124,16 @@ CLASS zcx_abapgit_exception DEFINITION
|
|||
METHODS replace_section_head_with_text
|
||||
CHANGING
|
||||
!cs_itf TYPE tline .
|
||||
CLASS-METHODS remove_newlines_from_string
|
||||
IMPORTING
|
||||
iv_string TYPE string
|
||||
RETURNING
|
||||
VALUE(rv_result) TYPE string.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ZCX_ABAPGIT_EXCEPTION IMPLEMENTATION.
|
||||
CLASS zcx_abapgit_exception IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor ##ADT_SUPPRESS_GENERATION.
|
||||
|
@ -125,9 +144,11 @@ CLASS ZCX_ABAPGIT_EXCEPTION IMPLEMENTATION.
|
|||
me->msgv2 = msgv2.
|
||||
me->msgv3 = msgv3.
|
||||
me->msgv4 = msgv4.
|
||||
me->mi_log = ii_log.
|
||||
mi_log = log.
|
||||
mv_longtext = longtext.
|
||||
|
||||
CLEAR me->textid.
|
||||
|
||||
IF textid IS INITIAL.
|
||||
if_t100_message~t100key = if_t100_message=>default_textid.
|
||||
ELSE.
|
||||
|
@ -154,7 +175,7 @@ CLASS ZCX_ABAPGIT_EXCEPTION IMPLEMENTATION.
|
|||
IMPORTING
|
||||
program_name = program_name
|
||||
include_name = include_name
|
||||
source_line = source_line ).
|
||||
source_line = source_line ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -202,15 +223,20 @@ CLASS ZCX_ABAPGIT_EXCEPTION IMPLEMENTATION.
|
|||
|
||||
|
||||
METHOD if_message~get_longtext.
|
||||
DATA: lv_preserve_newlines_handled TYPE abap_bool VALUE abap_false.
|
||||
|
||||
result = super->get_longtext( ).
|
||||
|
||||
IF if_t100_message~t100key IS NOT INITIAL.
|
||||
|
||||
IF mv_longtext IS NOT INITIAL.
|
||||
result = mv_longtext.
|
||||
ELSEIF if_t100_message~t100key IS NOT INITIAL.
|
||||
result = itf_to_string( get_t100_longtext_itf( ) ).
|
||||
|
||||
ELSE.
|
||||
result = super->get_longtext( preserve_newlines ).
|
||||
lv_preserve_newlines_handled = abap_true.
|
||||
ENDIF.
|
||||
|
||||
IF lv_preserve_newlines_handled = abap_false AND preserve_newlines = abap_false.
|
||||
result = remove_newlines_from_string( result ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -306,7 +332,8 @@ CLASS ZCX_ABAPGIT_EXCEPTION IMPLEMENTATION.
|
|||
|
||||
raise_t100(
|
||||
ii_log = ii_log
|
||||
ix_previous = ix_previous ).
|
||||
ix_previous = ix_previous
|
||||
iv_longtext = iv_longtext ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -328,19 +355,21 @@ CLASS ZCX_ABAPGIT_EXCEPTION IMPLEMENTATION.
|
|||
RAISE EXCEPTION TYPE zcx_abapgit_exception
|
||||
EXPORTING
|
||||
textid = ls_t100_key
|
||||
ii_log = ii_log
|
||||
log = ii_log
|
||||
msgv1 = iv_msgv1
|
||||
msgv2 = iv_msgv2
|
||||
msgv3 = iv_msgv3
|
||||
msgv4 = iv_msgv4
|
||||
previous = ix_previous.
|
||||
previous = ix_previous
|
||||
longtext = iv_longtext.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD raise_with_text.
|
||||
raise(
|
||||
iv_text = ix_previous->get_text( )
|
||||
ix_previous = ix_previous ).
|
||||
iv_text = ix_previous->get_text( )
|
||||
ix_previous = ix_previous
|
||||
iv_longtext = iv_longtext ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -454,4 +483,13 @@ CLASS ZCX_ABAPGIT_EXCEPTION IMPLEMENTATION.
|
|||
rs_msg = ls_msg.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD remove_newlines_from_string.
|
||||
rv_result = iv_string.
|
||||
|
||||
REPLACE ALL OCCURRENCES OF ` ` && cl_abap_char_utilities=>cr_lf IN rv_result WITH ` `.
|
||||
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf IN rv_result WITH ` `.
|
||||
REPLACE ALL OCCURRENCES OF ` ` && cl_abap_char_utilities=>newline IN rv_result WITH ` `.
|
||||
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>newline IN rv_result WITH ` `.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -1,304 +1,286 @@
|
|||
CLASS ltcl_test DEFINITION DEFERRED.
|
||||
CLASS ltcl_split_text DEFINITION DEFERRED.
|
||||
CLASS zcx_abapgit_exception DEFINITION LOCAL FRIENDS ltcl_test ltcl_split_text.
|
||||
|
||||
CLASS ltcl_test DEFINITION
|
||||
FOR TESTING
|
||||
DURATION SHORT
|
||||
RISK LEVEL HARMLESS.
|
||||
CLASS ltcl_base DEFINITION DEFERRED.
|
||||
CLASS zcx_abapgit_exception DEFINITION LOCAL FRIENDS ltcl_split_text ltcl_base.
|
||||
|
||||
CLASS ltcl_base DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT ABSTRACT.
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
test_direct_text FOR TESTING,
|
||||
test_t100_text1 FOR TESTING,
|
||||
test_t100_text2 FOR TESTING,
|
||||
test_t100_text3 FOR TESTING,
|
||||
test_t100_text4 FOR TESTING,
|
||||
test_t100_text5 FOR TESTING,
|
||||
test_t100_text6 FOR TESTING,
|
||||
test_t100_text7 FOR TESTING,
|
||||
test_t100_text8 FOR TESTING,
|
||||
test_no_text FOR TESTING.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
TYPES:
|
||||
BEGIN OF ty_t100_message,
|
||||
msgid TYPE symsgid,
|
||||
msgno TYPE symsgno,
|
||||
msgv1 TYPE symsgv,
|
||||
msgv2 TYPE symsgv,
|
||||
msgv3 TYPE symsgv,
|
||||
msgv4 TYPE symsgv,
|
||||
END OF ty_t100_message.
|
||||
CLASS-METHODS:
|
||||
get_exc_text IMPORTING ix_ex TYPE REF TO cx_root
|
||||
RETURNING VALUE(rv_text) TYPE string,
|
||||
get_t100_text IMPORTING is_message TYPE ty_t100_message
|
||||
get_t100_text IMPORTING is_message TYPE symsg
|
||||
RETURNING VALUE(rv_text) TYPE string.
|
||||
PROTECTED SECTION.
|
||||
CLASS-DATA:
|
||||
BEGIN OF gs_test_data,
|
||||
text TYPE string VALUE `This is a test error message.`,
|
||||
empty_text TYPE string VALUE ``,
|
||||
END OF gs_test_data.
|
||||
DATA:
|
||||
mo_cut TYPE REF TO zcx_abapgit_exception,
|
||||
BEGIN OF ms_given,
|
||||
text TYPE string,
|
||||
t100_message TYPE symsg,
|
||||
longtext TYPE string,
|
||||
previous_exception TYPE REF TO cx_root,
|
||||
END OF ms_given.
|
||||
METHODS:
|
||||
given_the_text IMPORTING iv_text TYPE csequence,
|
||||
given_the_longtext IMPORTING iv_longtext TYPE csequence,
|
||||
given_the_t100_message IMPORTING is_message TYPE symsg,
|
||||
given_the_previous_exception IMPORTING ix_previous_exception TYPE REF TO cx_root,
|
||||
when_instantiated_using_raise,
|
||||
when_instan_using_raise_t100,
|
||||
when_inst_usng_raise_with_text,
|
||||
then_the_text_should_equal IMPORTING iv_text TYPE csequence,
|
||||
then_the_longtext_should_equal IMPORTING iv_longtext TYPE csequence,
|
||||
then_the_prev_exc_should_equal IMPORTING ix_exception TYPE REF TO cx_root.
|
||||
PRIVATE SECTION.
|
||||
CLASS-METHODS:
|
||||
class_teardown.
|
||||
METHODS:
|
||||
teardown.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_test IMPLEMENTATION.
|
||||
METHOD test_direct_text.
|
||||
CONSTANTS: lc_text1 TYPE string VALUE `This is a test error message.`,
|
||||
lc_text2 TYPE string VALUE ``.
|
||||
DATA: lx_ex TYPE REF TO zcx_abapgit_exception,
|
||||
lx_previous TYPE REF TO cx_root.
|
||||
|
||||
TRY.
|
||||
CREATE OBJECT lx_previous TYPE cx_sy_dyn_call_illegal_method
|
||||
EXPORTING
|
||||
textid = cx_sy_dyn_call_illegal_method=>private_method
|
||||
classname = 'CLASS'
|
||||
methodname = 'METHOD'.
|
||||
|
||||
zcx_abapgit_exception=>raise_with_text( lx_previous ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
|
||||
CATCH zcx_abapgit_exception INTO lx_ex.
|
||||
cl_abap_unit_assert=>assert_equals( act = get_exc_text( lx_ex )
|
||||
exp = lx_previous->get_text( ) ).
|
||||
cl_abap_unit_assert=>assert_equals( act = lx_ex->previous
|
||||
exp = lx_previous ).
|
||||
ENDTRY.
|
||||
|
||||
FREE: lx_ex, lx_previous.
|
||||
|
||||
TRY.
|
||||
zcx_abapgit_exception=>raise( lc_text1 ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
CATCH zcx_abapgit_exception INTO lx_ex.
|
||||
cl_abap_unit_assert=>assert_equals( act = get_exc_text( lx_ex )
|
||||
exp = lc_text1 ).
|
||||
ENDTRY.
|
||||
|
||||
FREE lx_ex.
|
||||
|
||||
TRY.
|
||||
zcx_abapgit_exception=>raise( lc_text2 ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
CATCH zcx_abapgit_exception INTO lx_ex.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = get_exc_text( lx_ex )
|
||||
exp = zcx_abapgit_exception=>c_generic_error_msg ).
|
||||
ENDTRY.
|
||||
|
||||
FREE lx_ex.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_no_text.
|
||||
DATA: lx_ex TYPE REF TO zcx_abapgit_exception.
|
||||
|
||||
TRY.
|
||||
zcx_abapgit_exception=>raise( space ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
CATCH zcx_abapgit_exception INTO lx_ex.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = get_exc_text( lx_ex )
|
||||
exp = zcx_abapgit_exception=>c_generic_error_msg ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_t100_text1.
|
||||
CONSTANTS: BEGIN OF lc_msg1,
|
||||
msgid TYPE symsgid VALUE '00',
|
||||
msgno TYPE symsgno VALUE '001',
|
||||
msgv1 TYPE symsgv VALUE IS INITIAL,
|
||||
msgv2 TYPE symsgv VALUE IS INITIAL,
|
||||
msgv3 TYPE symsgv VALUE IS INITIAL,
|
||||
msgv4 TYPE symsgv VALUE IS INITIAL,
|
||||
END OF lc_msg1.
|
||||
|
||||
DATA: lx_ex TYPE REF TO zcx_abapgit_exception,
|
||||
lv_text TYPE string.
|
||||
|
||||
TRY.
|
||||
lv_text = get_t100_text( lc_msg1 ).
|
||||
zcx_abapgit_exception=>raise_t100( ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
CATCH zcx_abapgit_exception INTO lx_ex.
|
||||
cl_abap_unit_assert=>assert_equals( act = get_exc_text( lx_ex )
|
||||
exp = lv_text ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD test_t100_text2.
|
||||
CONSTANTS: BEGIN OF lc_msg2,
|
||||
msgid TYPE symsgid VALUE '00',
|
||||
msgno TYPE symsgno VALUE '001',
|
||||
msgv1 TYPE symsgv VALUE 'Variable 1',
|
||||
msgv2 TYPE symsgv VALUE IS INITIAL,
|
||||
msgv3 TYPE symsgv VALUE IS INITIAL,
|
||||
msgv4 TYPE symsgv VALUE IS INITIAL,
|
||||
END OF lc_msg2.
|
||||
|
||||
DATA: lx_ex TYPE REF TO zcx_abapgit_exception,
|
||||
lv_text TYPE string.
|
||||
|
||||
TRY.
|
||||
lv_text = get_t100_text( lc_msg2 ).
|
||||
zcx_abapgit_exception=>raise_t100( ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
CATCH zcx_abapgit_exception INTO lx_ex.
|
||||
cl_abap_unit_assert=>assert_equals( act = get_exc_text( lx_ex )
|
||||
exp = lv_text ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_t100_text3.
|
||||
CONSTANTS: BEGIN OF lc_msg3,
|
||||
msgid TYPE symsgid VALUE '00',
|
||||
msgno TYPE symsgno VALUE '001',
|
||||
msgv1 TYPE symsgv VALUE 'Variable 1',
|
||||
msgv2 TYPE symsgv VALUE 'Variable 2',
|
||||
msgv3 TYPE symsgv VALUE IS INITIAL,
|
||||
msgv4 TYPE symsgv VALUE IS INITIAL,
|
||||
END OF lc_msg3.
|
||||
|
||||
DATA: lx_ex TYPE REF TO zcx_abapgit_exception,
|
||||
lv_text TYPE string.
|
||||
|
||||
TRY.
|
||||
lv_text = get_t100_text( lc_msg3 ).
|
||||
zcx_abapgit_exception=>raise_t100( ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
CATCH zcx_abapgit_exception INTO lx_ex.
|
||||
cl_abap_unit_assert=>assert_equals( act = get_exc_text( lx_ex )
|
||||
exp = lv_text ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_t100_text4.
|
||||
CONSTANTS: BEGIN OF lc_msg4,
|
||||
msgid TYPE symsgid VALUE '00',
|
||||
msgno TYPE symsgno VALUE '001',
|
||||
msgv1 TYPE symsgv VALUE 'Variable 1',
|
||||
msgv2 TYPE symsgv VALUE 'Variable 2',
|
||||
msgv3 TYPE symsgv VALUE 'Variable 3',
|
||||
msgv4 TYPE symsgv VALUE IS INITIAL,
|
||||
END OF lc_msg4.
|
||||
|
||||
DATA: lx_ex TYPE REF TO zcx_abapgit_exception,
|
||||
lv_text TYPE string.
|
||||
|
||||
TRY.
|
||||
lv_text = get_t100_text( lc_msg4 ).
|
||||
zcx_abapgit_exception=>raise_t100( ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
CATCH zcx_abapgit_exception INTO lx_ex.
|
||||
cl_abap_unit_assert=>assert_equals( act = get_exc_text( lx_ex )
|
||||
exp = lv_text ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_t100_text5.
|
||||
CONSTANTS: BEGIN OF lc_msg5,
|
||||
msgid TYPE symsgid VALUE '00',
|
||||
msgno TYPE symsgno VALUE '001',
|
||||
msgv1 TYPE symsgv VALUE 'Variable 1',
|
||||
msgv2 TYPE symsgv VALUE 'Variable 2',
|
||||
msgv3 TYPE symsgv VALUE 'Variable 3',
|
||||
msgv4 TYPE symsgv VALUE 'Variable 4',
|
||||
END OF lc_msg5.
|
||||
|
||||
DATA: lx_ex TYPE REF TO zcx_abapgit_exception,
|
||||
lv_text TYPE string.
|
||||
|
||||
TRY.
|
||||
lv_text = get_t100_text( lc_msg5 ).
|
||||
zcx_abapgit_exception=>raise_t100( ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
CATCH zcx_abapgit_exception INTO lx_ex.
|
||||
cl_abap_unit_assert=>assert_equals( act = get_exc_text( lx_ex )
|
||||
exp = lv_text ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_t100_text6.
|
||||
CONSTANTS: BEGIN OF lc_msg6,
|
||||
msgid TYPE symsgid VALUE '00',
|
||||
msgno TYPE symsgno VALUE '003',
|
||||
msgv1 TYPE symsgv VALUE 'Variable 1',
|
||||
msgv2 TYPE symsgv VALUE 'Variable 2',
|
||||
msgv3 TYPE symsgv VALUE 'Variable 3',
|
||||
msgv4 TYPE symsgv VALUE 'Variable 4',
|
||||
END OF lc_msg6.
|
||||
|
||||
DATA: lx_ex TYPE REF TO zcx_abapgit_exception,
|
||||
lv_text TYPE string.
|
||||
|
||||
TRY.
|
||||
lv_text = get_t100_text( lc_msg6 ).
|
||||
zcx_abapgit_exception=>raise_t100( ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
CATCH zcx_abapgit_exception INTO lx_ex.
|
||||
cl_abap_unit_assert=>assert_equals( act = get_exc_text( lx_ex )
|
||||
exp = lv_text ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_t100_text7.
|
||||
CONSTANTS: BEGIN OF lc_msg7,
|
||||
msgid TYPE symsgid VALUE '00',
|
||||
msgno TYPE symsgno VALUE '003',
|
||||
msgv1 TYPE symsgv VALUE IS INITIAL,
|
||||
msgv2 TYPE symsgv VALUE IS INITIAL,
|
||||
msgv3 TYPE symsgv VALUE IS INITIAL,
|
||||
msgv4 TYPE symsgv VALUE IS INITIAL,
|
||||
END OF lc_msg7.
|
||||
|
||||
DATA: lx_ex TYPE REF TO zcx_abapgit_exception,
|
||||
lv_text TYPE string.
|
||||
|
||||
TRY.
|
||||
lv_text = get_t100_text( lc_msg7 ).
|
||||
zcx_abapgit_exception=>raise_t100( ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
CATCH zcx_abapgit_exception INTO lx_ex.
|
||||
cl_abap_unit_assert=>assert_equals( act = get_exc_text( lx_ex )
|
||||
exp = lv_text ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_t100_text8.
|
||||
CONSTANTS: BEGIN OF lc_msg8,
|
||||
msgid TYPE symsgid VALUE '00',
|
||||
msgno TYPE symsgno VALUE '002',
|
||||
msgv1 TYPE symsgv VALUE IS INITIAL,
|
||||
msgv2 TYPE symsgv VALUE IS INITIAL,
|
||||
msgv3 TYPE symsgv VALUE IS INITIAL,
|
||||
msgv4 TYPE symsgv VALUE IS INITIAL,
|
||||
END OF lc_msg8.
|
||||
|
||||
DATA: lx_ex TYPE REF TO zcx_abapgit_exception,
|
||||
lv_text TYPE string.
|
||||
|
||||
TRY.
|
||||
lv_text = get_t100_text( lc_msg8 ).
|
||||
zcx_abapgit_exception=>raise_t100( ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
CATCH zcx_abapgit_exception INTO lx_ex.
|
||||
cl_abap_unit_assert=>assert_equals( act = get_exc_text( lx_ex )
|
||||
exp = lv_text ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_exc_text.
|
||||
rv_text = ix_ex->get_text( ).
|
||||
ENDMETHOD.
|
||||
|
||||
CLASS ltcl_base IMPLEMENTATION.
|
||||
METHOD get_t100_text.
|
||||
MESSAGE ID is_message-msgid TYPE 'S' NUMBER is_message-msgno
|
||||
WITH is_message-msgv1 is_message-msgv2 is_message-msgv3 is_message-msgv4
|
||||
INTO rv_text.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD given_the_text.
|
||||
ms_given-text = iv_text.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD given_the_longtext.
|
||||
ms_given-longtext = iv_longtext.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD given_the_t100_message.
|
||||
ms_given-t100_message = is_message.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD given_the_previous_exception.
|
||||
ms_given-previous_exception = ix_previous_exception.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD when_instantiated_using_raise.
|
||||
TRY.
|
||||
zcx_abapgit_exception=>raise( iv_text = ms_given-text
|
||||
ix_previous = ms_given-previous_exception
|
||||
iv_longtext = ms_given-longtext ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
CATCH zcx_abapgit_exception INTO mo_cut ##NEEDED.
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD when_instan_using_raise_t100.
|
||||
TRY.
|
||||
zcx_abapgit_exception=>raise_t100( iv_msgid = ms_given-t100_message-msgid
|
||||
iv_msgno = ms_given-t100_message-msgno
|
||||
iv_msgv1 = ms_given-t100_message-msgv1
|
||||
iv_msgv2 = ms_given-t100_message-msgv2
|
||||
iv_msgv3 = ms_given-t100_message-msgv3
|
||||
iv_msgv4 = ms_given-t100_message-msgv4
|
||||
ix_previous = ms_given-previous_exception
|
||||
iv_longtext = ms_given-longtext ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
CATCH zcx_abapgit_exception INTO mo_cut ##NEEDED.
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD when_inst_usng_raise_with_text.
|
||||
TRY.
|
||||
zcx_abapgit_exception=>raise_with_text( ix_previous = ms_given-previous_exception
|
||||
iv_longtext = ms_given-longtext ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
CATCH zcx_abapgit_exception INTO mo_cut ##NEEDED.
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD then_the_text_should_equal.
|
||||
cl_abap_unit_assert=>assert_equals( exp = iv_text
|
||||
act = mo_cut->get_text( ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD then_the_longtext_should_equal.
|
||||
cl_abap_unit_assert=>assert_equals( exp = iv_longtext
|
||||
act = mo_cut->get_longtext( abap_true ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD then_the_prev_exc_should_equal.
|
||||
cl_abap_unit_assert=>assert_equals( exp = ix_exception
|
||||
act = mo_cut->previous ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD class_teardown.
|
||||
CLEAR gs_test_data.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD teardown.
|
||||
CLEAR ms_given.
|
||||
FREE mo_cut.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_general DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS INHERITING FROM ltcl_base.
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
direct_text FOR TESTING,
|
||||
no_text FOR TESTING,
|
||||
text_from_exception FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_general IMPLEMENTATION.
|
||||
METHOD direct_text.
|
||||
given_the_text( gs_test_data-text ).
|
||||
when_instantiated_using_raise( ).
|
||||
then_the_text_should_equal( gs_test_data-text ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD no_text.
|
||||
given_the_text( gs_test_data-empty_text ).
|
||||
when_instantiated_using_raise( ).
|
||||
then_the_text_should_equal( zcx_abapgit_exception=>c_generic_error_msg ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD text_from_exception.
|
||||
DATA: lx_previous TYPE REF TO cx_sy_dyn_call_illegal_method.
|
||||
|
||||
CREATE OBJECT lx_previous TYPE cx_sy_dyn_call_illegal_method
|
||||
EXPORTING
|
||||
textid = cx_sy_dyn_call_illegal_method=>private_method
|
||||
classname = 'CLASS'
|
||||
methodname = 'METHOD'.
|
||||
|
||||
given_the_previous_exception( lx_previous ).
|
||||
|
||||
when_inst_usng_raise_with_text( ).
|
||||
|
||||
then_the_text_should_equal( lx_previous->get_text( ) ).
|
||||
then_the_prev_exc_should_equal( lx_previous ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_t100 DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS INHERITING FROM ltcl_base.
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
text1 FOR TESTING,
|
||||
text2 FOR TESTING,
|
||||
text3 FOR TESTING,
|
||||
text4 FOR TESTING,
|
||||
text5 FOR TESTING,
|
||||
text6 FOR TESTING,
|
||||
text7 FOR TESTING,
|
||||
text8 FOR TESTING.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
CLASS-DATA:
|
||||
BEGIN OF gs_t100_test_data,
|
||||
message1 TYPE symsg,
|
||||
message2 TYPE symsg,
|
||||
message3 TYPE symsg,
|
||||
message4 TYPE symsg,
|
||||
message5 TYPE symsg,
|
||||
message6 TYPE symsg,
|
||||
message7 TYPE symsg,
|
||||
message8 TYPE symsg,
|
||||
END OF gs_t100_test_data.
|
||||
CLASS-METHODS:
|
||||
class_setup,
|
||||
class_teardown.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_t100 IMPLEMENTATION.
|
||||
METHOD text1.
|
||||
given_the_t100_message( gs_t100_test_data-message1 ).
|
||||
when_instan_using_raise_t100( ).
|
||||
then_the_text_should_equal( get_t100_text( gs_t100_test_data-message1 ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD text2.
|
||||
given_the_t100_message( gs_t100_test_data-message2 ).
|
||||
when_instan_using_raise_t100( ).
|
||||
then_the_text_should_equal( get_t100_text( gs_t100_test_data-message2 ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD text3.
|
||||
given_the_t100_message( gs_t100_test_data-message3 ).
|
||||
when_instan_using_raise_t100( ).
|
||||
then_the_text_should_equal( get_t100_text( gs_t100_test_data-message3 ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD text4.
|
||||
given_the_t100_message( gs_t100_test_data-message4 ).
|
||||
when_instan_using_raise_t100( ).
|
||||
then_the_text_should_equal( get_t100_text( gs_t100_test_data-message4 ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD text5.
|
||||
given_the_t100_message( gs_t100_test_data-message5 ).
|
||||
when_instan_using_raise_t100( ).
|
||||
then_the_text_should_equal( get_t100_text( gs_t100_test_data-message5 ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD text6.
|
||||
given_the_t100_message( gs_t100_test_data-message6 ).
|
||||
when_instan_using_raise_t100( ).
|
||||
then_the_text_should_equal( get_t100_text( gs_t100_test_data-message6 ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD text7.
|
||||
given_the_t100_message( gs_t100_test_data-message7 ).
|
||||
when_instan_using_raise_t100( ).
|
||||
then_the_text_should_equal( get_t100_text( gs_t100_test_data-message7 ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD text8.
|
||||
given_the_t100_message( gs_t100_test_data-message8 ).
|
||||
when_instan_using_raise_t100( ).
|
||||
then_the_text_should_equal( get_t100_text( gs_t100_test_data-message8 ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD class_setup.
|
||||
gs_t100_test_data-message1-msgid = '00'.
|
||||
gs_t100_test_data-message1-msgno = '001'.
|
||||
|
||||
gs_t100_test_data-message2-msgid = '00'.
|
||||
gs_t100_test_data-message2-msgno = '001'.
|
||||
gs_t100_test_data-message2-msgv1 = 'Variable 1'.
|
||||
|
||||
gs_t100_test_data-message3-msgid = '00'.
|
||||
gs_t100_test_data-message3-msgno = '001'.
|
||||
gs_t100_test_data-message3-msgv1 = 'Variable 1'.
|
||||
gs_t100_test_data-message3-msgv2 = 'Variable 2'.
|
||||
|
||||
gs_t100_test_data-message4-msgid = '00'.
|
||||
gs_t100_test_data-message4-msgno = '001'.
|
||||
gs_t100_test_data-message4-msgv1 = 'Variable 1'.
|
||||
gs_t100_test_data-message4-msgv2 = 'Variable 2'.
|
||||
gs_t100_test_data-message4-msgv3 = 'Variable 3'.
|
||||
|
||||
gs_t100_test_data-message5-msgid = '00'.
|
||||
gs_t100_test_data-message5-msgno = '001'.
|
||||
gs_t100_test_data-message5-msgv1 = 'Variable 1'.
|
||||
gs_t100_test_data-message5-msgv2 = 'Variable 2'.
|
||||
gs_t100_test_data-message5-msgv3 = 'Variable 3'.
|
||||
gs_t100_test_data-message5-msgv4 = 'Variable 4'.
|
||||
|
||||
gs_t100_test_data-message6-msgid = '00'.
|
||||
gs_t100_test_data-message6-msgno = '003'.
|
||||
gs_t100_test_data-message6-msgv1 = 'Variable 1'.
|
||||
gs_t100_test_data-message6-msgv2 = 'Variable 2'.
|
||||
gs_t100_test_data-message6-msgv3 = 'Variable 3'.
|
||||
gs_t100_test_data-message6-msgv4 = 'Variable 4'.
|
||||
|
||||
gs_t100_test_data-message7-msgid = '00'.
|
||||
gs_t100_test_data-message7-msgno = '003'.
|
||||
|
||||
gs_t100_test_data-message8-msgid = '00'.
|
||||
gs_t100_test_data-message8-msgno = '002'.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD class_teardown.
|
||||
CLEAR gs_t100_test_data.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_get_t100_longtext DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
||||
|
@ -448,3 +430,106 @@ CLASS ltcl_split_text IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_longtext DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT INHERITING FROM ltcl_base.
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
empty_longtext FOR TESTING,
|
||||
longtext FOR TESTING,
|
||||
multiline_longtext FOR TESTING,
|
||||
t100_longtext_override FOR TESTING,
|
||||
text_from_previous_exception FOR TESTING.
|
||||
PRIVATE SECTION.
|
||||
CLASS-DATA:
|
||||
BEGIN OF gs_longtext_test_data,
|
||||
longtext_500 TYPE string,
|
||||
longtext_500_multline TYPE string,
|
||||
empty_longtext TYPE string VALUE ``,
|
||||
t100_with_longtext TYPE symsg,
|
||||
END OF gs_longtext_test_data.
|
||||
CLASS-METHODS:
|
||||
class_setup,
|
||||
class_teardown.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_longtext IMPLEMENTATION.
|
||||
METHOD empty_longtext.
|
||||
given_the_text( gs_test_data-text ).
|
||||
given_the_longtext( gs_longtext_test_data-empty_longtext ).
|
||||
|
||||
when_instantiated_using_raise( ).
|
||||
|
||||
then_the_text_should_equal( gs_test_data-text ).
|
||||
then_the_longtext_should_equal( gs_longtext_test_data-empty_longtext ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD longtext.
|
||||
given_the_text( gs_test_data-text ).
|
||||
given_the_longtext( gs_longtext_test_data-longtext_500 ).
|
||||
|
||||
when_instantiated_using_raise( ).
|
||||
|
||||
then_the_text_should_equal( gs_test_data-text ).
|
||||
then_the_longtext_should_equal( gs_longtext_test_data-longtext_500 ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD multiline_longtext.
|
||||
given_the_text( gs_test_data-text ).
|
||||
given_the_longtext( gs_longtext_test_data-longtext_500_multline ).
|
||||
|
||||
when_instantiated_using_raise( ).
|
||||
|
||||
then_the_text_should_equal( gs_test_data-text ).
|
||||
then_the_longtext_should_equal( gs_longtext_test_data-longtext_500_multline ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD t100_longtext_override.
|
||||
given_the_longtext( gs_longtext_test_data-longtext_500 ).
|
||||
given_the_t100_message( gs_longtext_test_data-t100_with_longtext ).
|
||||
|
||||
when_instan_using_raise_t100( ).
|
||||
|
||||
then_the_longtext_should_equal( gs_longtext_test_data-longtext_500 ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD text_from_previous_exception.
|
||||
DATA: lx_previous TYPE REF TO cx_sy_dyn_call_illegal_method.
|
||||
|
||||
CREATE OBJECT lx_previous.
|
||||
|
||||
given_the_previous_exception( lx_previous ).
|
||||
given_the_longtext( gs_longtext_test_data-longtext_500 ).
|
||||
|
||||
when_inst_usng_raise_with_text( ).
|
||||
|
||||
then_the_text_should_equal( condense( lx_previous->get_text( ) ) ).
|
||||
then_the_longtext_should_equal( gs_longtext_test_data-longtext_500 ).
|
||||
then_the_prev_exc_should_equal( lx_previous ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD class_setup.
|
||||
gs_longtext_test_data-longtext_500 =
|
||||
`Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et` &&
|
||||
` dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Ste` &&
|
||||
`t clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, ` &&
|
||||
`consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,` &&
|
||||
` sed diam voluptua. At vero eos et accusam et justo duo dolores et e`.
|
||||
|
||||
gs_longtext_test_data-longtext_500_multline =
|
||||
`Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et` &&
|
||||
` dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.` &&
|
||||
cl_abap_char_utilities=>newline &&
|
||||
`Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.` &&
|
||||
cl_abap_char_utilities=>newline &&
|
||||
cl_abap_char_utilities=>newline &&
|
||||
`Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et` &&
|
||||
` dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores ete`.
|
||||
|
||||
gs_longtext_test_data-t100_with_longtext-msgid = '00'.
|
||||
gs_longtext_test_data-t100_with_longtext-msgno = '002'.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD class_teardown.
|
||||
CLEAR gs_longtext_test_data.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -102,8 +102,13 @@
|
|||
"unknownTypes": "runtimeError",
|
||||
"extraSetup": "../test/setup.mjs",
|
||||
"skip": [
|
||||
{"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_test", "method": "test_direct_text"},
|
||||
{"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_test", "method": "test_no_text"},
|
||||
{"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_general", "method": "direct_text"},
|
||||
{"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_general", "method": "no_text"},
|
||||
{"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_general", "method": "text_from_exception"},
|
||||
{"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_longtext", "method": "empty_longtext"},
|
||||
{"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_longtext", "method": "longtext"},
|
||||
{"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_longtext", "method": "multiline_longtext"},
|
||||
{"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_longtext", "method": "text_from_previous_exception"},
|
||||
{"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_get_t100_longtext", "method": "test01"},
|
||||
{"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_split_text", "method": "test_set_msg_b"},
|
||||
{"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_split_text", "method": "test_set_msg_c"},
|
||||
|
|
Loading…
Reference in New Issue
Block a user