260 lines
12 KiB
ABAP
260 lines
12 KiB
ABAP
CLASS {{p}}d02_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
|
|
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|
PRIVATE SECTION.
|
|
METHODS unknown_material_text FOR TESTING.
|
|
METHODS zero_quantity_text FOR TESTING.
|
|
METHODS over_limit_text FOR TESTING.
|
|
METHODS default_text_cases FOR TESTING.
|
|
METHODS context_of_each_case FOR TESTING.
|
|
METHODS unknown_case_keeps_data FOR TESTING.
|
|
METHODS text_via_cx_root FOR TESTING.
|
|
METHODS case_constant_values FOR TESTING.
|
|
METHODS is_static_check_exception FOR TESTING.
|
|
METHODS instances_keep_own_data FOR TESTING.
|
|
METHODS same_data_different_case FOR TESTING.
|
|
METHODS text_exact_length FOR TESTING.
|
|
METHODS caught_error
|
|
IMPORTING iv_case TYPE {{p}}if_issue_error_info=>ty_case
|
|
iv_material TYPE string
|
|
iv_quantity TYPE i
|
|
iv_limit TYPE i
|
|
RETURNING VALUE(ro_error) TYPE REF TO {{p}}cx_issue_error.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}d02_hidden IMPLEMENTATION.
|
|
|
|
METHOD caught_error.
|
|
TRY.
|
|
RAISE EXCEPTION TYPE {{p}}cx_issue_error
|
|
EXPORTING
|
|
iv_case = iv_case
|
|
iv_material = iv_material
|
|
iv_quantity = iv_quantity
|
|
iv_limit = iv_limit.
|
|
CATCH {{p}}cx_issue_error INTO ro_error.
|
|
ENDTRY.
|
|
ENDMETHOD.
|
|
|
|
METHOD unknown_material_text.
|
|
DATA(lo_error) = caught_error( iv_case = {{p}}cx_issue_error=>c_case-unknown_material
|
|
iv_material = 'MAT-1'
|
|
iv_quantity = 5
|
|
iv_limit = 100 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `Material MAT-1 is not known`
|
|
act = lo_error->get_text( ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD zero_quantity_text.
|
|
DATA(lo_error) = caught_error( iv_case = {{p}}cx_issue_error=>c_case-zero_quantity
|
|
iv_material = 'MAT-2'
|
|
iv_quantity = 0
|
|
iv_limit = 50 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `Quantity must not be zero for material MAT-2`
|
|
act = lo_error->get_text( ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD over_limit_text.
|
|
DATA(lo_error) = caught_error( iv_case = {{p}}cx_issue_error=>c_case-over_limit
|
|
iv_material = 'MAT-3'
|
|
iv_quantity = 120
|
|
iv_limit = 100 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `Quantity 120 exceeds limit 100 for material MAT-3`
|
|
act = lo_error->get_text( ) ).
|
|
|
|
DATA(lo_big) = caught_error( iv_case = {{p}}cx_issue_error=>c_case-over_limit
|
|
iv_material = 'M-BIG'
|
|
iv_quantity = 12345
|
|
iv_limit = 67890 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `Quantity 12345 exceeds limit 67890 for material M-BIG`
|
|
act = lo_big->get_text( ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD default_text_cases.
|
|
DATA(lo_other) = caught_error( iv_case = 'SOMETHING_ELSE'
|
|
iv_material = 'MAT-4'
|
|
iv_quantity = 7
|
|
iv_limit = 70 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `Stock issue failed for material MAT-4`
|
|
act = lo_other->get_text( ) ).
|
|
|
|
DATA(lo_empty) = caught_error( iv_case = ''
|
|
iv_material = 'MAT-5'
|
|
iv_quantity = 1
|
|
iv_limit = 10 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `Stock issue failed for material MAT-5`
|
|
act = lo_empty->get_text( ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD context_of_each_case.
|
|
DATA(lo_unknown) = caught_error( iv_case = {{p}}cx_issue_error=>c_case-unknown_material
|
|
iv_material = 'M-1'
|
|
iv_quantity = 11
|
|
iv_limit = 111 ).
|
|
DATA(lo_zero) = caught_error( iv_case = {{p}}cx_issue_error=>c_case-zero_quantity
|
|
iv_material = 'M-2'
|
|
iv_quantity = 0
|
|
iv_limit = 222 ).
|
|
DATA(lo_over) = caught_error( iv_case = {{p}}cx_issue_error=>c_case-over_limit
|
|
iv_material = 'M-3'
|
|
iv_quantity = 33
|
|
iv_limit = 333 ).
|
|
DATA lo_info TYPE REF TO {{p}}if_issue_error_info.
|
|
|
|
lo_info = lo_unknown.
|
|
cl_abap_unit_assert=>assert_equals( exp = {{p}}cx_issue_error=>c_case-unknown_material
|
|
act = lo_info->get_case( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `M-1` act = lo_info->get_material( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 11 act = lo_info->get_quantity( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 111 act = lo_info->get_limit( ) ).
|
|
|
|
lo_info = lo_zero.
|
|
cl_abap_unit_assert=>assert_equals( exp = {{p}}cx_issue_error=>c_case-zero_quantity
|
|
act = lo_info->get_case( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `M-2` act = lo_info->get_material( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lo_info->get_quantity( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 222 act = lo_info->get_limit( ) ).
|
|
|
|
lo_info = lo_over.
|
|
cl_abap_unit_assert=>assert_equals( exp = {{p}}cx_issue_error=>c_case-over_limit
|
|
act = lo_info->get_case( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `M-3` act = lo_info->get_material( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 33 act = lo_info->get_quantity( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 333 act = lo_info->get_limit( ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD unknown_case_keeps_data.
|
|
DATA(lo_error) = caught_error( iv_case = 'SOMETHING_ELSE'
|
|
iv_material = 'M-X'
|
|
iv_quantity = 55
|
|
iv_limit = 66 ).
|
|
DATA lo_info TYPE REF TO {{p}}if_issue_error_info.
|
|
lo_info = lo_error.
|
|
cl_abap_unit_assert=>assert_equals( exp = 'SOMETHING_ELSE' act = lo_info->get_case( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `M-X` act = lo_info->get_material( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 55 act = lo_info->get_quantity( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 66 act = lo_info->get_limit( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `Stock issue failed for material M-X`
|
|
act = lo_error->get_text( ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD text_via_cx_root.
|
|
DATA(lo_error) = caught_error( iv_case = {{p}}cx_issue_error=>c_case-zero_quantity
|
|
iv_material = 'MAT-6'
|
|
iv_quantity = 0
|
|
iv_limit = 60 ).
|
|
DATA lo_root TYPE REF TO cx_root.
|
|
lo_root = lo_error.
|
|
cl_abap_unit_assert=>assert_equals( exp = `Quantity must not be zero for material MAT-6`
|
|
act = lo_root->get_text( ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD case_constant_values.
|
|
cl_abap_unit_assert=>assert_equals( exp = 'UNKNOWN_MATERIAL'
|
|
act = {{p}}cx_issue_error=>c_case-unknown_material ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'ZERO_QUANTITY'
|
|
act = {{p}}cx_issue_error=>c_case-zero_quantity ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'OVER_LIMIT'
|
|
act = {{p}}cx_issue_error=>c_case-over_limit ).
|
|
ENDMETHOD.
|
|
|
|
METHOD is_static_check_exception.
|
|
DATA lo_caught TYPE REF TO cx_static_check.
|
|
TRY.
|
|
RAISE EXCEPTION TYPE {{p}}cx_issue_error
|
|
EXPORTING
|
|
iv_case = {{p}}cx_issue_error=>c_case-unknown_material
|
|
iv_material = 'MAT-7'
|
|
iv_quantity = 3
|
|
iv_limit = 30.
|
|
CATCH cx_static_check INTO lo_caught.
|
|
ENDTRY.
|
|
cl_abap_unit_assert=>assert_bound( act = lo_caught ).
|
|
ENDMETHOD.
|
|
|
|
METHOD instances_keep_own_data.
|
|
DATA(lo_first) = caught_error( iv_case = {{p}}cx_issue_error=>c_case-unknown_material
|
|
iv_material = 'FIRST'
|
|
iv_quantity = 1
|
|
iv_limit = 10 ).
|
|
DATA(lo_second) = caught_error( iv_case = {{p}}cx_issue_error=>c_case-over_limit
|
|
iv_material = 'SECOND'
|
|
iv_quantity = 2
|
|
iv_limit = 20 ).
|
|
DATA lo_info TYPE REF TO {{p}}if_issue_error_info.
|
|
|
|
lo_info = lo_first.
|
|
cl_abap_unit_assert=>assert_equals( exp = `FIRST` act = lo_info->get_material( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `Material FIRST is not known`
|
|
act = lo_first->get_text( ) ).
|
|
|
|
lo_info = lo_second.
|
|
cl_abap_unit_assert=>assert_equals( exp = `SECOND` act = lo_info->get_material( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `Quantity 2 exceeds limit 20 for material SECOND`
|
|
act = lo_second->get_text( ) ).
|
|
|
|
lo_info = lo_first.
|
|
cl_abap_unit_assert=>assert_equals( exp = `FIRST` act = lo_info->get_material( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lo_info->get_quantity( ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD same_data_different_case.
|
|
DATA lv_material TYPE string.
|
|
DATA lv_quantity TYPE i.
|
|
DATA lv_limit TYPE i.
|
|
lv_material = 'MAT-S'.
|
|
lv_quantity = 5.
|
|
lv_limit = 10.
|
|
|
|
DATA(lo_unknown) = caught_error( iv_case = {{p}}cx_issue_error=>c_case-unknown_material
|
|
iv_material = lv_material
|
|
iv_quantity = lv_quantity
|
|
iv_limit = lv_limit ).
|
|
DATA(lo_zero) = caught_error( iv_case = {{p}}cx_issue_error=>c_case-zero_quantity
|
|
iv_material = lv_material
|
|
iv_quantity = lv_quantity
|
|
iv_limit = lv_limit ).
|
|
DATA(lo_over) = caught_error( iv_case = {{p}}cx_issue_error=>c_case-over_limit
|
|
iv_material = lv_material
|
|
iv_quantity = lv_quantity
|
|
iv_limit = lv_limit ).
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = `Material MAT-S is not known`
|
|
act = lo_unknown->get_text( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `Quantity must not be zero for material MAT-S`
|
|
act = lo_zero->get_text( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = `Quantity 5 exceeds limit 10 for material MAT-S`
|
|
act = lo_over->get_text( ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD text_exact_length.
|
|
DATA(lo_unknown) = caught_error( iv_case = {{p}}cx_issue_error=>c_case-unknown_material
|
|
iv_material = 'MAT-1'
|
|
iv_quantity = 5
|
|
iv_limit = 100 ).
|
|
DATA(lo_zero) = caught_error( iv_case = {{p}}cx_issue_error=>c_case-zero_quantity
|
|
iv_material = 'MAT-2'
|
|
iv_quantity = 0
|
|
iv_limit = 50 ).
|
|
DATA(lo_over) = caught_error( iv_case = {{p}}cx_issue_error=>c_case-over_limit
|
|
iv_material = 'MAT-3'
|
|
iv_quantity = 120
|
|
iv_limit = 100 ).
|
|
|
|
DATA lv_unknown TYPE string.
|
|
DATA lv_zero TYPE string.
|
|
DATA lv_over TYPE string.
|
|
lv_unknown = `Material MAT-1 is not known`.
|
|
lv_zero = `Quantity must not be zero for material MAT-2`.
|
|
lv_over = `Quantity 120 exceeds limit 100 for material MAT-3`.
|
|
|
|
cl_abap_unit_assert=>assert_equals( exp = strlen( lv_unknown )
|
|
act = strlen( lo_unknown->get_text( ) ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = strlen( lv_zero )
|
|
act = strlen( lo_zero->get_text( ) ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = strlen( lv_over )
|
|
act = strlen( lo_over->get_text( ) ) ).
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|